104 lines
7.5 KiB
Bash
104 lines
7.5 KiB
Bash
# ───────────────────────────────────────────────────────────────────────────
|
|
# General tmux Settings
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Enable 256 color support for tmux
|
|
set-option -sa terminal-overrides ",xterm-256color*:Tc"
|
|
|
|
# Enable mouse support (for scrolling, resizing, etc.)
|
|
set -g mouse on
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Key Bindings
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Set the prefix key to C-Space instead of default C-b
|
|
unbind C-b
|
|
set -g prefix C-Space
|
|
bind C-Space send-prefix
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Window and Pane Indexing
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Start windows and panes at index 1 instead of 0
|
|
set -g base-index 1
|
|
set -g pane-base-index 1
|
|
set-window-option -g pane-base-index 1
|
|
set-option -g renumber-windows on
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Split Panes in the Current Directory
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Split horizontally or vertically while preserving the current directory
|
|
bind h split-window -h -c "#{pane_current_path}"
|
|
bind j split-window -v -c "#{pane_current_path}"
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Make Pane Fullscreen
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Toggle the current pane between normal and fullscreen mode
|
|
bind -n C-f resize-pane -Z
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Navigation between Panes
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Use C-h and C-l to switch between panes
|
|
bind -n C-h select-pane -L
|
|
bind -n C-l select-pane -R
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Plugins
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Use TPM (Tmux Plugin Manager) to manage plugins
|
|
set -g @plugin 'tmux-plugins/tpm'
|
|
|
|
# List of Plugins to Install
|
|
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
|
|
set -g @plugin 'egel/tmux-gruvbox' # Gruvbox theme for tmux
|
|
set -g @plugin 'tmux-plugins/tmux-sensible' # Sensible tmux defaults
|
|
set -g @plugin 'tmux-plugins/tmux-yank' # Yank (copy-paste) support
|
|
set -g @plugin 'b0o/tmux-autoreload' # Auto-reload tmux config when updated
|
|
|
|
# Initialize TPM (Tmux Plugin Manager)
|
|
run '~/.tmux/plugins/tpm/tpm'
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Gruvbox Theme Configuration
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Gruvbox color scheme settings
|
|
set -g @tmux-gruvbox 'dark256' # Can be 'dark', 'dark256', 'light', 'light256'
|
|
set -g @tmux-gruvbox-right-status-z '#h #{tmux_mode_indicator}' # Hostname and tmux mode indicator
|
|
set -g @tmux-gruvbox-right-status-x '%d.%m.%Y' # Date format (e.g., 30.01.2024)
|
|
# Customize status line to show the mode indicator when in prefix mode
|
|
set -g status on
|
|
set -g status-interval 2 # Refresh every 2 seconds
|
|
|
|
# Ensure that when prefix is pressed, the mode indicator is shown
|
|
set -g mode-keys vi # Use vi keybindings in copy mode
|
|
set -g status-left-length 30 # Limit length of the left status line
|
|
set -g status-right-length 60 # Limit length of the right status line
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Additional Settings (Optional)
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Allow pane splitting and navigation using Emacs-like bindings
|
|
# 'C-h' (left) and 'C-l' (right) to switch between panes.
|
|
# This is already defined earlier in the config.
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Auto-reload tmux config on changes (with TPM)
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
|
|
# Reload tmux configuration without restarting tmux
|
|
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
|
|
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Other customizations or plugins can go below as needed.
|
|
# ───────────────────────────────────────────────────────────────────────────
|