# use vi bindings set -g status-keys vi set -g mode-keys vi # enable extended keys set -s extended-keys on set -as terminal-features 'xterm*:extkeys' # change prefix unbind C-b set -g prefix C-f bind C-f send-prefix # actual escape key set -sg escape-time 0 # reload bind r source-file $XDG_CONFIG_HOME/tmux/tmux.conf \; display "Config Reloaded" # session/client bind q detach-client bind l list-sessions set -g destroy-unattached off # window creation bind -n C-t new-window bind N command-prompt -I "#{window_name}" "rename-window '%%'" bind S command-prompt -I "#{session_name}" "rename-session '%%'" bind - split-window -v bind | split-window -h # window navigation bind -n C-Tab next-window bind -n M-F12 previous-window # use this since BTab = S-Esc (even in extended keys) bind C-Tab swap-window -t +1 \; next-window bind M-F12 swap-window -t -1 \; previous-window bind -n M-| choose-window "join-pane -h -t '%%'" bind -n M-- choose-window "join-pane -v -t '%%'" # pane navigation bind -n M-l select-pane -R bind -n M-h select-pane -L bind -n M-k select-pane -U bind -n M-j select-pane -D bind -n M-o last-pane bind o display-panes bind H swap-pane -U bind L swap-pane -D set -g display-panes-time 5000 # pane resizing bind -r C-l resize-pane -R 2 bind -r C-h resize-pane -L 2 bind -r C-k resize-pane -U bind -r C-j resize-pane -D # copy-mode (vim-like) bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi r send-keys -X rectangle-toggle # clipboard integration bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -i -p && xsel -o -p | xsel -i -b" bind-key p run "xsel -o | tmux load-buffer - ; tmux paste-buffer" # pane selection (mouse) # set -g mouse utf8 on set -g mouse on # copy-mode bind C-c copy-mode # theme status_sep="#[fg=#888888]|#[default]" set -g status-interval 1 set -g status-left "#h:#S $status_sep " set -g status-left-length 32 set -g status-style "fg=#cccccc,bg=#444444" set -g window-status-style "fg=#9f9f9f" set -g window-status-activity-style "fg=#9f9f9f" set -g window-status-current-style "fg=#000000 bold,bg=#00ff00" set -g window-status-separator " " set -g window-status-format "#{?window_activity_flag,##,}#I-#W" set -g window-status-current-format " #I-#W " set -g visual-activity off set -g monitor-activity on set -g pane-border-style "fg=#444444" set -g pane-active-border-style "fg=#aaaaaa" set -g pane-border-lines heavy set -g message-style "fg=#ffffaa,bg=#666600" set -g pane-border-status off set -g copy-mode-current-match-style "fg=#000000,bg=#ffffff" set -g copy-mode-match-style "fg=#000000,bg=#aa00aa" # pressing F12 turns the current prefix key/keymap "OFF" and allows keypresses # to go to a nested session if running bind -T root F12 \ set prefix None \;\ set key-table off \;\ set status-style "fg=#aaaaaa,bg=#666666" \;\ set window-status-style "fg=#777777" \;\ set window-status-current-style "fg=#666666 bold,bg=#999999" \;\ if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\ refresh-client -S \;\ bind -T off F12 \ set -u prefix \;\ set -u key-table \;\ set -u status-style \;\ set -u window-status-style \;\ set -u window-status-current-style \;\ refresh-client -S # if on local machine, put bar at top, if not put bar at bottom with some nice # stats that the local machine already has via conky {{- if eq .chezmoi.hostname "petrucci4prez" }} set -g status-position top set -g status-right "" set -g status-right-length 0 {{- else }} down="#($XDG_CONFIG_HOME/tmux/plugins/network down)" up="#($XDG_CONFIG_HOME/tmux/plugins/network up)" net="NET(↑/↓): $up $down" cpu="CPU: #($XDG_CONFIG_HOME/tmux/plugins/cpu_perc)" mem="RAM: #($XDG_CONFIG_HOME/tmux/plugins/mem_perc)" set -g status-position bottom set -g status-right-length 64 set -g status-right "$net $status_sep $cpu $status_sep $mem " {{ end }}