# Layout of this conf file: # 1. Global Settings # 2. Keybinds # 3. Keybinds # 4. Theme # For rapid change prototyping, disabled normally: # bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "config reloaded." ###################### ### 1. GLOBAL SETTINGS ###################### # show that activity happens but don't display a huge 'activity happening' notification setw -g monitor-activity on set -g visual-activity off # Start counting windows and panes at 1 set -g base-index 1 setw -g pane-base-index 1 set -g renumber-windows on # Terminal improvements set -g terminal-overrides "xterm*:XT:smcup@:rmcup@" set-window-option -g automatic-rename on set-option -g set-titles on set -g mouse on set -g default-terminal screen-256color set -g status-keys vi set -g history-limit 10000 # Screen size is based on the smallest client looking at the current windows, not the smallest # client connected to the overall session. If two clients are connected to the same session but not # looking at the same window, why would they care about each others screen size? setw -g aggressive-resize on # No delay for escape key press set -sg escape-time 0 # Set Cursor terminal override, so nvim can change cursor style when changing modes # more info see nvim, :help tui-cursor-shape set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' #################### ## 2. PLUGINS ## #################### # Plugins -- TO INITALLY SET UP THE PLUGINS PRESS bind-key I (that is shift i) # -- a message will appear after a second saying succes #run-shell ~/.tmux-plugins/resurrect/resurrect.tmux set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # Recently removed due to causing too many incompatibilities with how I want it set up #set -g @plugin 'tmux-plugins/tmux-pain-control' set -g @plugin 'tmux-plugins/tmux-yank' set -g @plugin 'tmux-plugins/tmux-prefix-highlight' set -g @plugin 'Morantron/tmux-fingers' run -b "${TMUX_PLUGIN_MANAGER_PATH}/tpm/tpm" ##################### ## 3. KEYBINDINGS ## ##################### # Unbind some defaults unbind '"' unbind % # Custom modifier key set -g prefix C-a unbind-key C-b bind-key -r C-a send-prefix # Pane Navigation - Vim Keys bind-key -n C-h select-pane -L bind-key -n C-j select-pane -D bind-key -n C-k select-pane -U bind-key -n C-l select-pane -R # Window Navigation - Prefix + Vim Keys bind-key -r C-h select-window -t :- bind-key -r C-l select-window -t :+ # Resize Panes bind-key -r H resize-pane -L 3 bind-key -r J resize-pane -D 1 bind-key -r K resize-pane -U 1 bind-key -r L resize-pane -R 3 bind-key -r C-H resize-pane -L 10 bind-key -r C-J resize-pane -D 5 bind-key -r C-K resize-pane -U 5 bind-key -r C-L resize-pane -R 10 # Send Pane to a new window (but stay on current window), join it back into the current window bind-key B break-pane -d bind-key C-b command-prompt -p "join pane from: " "join-pane -h -s '%%'" # Swap panes within the current window (swaps pane # entered with currently selected pane) bind-key b display-panes\; command-prompt -p "pane #: " "swap-pane -t '%%'" # Kill tabs quicker bind-key x kill-pane bind-key C-x kill-window # Split Window into panes - automatically handled by plugin bind-key \ split-window -h -c '#{pane_current_path}' bind-key - split-window -v -c '#{pane_current_path}' # Open a sessions chooser bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" # Quick-View Panes bind-key h split-window -h 'top' bind-key t split-window -h 'vim ~/Documents/ROADMAP.md' ##################### ## 4. THEME ## ##################### ## theme from github.com/jimeh/tmux-themepack, the powerline/default/blue theme. ## It is integrated with prefix highlight for this tmux conf # Status update interval set -g status-interval 1 # Basic status bar colors set -g status-fg colour238 set -g status-bg colour233 # Left side of status bar set -g status-left-bg colour233 set -g status-left-fg colour243 set -g status-left-length 40 set -g status-left "#[fg=colour232,bg=colour24,bold] #S #[fg=colour24,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]" # Right side of status bar set -g status-right-bg colour233 set -g status-right-fg colour243 set -g status-right-length 150 set -g status-right "#{prefix_highlight} #[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H " # Sets both Prefix mode and Copy mode to be highlighted in the status bar. set -g @prefix_highlight_show_copy_mode 'on' set -g @prefix_highlight_copy_mode_attr 'fg=black,bg=yellow,bold' # default is 'fg=default,bg=yellow' set -g @prefix_highlight_prefix_prompt 'Command' set -g @prefix_highlight_copy_prompt 'Copy' # Window status set -g window-status-format " #I:#W#F " set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour33,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]" # Current window status set -g window-status-current-bg colour100 set -g window-status-current-fg colour235 # Window with activity status set -g window-status-activity-bg colour245 # fg and bg are flipped here due to set -g window-status-activity-fg colour233 # a bug in tmux # Window separator set -g window-status-separator "" # Window status alignment set -g status-justify centre # Pane border set -g pane-border-bg default set -g pane-border-fg colour238 # Active pane border set -g pane-active-border-bg default set -g pane-active-border-fg colour24 # Pane number indicator set -g display-panes-colour colour233 set -g display-panes-active-colour colour245 # Clock mode set -g clock-mode-colour colour24 set -g clock-mode-style 24 # Message set -g message-bg colour24 set -g message-fg black # Command message set -g message-command-bg colour233 set -g message-command-fg black # Mode set -g mode-bg colour24 set -g mode-fg colour231