tmux/.tmux.conf
2025-03-08 22:37:32 +01:00

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.
# ───────────────────────────────────────────────────────────────────────────