diff --git a/dot_config/tmux/tmux.conf b/dot_config/tmux/tmux.conf new file mode 100644 index 0000000..df4c01a --- /dev/null +++ b/dot_config/tmux/tmux.conf @@ -0,0 +1,143 @@ +unbind C-b +set-option -g prefix ^A +bind a send-prefix + +# Bind appropriate commands similar to screen. +# lockscreen ^X x +unbind ^X +bind ^X lock-server +unbind x +bind x lock-server + +# screen ^C c +unbind ^C +bind ^C new-window +unbind c +bind c new-window + +# detach ^D d +unbind ^D +bind ^D detach + +# displays * +unbind * +bind * list-clients + +# next ^@ ^N sp n +unbind ^@ +bind ^@ next-window +unbind ^N +bind ^N next-window +unbind " " +bind " " next-window +unbind n +bind n next-window + +# title A +unbind A +bind A command-prompt "rename-window %%" + +# other ^A +unbind ^A +bind ^A last-window + +# prev ^H ^P p ^? +unbind ^H +bind ^H previous-window +unbind ^P +bind ^P previous-window +unbind p +bind p previous-window +unbind BSpace +bind BSpace previous-window + +# windows ^W w +unbind ^W +bind ^W list-windows +unbind w +bind w list-windows + +# kill K k +unbind K +bind K confirm-before "kill-window" +unbind k +bind k confirm-before "kill-window" + +# redisplay ^L l +unbind ^L +bind ^L refresh-client +unbind l +bind l refresh-client + +# " windowlist -b +unbind '"' +bind '"' choose-window + +# use Escape for entering copy mode, like screen +bind Escape copy-mode + +# less time between commands in a command sequence +set -s escape-time 0 + +# use vi-style key bindings +set-option -g mode-keys vi + +# start numbering windows a 1 +set -g base-index 1 + +# Rather than constraining window size to the maximum size of any client +# connected to the *session*, constrain window size to the maximum size +# of any client connected to *that window*. Much more reasonable. +set-window-option -g aggressive-resize on + +# the visual bell causes a micro delay when typing. Tab completion triggers +# the bell and typing halts for a second and it's really annoying. +set-option -g visual-bell off + +# status bar +set-option -g status-justify left +set-option -g status-left '' +set-option -g status-right '#[fg=colour47]#H #[fg=red]#(cut -d " " -f 1-3 /proc/loadavg) #[fg=colour227]%Y-%m-%d %H:%M#[default]' + +# scrollback buffer +set-option -g history-limit 4096 + +# 2022-11-26: According to the tmux FAQ, inside tmux TERM must be "screen", +# "tmux" or similar (such as "tmux-256color"). As of CentOS Stream 8, now +# all my systems support this (check with `infocmp tmux-256color`). +# +# See: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminal +set-option -g default-terminal "tmux-256color" + +# 2022-11-26: Tell Tmux that the outside terminal supports true color. I +# need to use the tmux-specific extension "Tc" for now until all my hosts +# are on tmux 3.2+. +# +# See: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour +# See: https://jdhao.github.io/2018/10/19/tmux_nvim_true_color/ +set -as terminal-overrides ",*-256color*:Tc" + +#### COLOUR (Solarized dark) + +# default statusbar colors +set-option -g status-style "bg=black fg=yellow default" + +# default window title colors +set-window-option -g window-status-style "fg=brightblue bg=default" + +# active window title colors +set-window-option -g window-status-current-style "fg=brightred bg=default" + +# pane border +set-option -g pane-border-style "fg=black" +set-option -g pane-active-border-style "fg=brightgreen" + +# message text +set-option -g message-style "bg=black fg=brightred" + +# pane number display +set-option -g display-panes-active-colour blue #blue +set-option -g display-panes-colour brightred #orange + +# clock +set-window-option -g clock-mode-colour green #green