136 lines
4.0 KiB
Plaintext
136 lines
4.0 KiB
Plaintext
# Version-specific commands [grumble, grumble]
|
|
# See: https://github.com/tmux/tmux/blob/master/CHANGES
|
|
run-shell 'tmux setenv -g TMUX_VERSION $(tmux -V | \
|
|
sed -En "s/^tmux[^0-9]*([.0-9]+).*/\1/p")'
|
|
|
|
# use vi bindings
|
|
set -g status-keys vi
|
|
set -g mode-keys vi
|
|
|
|
# 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 M-F12 next-window # use this since C-Tab doesn't exist in most terminals
|
|
bind -n M-F11 previous-window # use this since BTab = S-Esc
|
|
bind M-F12 swap-window -t +1 \; next-window
|
|
bind M-F11 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"
|
|
|
|
if-shell -b '[ "$(echo "$TMUX_VERSION >= 3.2" | bc)" = 1 ]' \
|
|
"set -g pane-border-lines heavy"
|
|
|
|
set -g message-style "fg=#ffffaa,bg=#666600"
|
|
|
|
set -g pane-border-status off
|
|
|
|
if-shell -b '[ "$(echo "$TMUX_VERSION >= 3.2" | bc)" = 1 ]' \
|
|
'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
|
|
|
|
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)"
|
|
|
|
# version 2.6 doesn't support brackets :/
|
|
if-shell -b '[ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]'\
|
|
'set -g status-position bottom; set -g status-right-length 64; set -g status-right "$net $status_sep $cpu $status_sep $mem "' \
|
|
'set -g status-position top; set -g status-right ""; set -g status-right-length 0'
|