From 406922cdf111385fd53457a9c5def203101654ad Mon Sep 17 00:00:00 2001 From: "phansible (aamon)" Date: Tue, 6 May 2025 15:40:52 -0400 Subject: [PATCH] .tmux.conf improved with the help of Gemini --- .tmux.conf | 171 ++++++++++++++++++++++++++++------------------------- 1 file changed, 89 insertions(+), 82 deletions(-) diff --git a/.tmux.conf b/.tmux.conf index 8099fef..4df7c13 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -1,105 +1,112 @@ -## make tmux display things in 256 colors -## Getting italics working correctly in tmux -## https://unix.stackexchange.com/a/745718 -set -g default-terminal "tmux-256color" +######################################### +# Basic Settings and Prefix +######################################### -## set scrollback history to 10000 (10k) -set -g history-limit 10000 +set-option -g prefix C-a # Set Ctrl-a as the prefix key +unbind C-b # Unbind the default Ctrl-b prefix -## set Ctrl-a as the default prefix key combination -## and unbind C-b to free it up -set -g prefix C-a -unbind C-b +set -sg escape-time 1 # Shorten command delay for faster responsiveness -## reload ~/.tmux.conf using PREFIX r +######################################### +# Terminal and Display +######################################### + +set-option -g default-terminal "tmux-256color" # Force tmux to use 256 colors if supported by the terminal + +######################################### +# History and Indexing +######################################### + +set-option -g history-limit 10000 # Set the scrollback history limit to 10,000 lines +set-option -g base-index 1 # Start window indexing at 1 (instead of 0) +set-option -g pane-base-index 1 # Start pane indexing at 1 (instead of 0) + +######################################### +# Key Bindings +######################################### + +# Reload tmux configuration bind r source-file ~/.tmux.conf \; display "Reloaded!" -## map Vi movement keys as pane movement keys -bind h select-pane -L -bind j select-pane -D -bind k select-pane -U -bind l select-pane -R +# Window Management +bind Tab next-window # Cycle to the next window +bind , command-prompt "rename-window '%%'" # Open a prompt to rename the current window -# resize panes using PREFIX H, J, K, L -bind -r H resize-pane -L 2 -bind -r J resize-pane -D 2 -bind -r K resize-pane -U 2 -bind -r L resize-pane -R 2 +# Pane Management +bind | split-window -h # Split the current window horizontally +bind - split-window -v # Split the current window vertically -## PREFIX | to split horizontally -## PREFIX - to split vertically -bind | split-window -h -bind - split-window -v +# Pane Selection (Vi-style movement) +bind h select-pane -L # Select the pane to the left +bind j select-pane -D # Select the pane below +bind k select-pane -U # Select the pane above +bind l select-pane -R # Select the pane to the right -## shorten command delay -set -sg escape-time 1 +# Pane Resizing +bind -r H resize-pane -L 2 # Resize the current pane 2 cells to the left (repeatable with -r) +bind -r J resize-pane -D 2 # Resize the current pane 2 cells down (repeatable with -r) +bind -r K resize-pane -U 2 # Resize the current pane 2 cells up (repeatable with -r) +bind -r L resize-pane -R 2 # Resize the current pane 2 cells to the right (repeatable with -r) -## Tab through active windows -bind Tab next-window +######################################### +# Visual Notifications +######################################### -## Rename window -bind , command-prompt "rename-window '%%'" +set-option -g monitor-activity on # Enable monitoring of activity in other windows +set-option -g visual-activity on # Enable visual notification of activity in other windows -## ---------------------- -## Status Bar -## ----------------------- -set -g status on # turn the status bar on -set -g status-interval 5 # set update frequencey (default 15 seconds) -set -g status-justify centre # center window list for clarity +######################################### +# Status Bar +######################################### -## ---------------------- -## set some pretty colors -## ---------------------- -## set pane colors - hilight the active pane -set -g pane-border-style bg=colour0,fg=colour8 -set -g pane-active-border-style bg=colour0,fg=colour2 +set-option -g status on # Turn the status bar on +set-option -g status-interval 5 # Set the status bar update frequency to 5 seconds +set-option -g status-justify centre # Justify the window list to the left -## colorize messages in the command line -set-option -g message-style bg=colour0,fg=colour13 +# Left side of the status bar +set-option -g status-left-length 70 # Set the maximum length of the left side of the status bar +set-option -g status-left "#h ◆" # Display the hostname on the left, followed by some visual separators -## set window list colors -setw -g window-status-style fg=colour8,bg=colour0 -setw -g window-status-current-style fg=colour2,bg=colour0,bright +# Right side of the status bar +set-option -g status-right-length 60 # Set the maximum length of the right side of the status bar +set-option -g status-right "S:#S W:#I P:#P | %Y-%m-%d %H:%M" # Display session name, window index, pane index, and the date/time on the right -## Titles -set -g set-titles on -set -g set-titles-string '#H:#S.#I.#P #W #T' # window number,program name, active(or not) +# Status bar style +#set-option -g status-style bg=colour0,fg=colour8,bright # Set the background, foreground color, and brightness of the status bar +set-option -g status-style bg=default,fg=colour8,bright # Set the background to default (transparent), foreground color, and brightness +######################################### +# Pane Appearance +######################################### -#set inactive/active window styles -# set -g window-style fg=colour0,bg=colour0 -# set -g window-active-style fg=colour7,bg=colour0 -# -- or -- -# These make tmux transparent again -set -g window-style bg=default -set -g window-active-style bg=default +set-option -g pane-border-style bg=colour0,fg=colour8 # Style for inactive pane borders +set-option -g pane-active-border-style bg=colour0,fg=colour2 # Style for the active pane border -## Status Bar: color -set-option -g status-style bg=colour0,fg=colour8,bright +######################################### +# Message Appearance +######################################### -## Status Bar: Left - hostname -set -g status-left-length 70 -set -g status-left "#h" +set-option -g message-style bg=colour0,fg=colour13 # Style for messages displayed in the tmux command line -## Status Bar: Right - Session name, Window & Pane, Date & Time -set -g status-right-length 60 -set -g status-right "S:#S W:#I P:#P | %Y-%m-%d %H:%M" +######################################### +# Window Appearance +######################################### -# set window and pane index to 1 (0 by default) -set -g base-index 1 -setw -g pane-base-index 1 +set-option -g window-style bg=default # Default background color for windows +set-option -g window-active-style bg=default # Background color for the active window -## visual notification of activity in other windows -setw -g monitor-activity on -set -g visual-activity on +######################################### +# Window List Appearance +######################################### -# ---------------------------------- +set-option -g window-status-style fg=colour8,bg=default # Style for inactive windows in the window list +set-option -g window-status-current-style fg=colour2,bg=default,bright # Style for the active window in the window list -# ## use send-prefix to pass C-a through to application -# #bind C-a send-prefix -# -# ## Make the current window the first window -# bind T swap-window -t 1 -# -# set-option -g display-panes-active-colour colour2 -# set-option -g display-panes-colour colour1 -# +set-option -g window-status-format "#[fg=colour8,bg=default] #I:#W#[fg=colour8,bg=default] " # Format for inactive windows in the window list +set-option -g window-status-current-format "#[fg=colour2,bg=default,bright]● #I:#W ●#[fg=colour2,bg=default,nobold]" # Format for the active window in the window list + +######################################### +# Window Titles +######################################### + +set-option -g set-titles on # Enable automatic window titles +set-option -g set-titles-string '#H:#S.#I.#P #W #T' # Format string for window titles (hostname:session.window_index.pane_index window_number window_name)