mirror of
1
0
Fork 0

Merge branch 'gpakosz-master'

This commit is contained in:
Thomas Norberg 2023-12-18 15:22:51 -05:00
commit 4e8c17fa48
5 changed files with 1496 additions and 855 deletions

1
.github/funding.yml vendored Normal file
View File

@ -0,0 +1 @@
github: gpakosz

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
plugins/ plugins/
resurrect/ resurrect/
plugins/**

1822
.tmux.conf

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,17 @@
# : << EOF
# https://github.com/gpakosz/.tmux # https://github.com/gpakosz/.tmux
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license, # (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license,
# without any warranty. # without any warranty.
# Copyright 2012— Gregory Pakosz (@gpakosz). # Copyright 2012— Gregory Pakosz (@gpakosz).
# -- navigation ---------------------------------------------------------------- # -- session creation ----------------------------------------------------------
# if you're running tmux within iTerm2 # prompt for session name when creating a new session, possible values are:
# - and tmux is 1.9 or 1.9a # - true
# - and iTerm2 is configured to let option key act as +Esc # - false (default)
# - and iTerm2 is configured to send [1;9A -> [1;9D for option + arrow keys # - disabled (do not modify new-session bindings)
# then uncomment the following line to make Meta + arrow keys mapping work tmux_conf_new_session_prompt=false
#set -ga terminal-overrides "*:kUP3=\e[1;9A,*:kDN3=\e[1;9B,*:kRIT3=\e[1;9C,*:kLFT3=\e[1;9D"
# -- windows & pane creation --------------------------------------------------- # -- windows & pane creation ---------------------------------------------------
@ -19,43 +19,103 @@
# new window retains current path, possible values are: # new window retains current path, possible values are:
# - true # - true
# - false (default) # - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_retain_current_path=false tmux_conf_new_window_retain_current_path=false
# new window tries to reconnect ssh sessions, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_reconnect_ssh=false
# new pane retains current path, possible values are: # new pane retains current path, possible values are:
# - true (default) # - true (default)
# - false # - false
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_retain_current_path=true tmux_conf_new_pane_retain_current_path=true
# new pane tries to reconnect ssh sessions (experimental), possible values are: # new pane tries to reconnect ssh sessions, possible values are:
# - true # - true
# - false (default) # - false (default)
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_reconnect_ssh=false 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 ------------------------------------------------------------------- # -- display -------------------------------------------------------------------
# RGB 24-bit colour support (tmux >= 2.2), possible values are: # RGB 24-bit colour support, possible values are:
# - true # - true
# - false (default) # - false
tmux_conf_theme_24b_colour=false # - auto (default)
#
# automatic detection relies on the COLORTERM environment variable being defined
# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216'
# see https://github.com/termstandard/colors
tmux_conf_24b_colour=auto
# -- theming -------------------------------------------------------------------
# enable or disable theming:
# - enabled (default)
# - disabled
# when disabled, all tmux_conf_theme_xxx variables are ignored except:
# - tmux_conf_theme_pairing
# - tmux_conf_theme_prefix
# - tmux_conf_theme_mouse
# - tmux_conf_theme_root
# - tmux_conf_theme_synchronized
tmux_conf_theme=enabled
# 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
# default theme (ansi)
#tmux_conf_theme_colour_1="colour0"
#tmux_conf_theme_colour_2="colour8"
#tmux_conf_theme_colour_3="colour8"
#tmux_conf_theme_colour_4="colour14"
#tmux_conf_theme_colour_5="colour11"
#tmux_conf_theme_colour_6="colour0"
#tmux_conf_theme_colour_7="colour15"
#tmux_conf_theme_colour_8="colour0"
#tmux_conf_theme_colour_9="colour11"
#tmux_conf_theme_colour_10="colour13"
#tmux_conf_theme_colour_11="colour10"
#tmux_conf_theme_colour_12="colour8"
#tmux_conf_theme_colour_13="colour15"
#tmux_conf_theme_colour_14="colour0"
#tmux_conf_theme_colour_15="colour0"
#tmux_conf_theme_colour_16="colour1"
#tmux_conf_theme_colour_17="colour15"
# window style # window style
tmux_conf_theme_window_fg='default' tmux_conf_theme_window_fg="default"
tmux_conf_theme_window_bg='default' tmux_conf_theme_window_bg="default"
# highlight focused pane (tmux >= 2.1), possible values are: # highlight focused pane, possible values are:
# - true # - true
# - false (default) # - false (default)
tmux_conf_theme_highlight_focused_pane=false tmux_conf_theme_highlight_focused_pane=false
# focused pane colours: # focused pane colours:
tmux_conf_theme_focused_pane_fg='default' tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_2"
tmux_conf_theme_focused_pane_bg='#0087d7' # light blue
# pane border style, possible values are: # pane border style, possible values are:
# - thin (default) # - thin (default)
@ -63,32 +123,35 @@ tmux_conf_theme_focused_pane_bg='#0087d7' # light blue
tmux_conf_theme_pane_border_style=thin tmux_conf_theme_pane_border_style=thin
# pane borders colours: # pane borders colours:
tmux_conf_theme_pane_border='#444444' # gray tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2"
tmux_conf_theme_pane_active_border='#00afff' # light blue tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4"
%if #{>=:#{version},3.2}
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$tmux_conf_theme_colour_9,#{?synchronize-panes,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_4}}"
%endif
# pane indicator colours # pane indicator colours (when you hit <prefix> + q)
tmux_conf_theme_pane_indicator='#00afff' # light blue tmux_conf_theme_pane_indicator="$tmux_conf_theme_colour_4"
tmux_conf_theme_pane_active_indicator='#00afff' # light blue tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4"
# status line style # status line style
tmux_conf_theme_message_fg='#000000' # black tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1"
tmux_conf_theme_message_bg='#ffff00' # yellow tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5"
tmux_conf_theme_message_attr='bold' tmux_conf_theme_message_attr="bold"
# status line command style (<prefix> : Escape) # status line command style (<prefix> : Escape)
tmux_conf_theme_message_command_fg='#ffff00' # yellow tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5"
tmux_conf_theme_message_command_bg='#000000' # black tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1"
tmux_conf_theme_message_command_attr='bold' tmux_conf_theme_message_command_attr="bold"
# window modes style # window modes style
tmux_conf_theme_mode_fg='#000000' # black tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1"
tmux_conf_theme_mode_bg='#ffff00' # yellow tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5"
tmux_conf_theme_mode_attr='bold' tmux_conf_theme_mode_attr="bold"
# status line style # status line style
tmux_conf_theme_status_fg='#8a8a8a' # light gray tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3"
tmux_conf_theme_status_bg='#080808' # dark gray tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1"
tmux_conf_theme_status_attr='none' tmux_conf_theme_status_attr="none"
# terminal title # terminal title
# - built-in variables are: # - built-in variables are:
@ -96,9 +159,11 @@ tmux_conf_theme_status_attr='none'
# - #{circled_session_name} # - #{circled_session_name}
# - #{hostname} # - #{hostname}
# - #{hostname_ssh} # - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username} # - #{username}
# - #{username_ssh} # - #{username_ssh}
tmux_conf_theme_terminal_title='#h ❐ #S ● #I #W' tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
# window status style # window status style
# - built-in variables are: # - built-in variables are:
@ -106,14 +171,16 @@ tmux_conf_theme_terminal_title='#h ❐ #S ● #I #W'
# - #{circled_session_name} # - #{circled_session_name}
# - #{hostname} # - #{hostname}
# - #{hostname_ssh} # - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username} # - #{username}
# - #{username_ssh} # - #{username_ssh}
tmux_conf_theme_window_status_fg='#8a8a8a' # light gray tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3"
tmux_conf_theme_window_status_bg='#080808' # dark gray tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1"
tmux_conf_theme_window_status_attr='none' tmux_conf_theme_window_status_attr="none"
tmux_conf_theme_window_status_format='#I #W' tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_format='#{circled_window_index} #W' #tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_format='#I #W#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}' #tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window current status style # window current status style
# - built-in variables are: # - built-in variables are:
@ -121,43 +188,45 @@ tmux_conf_theme_window_status_format='#I #W'
# - #{circled_session_name} # - #{circled_session_name}
# - #{hostname} # - #{hostname}
# - #{hostname_ssh} # - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username} # - #{username}
# - #{username_ssh} # - #{username_ssh}
tmux_conf_theme_window_status_current_fg='#000000' # black tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1"
tmux_conf_theme_window_status_current_bg='#00afff' # light blue 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_attr="bold"
tmux_conf_theme_window_status_current_format='#I #W' tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_current_format='#{circled_window_index} #W' #tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_current_format='#I #W#{?window_zoomed_flag,🔍,}' #tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window activity status style # window activity status style
tmux_conf_theme_window_status_activity_fg='default' tmux_conf_theme_window_status_activity_fg="default"
tmux_conf_theme_window_status_activity_bg='default' tmux_conf_theme_window_status_activity_bg="default"
tmux_conf_theme_window_status_activity_attr='underscore' tmux_conf_theme_window_status_activity_attr="underscore"
# window bell status style # window bell status style
tmux_conf_theme_window_status_bell_fg='#ffff00' # yellow 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_bg="default"
tmux_conf_theme_window_status_bell_attr='blink,bold' tmux_conf_theme_window_status_bell_attr="blink,bold"
# window last status style # window last status style
tmux_conf_theme_window_status_last_fg='#00afff' # light blue tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4"
tmux_conf_theme_window_status_last_bg='default' tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2"
tmux_conf_theme_window_status_last_attr='none' tmux_conf_theme_window_status_last_attr="none"
# status left/right sections separators # status left/right sections separators
tmux_conf_theme_left_separator_main='' tmux_conf_theme_left_separator_main=""
tmux_conf_theme_left_separator_sub='|' tmux_conf_theme_left_separator_sub="|"
tmux_conf_theme_right_separator_main='' tmux_conf_theme_right_separator_main=""
tmux_conf_theme_right_separator_sub='|' 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_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_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_main='\uE0B2' # Powerline symbols or the standalone
#tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md #tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
# status left/right content: # status left/right content:
# - separate main sections with '|' # - separate main sections with "|"
# - separate subsections with ',' # - separate subsections with ","
# - built-in variables are: # - built-in variables are:
# - #{battery_bar} # - #{battery_bar}
# - #{battery_hbar} # - #{battery_hbar}
@ -167,7 +236,10 @@ tmux_conf_theme_right_separator_sub='|'
# - #{circled_session_name} # - #{circled_session_name}
# - #{hostname_ssh} # - #{hostname_ssh}
# - #{hostname} # - #{hostname}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{loadavg} # - #{loadavg}
# - #{mouse}
# - #{pairing} # - #{pairing}
# - #{prefix} # - #{prefix}
# - #{root} # - #{root}
@ -179,86 +251,91 @@ tmux_conf_theme_right_separator_sub='|'
# - #{uptime_s} # - #{uptime_s}
# - #{username} # - #{username}
# - #{username_ssh} # - #{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_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}#{pairing}#{synchronized} #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} ' 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 # status left style
tmux_conf_theme_status_left_fg='#000000,#e4e4e4,#e4e4e4' # black, white , white 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='#ffff00,#ff00af,#00afff' # yellow, pink, white blue 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' tmux_conf_theme_status_left_attr="bold,none,none"
# status right style # status right style
tmux_conf_theme_status_right_fg='#8a8a8a,#e4e4e4,#000000' # light gray, white, black 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='#080808,#d70000,#e4e4e4' # dark gray, red, white 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' tmux_conf_theme_status_right_attr="none,none,bold"
# pairing indicator # pairing indicator
tmux_conf_theme_pairing='👓 ' # U+1F453 tmux_conf_theme_pairing="⚇" # U+2687
tmux_conf_theme_pairing_fg='none' tmux_conf_theme_pairing_fg="none"
tmux_conf_theme_pairing_bg='none' tmux_conf_theme_pairing_bg="none"
tmux_conf_theme_pairing_attr='none' tmux_conf_theme_pairing_attr="none"
# prefix indicator # prefix indicator
tmux_conf_theme_prefix='⌨ ' # U+2328 tmux_conf_theme_prefix="⌨" # U+2328
tmux_conf_theme_prefix_fg='none' tmux_conf_theme_prefix_fg="none"
tmux_conf_theme_prefix_bg='none' tmux_conf_theme_prefix_bg="none"
tmux_conf_theme_prefix_attr='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 # root indicator
tmux_conf_theme_root='!' tmux_conf_theme_root="!"
tmux_conf_theme_root_fg='none' tmux_conf_theme_root_fg="none"
tmux_conf_theme_root_bg='none' tmux_conf_theme_root_bg="none"
tmux_conf_theme_root_attr='bold,blink' tmux_conf_theme_root_attr="bold,blink"
# synchronized indicator # synchronized indicator
tmux_conf_theme_synchronized='🔒' # U+1F512 tmux_conf_theme_synchronized="⚏" # U+268F
tmux_conf_theme_synchronized_fg='none' tmux_conf_theme_synchronized_fg="none"
tmux_conf_theme_synchronized_bg='none' tmux_conf_theme_synchronized_bg="none"
tmux_conf_theme_synchronized_attr='none' tmux_conf_theme_synchronized_attr="none"
# battery bar symbols # battery bar symbols
tmux_conf_battery_bar_symbol_full='◼' tmux_conf_battery_bar_symbol_full="◼"
tmux_conf_battery_bar_symbol_empty='◻' tmux_conf_battery_bar_symbol_empty="◻"
#tmux_conf_battery_bar_symbol_full='♥' #tmux_conf_battery_bar_symbol_full="♥"
#tmux_conf_battery_bar_symbol_empty='·' #tmux_conf_battery_bar_symbol_empty="·"
# battery bar length (in number of symbols), possible values are: # battery bar length (in number of symbols), possible values are:
# - auto # - auto
# - a number, e.g. 5 # - a number, e.g. 5
tmux_conf_battery_bar_length='auto' tmux_conf_battery_bar_length="auto"
# battery bar palette, possible values are: # battery bar palette, possible values are:
# - gradient (default) # - gradient (default)
# - heat # - heat
# - 'colour_full_fg,colour_empty_fg,colour_bg' # - "colour_full_fg,colour_empty_fg,colour_bg"
tmux_conf_battery_bar_palette='gradient' tmux_conf_battery_bar_palette="gradient"
#tmux_conf_battery_bar_palette='#d70000,#e4e4e4,#000000' # red, white, black #tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black
# battery hbar palette, possible values are: # battery hbar palette, possible values are:
# - gradient (default) # - gradient (default)
# - heat # - heat
# - 'colour_low,colour_half,colour_full' # - "colour_low,colour_half,colour_full"
tmux_conf_battery_hbar_palette='gradient' tmux_conf_battery_hbar_palette="gradient"
#tmux_conf_battery_hbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green #tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
# battery vbar palette, possible values are: # battery vbar palette, possible values are:
# - gradient (default) # - gradient (default)
# - heat # - heat
# - 'colour_low,colour_half,colour_full' # - "colour_low,colour_half,colour_full"
tmux_conf_battery_vbar_palette='gradient' tmux_conf_battery_vbar_palette="gradient"
#tmux_conf_battery_vbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green #tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
# symbols used to indicate whether battery is charging or discharging # symbols used to indicate whether battery is charging or discharging
tmux_conf_battery_status_charging='↑' # U+2191 tmux_conf_battery_status_charging="↑" # U+2191
tmux_conf_battery_status_discharging='↓' # U+2193 tmux_conf_battery_status_discharging="↓" # U+2193
#tmux_conf_battery_status_charging='⚡ ' # U+26A1 #tmux_conf_battery_status_charging="🔌" # U+1F50C
#tmux_conf_battery_status_charging='🔌 ' # U+1F50C #tmux_conf_battery_status_discharging="🔋" # U+1F50B
#tmux_conf_battery_status_discharging='🔋 ' # U+1F50B
# clock style (when you hit <prefix> + t) # clock style (when you hit <prefix> + t)
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right # you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
tmux_conf_theme_clock_colour='#00afff' # light blue tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4"
tmux_conf_theme_clock_style='24' tmux_conf_theme_clock_style="24"
# -- clipboard ----------------------------------------------------------------- # -- clipboard -----------------------------------------------------------------
@ -266,8 +343,9 @@ tmux_conf_theme_clock_style='24'
# in copy mode, copying selection also copies to the OS clipboard # in copy mode, copying selection also copies to the OS clipboard
# - true # - true
# - false (default) # - false (default)
# - disabled
# on macOS, this requires installing reattach-to-user-namespace, see README.md # on macOS, this requires installing reattach-to-user-namespace, see README.md
# on Linux, this requires xsel or xclip # on Linux, this requires xsel, xclip or wl-copy
tmux_conf_copy_to_os_clipboard=false tmux_conf_copy_to_os_clipboard=false
@ -292,5 +370,91 @@ set -g mode-keys vi
# set -g prefix C-a # set -g prefix C-a
# bind C-a send-prefix # bind C-a send-prefix
# if you don't want Oh my tmux! to alter a binding, use #!important
# bind c new-window -c '#{pane_current_path}' #!important
# move status line to top # move status line to top
#set -g status-position 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: <prefix> + I
# - uninstalling plugins: <prefix> + Alt + u
# - updating plugins: <prefix> + 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'
# -- 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() { # see https://github.com/chubin/wttr.in#one-line-output
# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed
# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval
# }
#
# online() {
# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘'
# }
#
# "$@"
# # /!\ do not remove the previous line
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# Other examples:
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'
set -g @plugin 'welikechips/tmux-logging'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g history-limit 50000
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

137
README.md
View File

@ -10,14 +10,18 @@ Installation
Requirements: Requirements:
- tmux **`>= 2.1`** (soon `>= 2.4`) running inside Linux, Mac, OpenBSD, Cygwin - tmux **`>= 2.4`** running inside Linux, Mac, OpenBSD, Cygwin or WSL
or WSL
- awk, perl and sed - awk, perl and sed
- outside of tmux, `$TERM` must be set to `xterm-256color` - outside of tmux, `$TERM` must be set to `xterm-256color`
To install, run the following from your terminal: (you may want to backup your ⚠️ Before installing, you may want to backup your existing configuration.
existing `~/.tmux.conf` first)
You can install Oh my tmux! at any of the following locations:
- `~`
- `$XDG_CONFIG_HOME/tmux`
- `~/.config/tmux`
Installing in `~`:
``` ```
$ cd $ cd
$ git clone https://github.com/welikechips/.tmux.git $ git clone https://github.com/welikechips/.tmux.git
@ -26,18 +30,39 @@ $ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local . $ cp .tmux/.tmux.conf.local .
``` ```
Then proceed to [customize] your `~/.tmux.conf.local` copy. Installing in `$XDG_CONFIG_HOME/tmux`:
```
$ git clone https://github.com/welikechips/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "$XDG_CONFIG_HOME/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "$XDG_CONFIG_HOME/tmux/tmux.conf.local"
```
[customize]: #enabling-the-powerline-look Installing in `~/.config/tmux`:
```
$ git clone https://github.com/welikechips/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "~/.config/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "~/.config/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "~/.config/tmux/tmux.conf.local"
```
⚠️ When installing `$XDG_CONFIG_HOME/tmux` or `~/.config/tmux`, the configuration
file names don't have a leading `.` character.
❗️ You should never alter the main `.tmux.conf` or `tmux.conf` file. If you do,
you're on your own. Instead, every customization should happen in your
`.tmux.conf.local` or `tmux.conf.local` customization file copy.
If you're a Vim user, setting the `$EDITOR` environment variable to `vim` will If you're a Vim user, setting the `$EDITOR` environment variable to `vim` will
enable and further customize the vi-style key bindings (see tmux manual). enable and further customize the vi-style key bindings (see tmux manual).
If you're new to tmux, I recommend you read [tmux 2: Productive Mouse-Free If you're new to tmux, I recommend you to read [tmux 2: Productive Mouse-Free
Development][bhtmux2] by [@bphogan]. Development][bhtmux2] by [@bphogan].
[bhtmux2]: https://pragprog.com/book/bhtmux2/tmux-2 Now proceed to [adjust] your `.local` customization file copy.
[bhtmux2]: https://pragprog.com/titles/bhtmux2/tmux-2
[@bphogan]: https://twitter.com/bphogan [@bphogan]: https://twitter.com/bphogan
[adjust]: #configuration
Troubleshooting Troubleshooting
--------------- ---------------
@ -61,23 +86,23 @@ Troubleshooting
This can also happen on macOS when using iTerm2 and "Use Unicode version 9 This can also happen on macOS when using iTerm2 and "Use Unicode version 9
character widths" is enabled in `Preferences... > Profiles > Text` character widths" is enabled in `Preferences... > Profiles > Text`
For that reason, the default `~/.tmux.conf.local` file stopped using Unicode For that reason, the default sample `.local` customization file stopped using
characters for which width changed in between Unicode 8.0 and 9.0 standards, Unicode characters for which width changed in between Unicode 8.0 and 9.0
as well as Emojis. standards, as well as Emojis.
- **I installed Powerline and/or (patched) fonts but can't see Powerline - **I installed Powerline and/or (patched) fonts but can't see Powerline
symbols.** symbols.**
First, you don't need to install Powerline. You only need fonts patched with First, you don't need to install Powerline. You only need fonts patched with
Powerline symbols or the standalone `PowerlineSymbols.otf` font. Then make Powerline symbols or the standalone `PowerlineSymbols.otf` font. Then make
sure your `~/.tmux.conf.local` copy uses the right code points for sure your `.local` customization file copy uses the Powerline code points for
`tmux_conf_theme_left_separator_XXX` values. `tmux_conf_theme_left_separator_XXX` values.
- **I'm using Bash On Windows (WSL), colors and Powerline look are broken.** - **I'm using Bash On Windows (WSL), colors and the Powerline look are broken.**
There is currently a [bug][1681] in the new console powering Bash On Windows There is currently a [bug][1681] in the new console powering Bash On Windows
preventing text attributes (bold, underscore, ...) to combine properly with preventing text attributes (bold, underscore, ...) to combine properly with
colors. The workaround is to search your `~/.tmux.conf.local` copy and colors. The workaround is to search your `.local` customization file copy and
replace attributes with `'none'`. replace attributes with `'none'`.
Also, until Window's console replaces its GDI based render with a DirectWrite Also, until Window's console replaces its GDI based render with a DirectWrite
@ -100,12 +125,12 @@ Features
if available if available
- laptop battery status line information - laptop battery status line information
- uptime status line information - uptime status line information
- optional highlight of focused pane (tmux `>= 2.1`) - optional highlight of focused pane
- configurable new windows and panes behavior (optionally retain current path) - configurable new windows and panes behavior (optionally retain current path)
- SSH/Mosh aware split pane (reconnects to remote server) - SSH/Mosh aware split pane (reconnects to remote server)
- copy to OS clipboard (needs [`reattach-to-user-namespace`][reattach-to-user-namespace] - copy to OS clipboard (needs [`reattach-to-user-namespace`][reattach-to-user-namespace]
on macOS, `xsel` or `xclip` on Linux) on macOS, `xsel`, `xclip`, or `wl-copy` on Linux)
- support for 4-digit hexadecimal Unicode characters (requires `perl` or Bash >= 4.1.2) - support for 4-digit hexadecimal Unicode characters
- [Facebook PathPicker][] integration if available - [Facebook PathPicker][] integration if available
- [Urlview][] integration if available - [Urlview][] integration if available
@ -142,8 +167,8 @@ list of key bindings:
This configuration uses the following bindings: This configuration uses the following bindings:
- `<prefix> e` opens `~/.tmux.conf.local` with the editor defined by the - `<prefix> e` opens the `.local` customization file copy with the editor
`$EDITOR` environment variable (defaults to `vim` when empty) defined by the `$EDITOR` environment variable (defaults to `vim` when empty)
- `<prefix> r` reloads the configuration - `<prefix> r` reloads the configuration
- `C-l` clears both the screen and the tmux history - `C-l` clears both the screen and the tmux history
@ -189,14 +214,16 @@ Configuration
------------- -------------
While this configuration tries to bring sane default settings, you may want to While this configuration tries to bring sane default settings, you may want to
customize it further to your needs. Instead of altering the `~/.tmux.conf` file customize it further to your needs.
and diverging from upstream, the proper way is to edit the `~/.tmux.conf.local`
file.
Please refer to the default `~/.tmux.conf.local` file to know more about ❗️ Again, you should never alter the main `.tmux.conf` or `tmux.conf` file.
variables you can adjust to alter different behaviors. Pressing `<prefix> e` If you do, you're on your own.
will open `~/.tmux.conf.local` with the editor defined by the `$EDITOR`
environment variable (defaults to `vim` when empty). Please refer to the sample `.local` customization file to know more about the
variables that allow you to alter different behaviors. Upon successful
installation, pressing `<prefix> e` will open your `.local` customization file
copy with the editor defined by the `$EDITOR` environment variable (defaults to
`vim` when empty).
### Enabling the Powerline look ### Enabling the Powerline look
@ -218,12 +245,9 @@ To make use of these symbols, there are several options:
[powerline patched fonts]: https://github.com/powerline/fonts [powerline patched fonts]: https://github.com/powerline/fonts
[powerline font]: https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf [powerline font]: https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
[terminal support]: http://powerline.readthedocs.io/en/master/usage.html#usage-terminal-emulators [terminal support]: http://powerline.readthedocs.io/en/master/usage.html#usage-terminal-emulators
[Powerline manual]: http://powerline.readthedocs.org/en/latest/installation.html#fonts-installation
Please see the [Powerline manual] for further details. Then edit your `.local` customization file copy (with `<prefix> e`) and adjust
the following variables:
Then edit the `~/.tmux.conf.local` file (`<prefix> e`) and adjust the following
variables:
``` ```
tmux_conf_theme_left_separator_main='\uE0B0' tmux_conf_theme_left_separator_main='\uE0B0'
@ -231,12 +255,16 @@ tmux_conf_theme_left_separator_sub='\uE0B1'
tmux_conf_theme_right_separator_main='\uE0B2' tmux_conf_theme_right_separator_main='\uE0B2'
tmux_conf_theme_right_separator_sub='\uE0B3' tmux_conf_theme_right_separator_sub='\uE0B3'
``` ```
The [Powerline manual] contains further details on how to install fonts
containing the Powerline symbols. You don't need to install Powerline itself
though.
[Powerline manual]: http://powerline.readthedocs.org/en/latest/installation.html#fonts-installation
### Configuring the status line ### Configuring the status line
Contrary to the first iterations of this configuration, by now you have total Edit your `.local` customization file copy (`<prefix> e`) and adjust the
control on the content and order of `status-left` and `status-right`.
Edit the `~/.tmux.conf.local` file (`<prefix> e`) and adjust the
`tmux_conf_theme_status_left` and `tmux_conf_theme_status_right` variables to `tmux_conf_theme_status_left` and `tmux_conf_theme_status_right` variables to
your own preferences. your own preferences.
@ -264,19 +292,52 @@ This configuration supports the following builtin variables:
- `#{username_ssh}`: SSH aware username information, blank when not connected - `#{username_ssh}`: SSH aware username information, blank when not connected
to a remote server through SSH/Mosh to a remote server through SSH/Mosh
Beside custom variables mentioned above, the `tmux_conf_theme_status_left` and Beside the variables mentioned above, the `tmux_conf_theme_status_left` and
`tmux_conf_theme_status_right` variables support usual tmux syntax, e.g. using `tmux_conf_theme_status_right` variables support usual tmux syntax, e.g. using
`#()` to call an external command that inserts weather information provided by `#()` to call an external command that inserts weather information provided by
[wttr.in]: [wttr.in]:
``` ```
tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #(curl wttr.in?format=3) , %R , %d %b | #{username}#{root} | #{hostname} ' tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #(curl -m 1 wttr.in?format=3 2>/dev/null; sleep 900) , %R , %d %b | #{username}#{root} | #{hostname} '
``` ```
The `sleep 900` call makes sure the network request is issued at most every 15
minutes whatever the value of `status-interval`.
![Weather information from wttr.in](https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png) ![Weather information from wttr.in](https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png)
[wttr.in]: https://github.com/chubin/wttr.in#one-line-output [wttr.in]: https://github.com/chubin/wttr.in#one-line-output
### Accessing the macOS clipboard from within tmux sessions 💡 You can also define your own custom variables by writing special functions,
see the sample `.local` customization file for instructions.
Finally, remember `tmux_conf_theme_status_left` and
`tmux_conf_theme_status_right` end up being given to tmux as `status-left` and
`status-right` which means they're passed through `strftime()`. As such, the `%`
character has a special meaning and needs to be escaped by doubling it, e.g.
```
tmux_conf_theme_status_right='#(echo foo %% bar)'
```
See also `man 3 strftime`.
### Using TPM plugins
This configuration now comes with built-in [TPM] support:
- use the `set -g @plugin ...` syntax to enable a plugin
- 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, see instructions above 👆
- ⚠️ do not add `set -g @plugin 'tmux-plugins/tpm'` to any configuration file
- ⛔️ do not add `run '~/.tmux/plugins/tpm/tpm'` to any configuration file
⚠️ The TPM bindings differ slightly from upstream:
- installing plugins: `<prefix> + I`
- uninstalling plugins: `<prefix> + Alt + u`
- updating plugins: `<prefix> + u`
See the sample `.local` customization file for instructions.
[TPM]: https://github.com/tmux-plugins/tpm
### Accessing the macOS clipboard from within tmux sessions (tmux `< 2.6`)
[Chris Johnsen created the `reattach-to-user-namespace` [Chris Johnsen created the `reattach-to-user-namespace`
utility][reattach-to-user-namespace] that makes `pbcopy` and `pbpaste` work utility][reattach-to-user-namespace] that makes `pbcopy` and `pbpaste` work