# vim:syntax=tmux # Procedure: # 1. Disabling Gregory's vi-copy-mode and instead using tmux-yank. The latter covers all # specialties e.g. WSL on hosts where your employer or customer forces you to use an OS # not desihned for IT work # 2. Style borders # 3. Assign keys # 4. Better colours # -- navigation ---------------------------------------------------------------- # if you're running tmux within iTerm2 # - and tmux is 1.9 or 1.9a # - and iTerm2 is configured to let option key act as +Esc # - and iTerm2 is configured to send [1;9A -> [1;9D for option + arrow keys # then uncomment the following line to make Meta + arrow keys mapping work #set -ga terminal-overrides "*:kUP3=\e[1;9A,*:kDN3=\e[1;9B,*:kRIT3=\e[1;9C,*:kLFT3=\e[1;9D" # -- windows & pane creation --------------------------------------------------- # new window retains current path, possible values are: # - true # - false (default) tmux_conf_new_window_retain_current_path=false # new pane retains current path, possible values are: # - true (default) # - false tmux_conf_new_pane_retain_current_path=true # new pane tries to reconnect ssh sessions (experimental), possible values are: # - true # - false (default) tmux_conf_new_pane_reconnect_ssh=false # prompt for session name when creating a new session, possible values are: # - true # - false (default) tmux_conf_new_session_prompt=false # -- display ------------------------------------------------------------------- # RGB 24-bit colour support (tmux >= 2.2), possible values are: # - true # - false (default) tmux_conf_24b_colour=false # default theme tmux_conf_theme_colour_1="#080808" # dark gray tmux_conf_theme_colour_2="#303030" # gray tmux_conf_theme_colour_3="#8a8a8a" # light gray tmux_conf_theme_colour_4="#00afff" # light blue tmux_conf_theme_colour_5="#ffff00" # yellow tmux_conf_theme_colour_6="#080808" # dark gray tmux_conf_theme_colour_7="#e4e4e4" # white tmux_conf_theme_colour_8="#080808" # dark gray tmux_conf_theme_colour_9="#ffff00" # yellow tmux_conf_theme_colour_10="#ff00af" # pink tmux_conf_theme_colour_11="#5fff00" # green tmux_conf_theme_colour_12="#8a8a8a" # light gray tmux_conf_theme_colour_13="#e4e4e4" # white tmux_conf_theme_colour_14="#080808" # dark gray tmux_conf_theme_colour_15="#080808" # dark gray tmux_conf_theme_colour_16="#d70000" # red tmux_conf_theme_colour_17="#e4e4e4" # white tmux_conf_theme_colour_18="#0087d7" # custom blue 1 tmux_conf_theme_colour_19="#444444" # custom grey 1 # window style tmux_conf_theme_window_fg="default" tmux_conf_theme_window_bg="default" # highlight focused pane (tmux >= 2.1), possible values are: # - true # - false (default) tmux_conf_theme_highlight_focused_pane=false # focused pane colours: tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_18" # pane border style, possible values are: # - thin (default) # - fat tmux_conf_theme_pane_border_style=thin # pane borders colours: tmux_conf_theme_pane_border="$tmux_conf_theme_colour_19" tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4" # pane indicator colours (when you hit + q) tmux_conf_theme_pane_indicator="$tmux_conf_theme_colour_4" tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4" # status line style tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1" tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5" tmux_conf_theme_message_attr="bold" # status line command style ( : Escape) tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5" tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1" tmux_conf_theme_message_command_attr="bold" # window modes style tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1" tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5" tmux_conf_theme_mode_attr="bold" # status line style tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3" tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1" tmux_conf_theme_status_attr="none" # terminal title # - built-in variables are: # - #{circled_window_index} # - #{circled_session_name} # - #{hostname} # - #{hostname_ssh} # - #{hostname_full} # - #{hostname_full_ssh} # - #{username} # - #{username_ssh} tmux_conf_theme_terminal_title="#h โ #S โ— #I #W" # window status style # - built-in variables are: # - #{circled_window_index} # - #{circled_session_name} # - #{hostname} # - #{hostname_ssh} # - #{hostname_full} # - #{hostname_full_ssh} # - #{username} # - #{username_ssh} tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3" tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1" tmux_conf_theme_window_status_attr="none" tmux_conf_theme_window_status_format="#I #W" #tmux_conf_theme_window_status_format="#{circled_window_index} #W" #tmux_conf_theme_window_status_format="#I #W#{?window_bell_flag,๐Ÿ””,}#{?window_zoomed_flag,๐Ÿ”,}" # window current status style # - built-in variables are: # - #{circled_window_index} # - #{circled_session_name} # - #{hostname} # - #{hostname_ssh} # - #{hostname_full} # - #{hostname_full_ssh} # - #{username} # - #{username_ssh} tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1" tmux_conf_theme_window_status_current_bg="$tmux_conf_theme_colour_4" tmux_conf_theme_window_status_current_attr="bold" tmux_conf_theme_window_status_current_format="#I #W" #tmux_conf_theme_window_status_current_format="#{circled_window_index} #W" #tmux_conf_theme_window_status_current_format="#I #W#{?window_zoomed_flag,๐Ÿ”,}" # window activity status style tmux_conf_theme_window_status_activity_fg="default" tmux_conf_theme_window_status_activity_bg="default" tmux_conf_theme_window_status_activity_attr="underscore" # window bell status style tmux_conf_theme_window_status_bell_fg="$tmux_conf_theme_colour_5" tmux_conf_theme_window_status_bell_bg="default" tmux_conf_theme_window_status_bell_attr="blink,bold" # window last status style tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4" tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2" tmux_conf_theme_window_status_last_attr="none" # status left/right sections separators tmux_conf_theme_left_separator_main="" tmux_conf_theme_left_separator_sub="|" tmux_conf_theme_right_separator_main="" tmux_conf_theme_right_separator_sub="|" #tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline #tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with #tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone #tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md # status left/right content: # - separate main sections with "|" # - separate subsections with "," # - built-in variables are: # - #{battery_bar} # - #{battery_hbar} # - #{battery_percentage} # - #{battery_status} # - #{battery_vbar} # - #{circled_session_name} # - #{hostname_ssh} # - #{hostname} # - #{hostname_full} # - #{hostname_full_ssh} # - #{loadavg} # - #{mouse} # - #{pairing} # - #{prefix} # - #{root} # - #{synchronized} # - #{uptime_y} # - #{uptime_d} (modulo 365 when #{uptime_y} is used) # - #{uptime_h} # - #{uptime_m} # - #{uptime_s} # - #{username} # - #{username_ssh} tmux_conf_theme_status_left=" โ #S | โ†‘#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} " tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized}#{?battery_status,#{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} " # status left style tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8" tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11" tmux_conf_theme_status_left_attr="bold,none,none" # status right style tmux_conf_theme_status_right_fg="$tmux_conf_theme_colour_12,$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_14" tmux_conf_theme_status_right_bg="$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17" tmux_conf_theme_status_right_attr="none,none,bold" # pairing indicator tmux_conf_theme_pairing="โš‡" # U+2687 tmux_conf_theme_pairing_fg="none" tmux_conf_theme_pairing_bg="none" tmux_conf_theme_pairing_attr="none" # prefix indicator tmux_conf_theme_prefix="โŒจ" # U+2328 tmux_conf_theme_prefix_fg="none" tmux_conf_theme_prefix_bg="none" tmux_conf_theme_prefix_attr="none" # mouse indicator tmux_conf_theme_mouse="โ†—" # U+2197 tmux_conf_theme_mouse_fg="none" tmux_conf_theme_mouse_bg="none" tmux_conf_theme_mouse_attr="none" # root indicator tmux_conf_theme_root="!" tmux_conf_theme_root_fg="none" tmux_conf_theme_root_bg="none" tmux_conf_theme_root_attr="bold,blink" # synchronized indicator tmux_conf_theme_synchronized="โš" # U+268F tmux_conf_theme_synchronized_fg="none" tmux_conf_theme_synchronized_bg="none" tmux_conf_theme_synchronized_attr="none" # battery bar symbols tmux_conf_battery_bar_symbol_full="โ—ผ" tmux_conf_battery_bar_symbol_empty="โ—ป" #tmux_conf_battery_bar_symbol_full="โ™ฅ" #tmux_conf_battery_bar_symbol_empty="ยท" # battery bar length (in number of symbols), possible values are: # - auto # - a number, e.g. 5 tmux_conf_battery_bar_length="auto" # battery bar palette, possible values are: # - gradient (default) # - heat # - "colour_full_fg,colour_empty_fg,colour_bg" tmux_conf_battery_bar_palette="gradient" #tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black # battery hbar palette, possible values are: # - gradient (default) # - heat # - "colour_low,colour_half,colour_full" tmux_conf_battery_hbar_palette="gradient" #tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green # battery vbar palette, possible values are: # - gradient (default) # - heat # - "colour_low,colour_half,colour_full" tmux_conf_battery_vbar_palette="gradient" #tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green # symbols used to indicate whether battery is charging or discharging tmux_conf_battery_status_charging="โ†‘" # U+2191 tmux_conf_battery_status_discharging="โ†“" # U+2193 #tmux_conf_battery_status_charging="๐Ÿ”Œ" # U+1F50C #tmux_conf_battery_status_discharging="๐Ÿ”‹" # U+1F50B # clock style (when you hit + t) # you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4" tmux_conf_theme_clock_style="24" # -- clipboard ----------------------------------------------------------------- # in copy mode, copying selection also copies to the OS clipboard # - true # - false (default) # on macOS, this requires installing reattach-to-user-namespace, see README.md # on Linux, this requires xsel or xclip tmux_conf_copy_to_os_clipboard=false # -- user customizations ------------------------------------------------------- # this is the place to override or undo settings # increase history size #set -g history-limit 10000 # start with mouse mode enabled #set -g mouse on # force Vi mode # really you should export VISUAL or EDITOR environment variable, see manual #set -g status-keys vi #set -g mode-keys vi # replace C-b by C-a instead of using both prefixes # set -gu prefix2 # unbind C-a # unbind C-b # set -g prefix C-a # bind C-a send-prefix # move status line to top #set -g status-position top # -- tpm ----------------------------------------------------------------------- # while I don't use tpm myself, many people requested official support so here # is a seamless integration that automatically installs plugins in parallel # whenever a plugin introduces a variable to be used in 'status-left' or # 'status-right', you can use it in 'tmux_conf_theme_status_left' and # 'tmux_conf_theme_status_right' variables. # by default, launching tmux will update tpm and all plugins # - true (default) # - false tmux_conf_update_plugins_on_launch=true # by default, reloading the configuration will update tpm and all plugins # - true (default) # - false tmux_conf_update_plugins_on_reload=true # by default, reloading the configuration will uninstall tpm and plugins when no # plugins are enabled # - true (default) # - false tmux_conf_uninstall_plugins_on_reload=true # /!\ the tpm bindings differ slightly from upstream: # - installing plugins: + I # - uninstalling plugins: + Alt + u # - updating plugins: + u # /!\ do not add set -g @plugin 'tmux-plugins/tpm' # /!\ do not add run '~/.tmux/plugins/tpm/tpm' # to enable a plugin, use the 'set -g @plugin' syntax: # visit https://github.com/tmux-plugins for available plugins #set -g @plugin 'tmux-plugins/tmux-copycat' #set -g @plugin 'tmux-plugins/tmux-cpu' #set -g @plugin 'tmux-plugins/tmux-resurrect' #set -g @plugin 'tmux-plugins/tmux-continuum' #set -g @continuum-restore 'on' set -g status-left ' #[fg=#e0e0e0,bold,bg=#ff883e]โ–ก #S ' set -g status-right '#{?window_zoomed_flag,@,}# #{?client_prefix,#[bg=#c00000] โŒจ ,}#[fg=#a0a0a0,bg=#404040,bold] โ†‘ #(uptime-hms) #[fg=#808080,bg=#202020,bold] %Y-%m-%d #[fg=#a0a0a0,bg=#404040,bold] %H:%M:%S ' bind -n M-left previous-window bind -n M-right next-window bind-key -n S-Left swap-window -t -1 bind-key -n S-Right swap-window -t +1 bind -n S-Left display-panes \; select-pane -L bind -n S-Right display-panes \; select-pane -R bind-key -n S-Up display-panes \; select-pane -U bind-key -n S-Down display-panes \; select-pane -D bind _ split-window -h bind | split-window -v tmux_pane_active_border_fg='colour45' tmux_pane_active_border_bg=default tmux_display_panes_colour='colour45' set-option -g display-panes-active-colour colour45 set-option -g display-panes-colour colour8 set-option -g display-panes-time 500 set-option -g display-time 1500 set-option -g clock-mode-colour '#169b62' set-option -g allow-rename off tmux_conf_window_status_current_fg='#e0e0e0' tmux_conf_window_status_current_bg='#169b62' tmux_conf_window_status_current_attr='bold' #setw -g window-status-current-format ' #I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F ' setw -g window-status-current-format ' #[fg=#ff883e]#I#[fg=#e0e0e0]:#[fg=#e0e0e0]#W#[fg=#ff883e]#F ' bind r source-file ~/.tmux.conf \; source-file ~/.tmux.conf.local \; display-message "$HOME/.tmux.conf reloaded!" bind-key -n C-S-Down resize-pane -D bind-key -n C-S-Up resize-pane -U bind-key -n C-S-Left resize-pane -L bind-key -n C-S-Right resize-pane -R #set -g pane-active-border-fg colour45 #set -g pane-active-border-bg default set-option -g display-panes-active-colour colour45 set-option -g display-panes-colour colour8 run-shell ~/tmux-yank/yank.tmux # -- custom variables ---------------------------------------------------------- # to define a custom #{foo} variable, define a POSIX shell function between the # '# EOF' and the '# "$@"' lines. Please note that the opening brace { character # must be on the same line as the function name otherwise the parse won't detect # it. # # then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the # 'tmux_conf_theme_status_right' variables. # # /!\ do not remove the following line # EOF # # # /!\ do not "uncomment" the functions: the leading "# " characters are needed # # weather() { # curl -m 1 wttr.in?format=3 2>/dev/null # sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval # } # # online() { # ping -c 1 9.9.9.9 >/dev/null 2>&1 && printf 'โœ”' || printf 'โœ˜' # } # # "$@" # # /!\ do not remove the previous line