# ╭──────╮ # │ tmux │ # ╰──────╯ # ╭──────┬───────╮ # │ tmux │ setup │ # ╰──────┴───────╯ rwx_tmux_setup() { local file file="${HOME}/.tmux.conf" rwx_file_write "${file}" "\ # ╭────────╮ # │ option │ # ╰────────╯ # empty name for windows set-option -g automatic-rename-format '#{pane_current_command}' set-option -g automatic-rename on # first index number set-option -g base-index 1 # display duration set-option -g display-time 1536 # extend history limit set-option -g history-limit 1048576 # style for messages set-option -g message-style bg=red,fg=white # activity monitoring set-window-option -g monitor-activity on # silence monitoring set-window-option -g monitor-silence 0 # enable mouse actions set-option -g mouse on # prefix with ^B or F12 set-option -g prefix C-b set-option -g prefix2 F12 # renumber windows after closing one set-option -g renumber-windows on # enable title set-option -g set-titles on # set title to working directory set-option -g set-titles-string '\ #(basename \"\${TMUX}\" | cut --delimiter \",\" --fields \"1\")\ → \ #{session_name}\ → \ #{window_index}∕#{session_windows} #{window_name}\ → \ #{pane_index}∕#{window_panes} #{pane_current_command}\ ' # ╭────────┬──────╮ # │ option │ pane │ # ╰────────┴──────╯ # first index number set-option -g pane-base-index 1 # ╭────────┬──────┬────────╮ # │ option │ pane │ border │ # ╰────────┴──────┴────────╯ # active style set-option -g pane-active-border-style fg=green # regular style set-option -g pane-border-style fg=blue # ╭────────┬────────╮ # │ option │ status │ # ╰────────┴────────╯ # status lines set-option -g status 2 # background color set-option -g status-bg '#080808' # foreground color set-option -g status-fg white # line 1 set-option -g status-format[0] '\ #{W:\ #{?window_active,#[fg=green],\ #{?window_activity_flag,#[fg=red],#[fg=yellow]}}\ #[bg=##181818]#{?window_zoomed_flag,#[fg=magenta][, }\ #[bg=##282828]#{window_name}\ #[bg=##181818]#{?window_zoomed_flag,#[fg=magenta]], }\ #[fg=default]\ #[bg=default] \ }\ #[align=right]\ #[fg=yellow]\ #[bg=##181818] \ #[bg=##282828]%H:%M:%S\ #[bg=##181818]#{?client_prefix,#[fg=green]p, }\ ' # line 2 set-option -g status-format[1] '\ #{S:\ #{?session_many_attached,#[fg=magenta],\ #{?session_attached,#[fg=red],#[fg=yellow]}}\ #[bg=##181818] \ #[bg=##282828]#{session_name}\ #[bg=##181818] \ #[fg=default]\ #[bg=default] \ }\ #[fg=yellow]→\ #[fg=default] \ #[fg=green]\ #[bg=##181818] \ #[bg=##282828]#{session_name}\ #[bg=##181818] \ #[align=right]\ #[fg=yellow]\ #[bg=##181818] \ #[bg=##282828]%Y-%m-%d\ #[bg=##181818] \ ' # line 3 set-option -g status-format[2] '\ #[fg=yellow]\ #(lsof -U \ | awk \"/^tmux:.*\\(LISTEN\\)$/ {print \\\$9}\" \ | xargs -n \"1\" basename \ | sed \"s/^/#[fg=yellow]#[bg=##181818] #[bg=##282828]/\ ;s/\$/#[bg=##181818] #[fg=default]#[bg=default] /\" \ | xargs echo \ )\ #[fg=default] \ #[fg=yellow]→\ #[fg=default] \ #[fg=green]\ #[bg=##181818] \ #[bg=##282828]#(basename \"\${TMUX}\" \ | cut --delimiter \",\" --fields \"1\")\ #[bg=##181818] \ #[align=right]\ #[fg=yellow]\ #[bg=##181818] \ #[bg=##282828]#{host}\ #[bg=##181818] \ ' # line 4 set-option -g status-format[3] '\ #{P:\ #{?pane_active,#[fg=green],#[fg=yellow]}\ #[bg=##181818] \ #[bg=##282828]#{pane_current_command}\ #[bg=##181818] \ #[fg=default]\ #[bg=default] \ }\ #[align=right]\ #{?uid,#[fg=green],#[fg=red]}\ #[bg=##181818] \ #[bg=##282828]#{user}\ #[bg=##181818] \ ' # line 5 set-option -g status-format[4] '\ #{P:\ #{?pane_active,#[fg=green],#[fg=yellow]}\ #[bg=##181818] \ #[bg=##282828]#{pane_width}×#{pane_height}\ #[bg=##181818] \ #[fg=default]\ #[bg=default] \ }\ #[align=right]\ #[fg=yellow]\ #[bg=##181818] \ #[bg=##282828]#{window_width}×#{window_height}\ #[bg=##181818] \ ' # refresh period set-option -g status-interval 1 # bar location set-option -g status-position bottom # ╭─────╮ # │ key │ # ╰─────╯ # detach client bind-key -n F6 detach-client # new bind-key -n S-M-Down new-session bind-key -n S-M-Right new-window # select pane bind-key -n C-S-Down select-pane -D bind-key -n C-S-Left select-pane -L bind-key -n C-S-Right select-pane -R bind-key -n C-S-Up select-pane -U # status lines bind-key -n C-F6 set-option -g status off bind-key -n C-F1 set-option -g status on bind-key -n C-F2 set-option -g status 2 bind-key -n C-F3 set-option -g status 3 bind-key -n C-F4 set-option -g status 4 bind-key -n C-F5 set-option -g status 5 # switch session bind-key -n M-Down switch-client -n bind-key -n M-Up switch-client -p # switch window bind-key -n M-Left previous-window bind-key -n M-Right next-window # ╭─────┬────────╮ # │ key │ prefix │ # ╰─────┴────────╯ # rename bind-key C-s command-prompt { rename-session '%%' } bind-key C-w command-prompt { rename-window '%%' } # split window bind-key h split-window -h bind-key v split-window -v # kill server bind-key k kill-server # reload configuration bind-key r source-file ${file} \\; display-message 'source-file ${file}' # toggle mouse bind-key t set-option -g mouse \\; display-message 'mouse = #{mouse}' # swap window bind-key M-Left swap-window -t -1 bind-key M-Right swap-window -t +1 # ╭─────────────╮ # │ default │ # ╭───────────┬─────────┼─────┬───────┤ # │ -n │ F12 │ -n │ C-b │ # ╭───────────────────┼───────────┼─────────┼─────┼───────┤ # │ command-prompt │ │ │ │ : │ # │ copy-mode │ │ │ │ PPage │ # │ detach-client │ F6 │ │ │ d │ # │ kill-server │ │ k │ │ │ # │ new-session │ │ │ │ │ # │ new-window │ F2 │ │ │ c │ # │ next-window │ M-Right │ │ │ n │ # │ previous-window │ M-Left │ │ │ p │ # │ rename-session │ │ C-s │ │ │ # │ rename-window │ │ C-w │ │ │ # │ resize-pane -Z │ │ │ │ z │ # │ select-pane -D │ C-S-Down │ │ │ │ # │ select-pane -L │ C-S-Left │ │ │ │ # │ select-pane -R │ C-S-Right │ │ │ │ # │ select-pane -U │ C-S-Up │ │ │ │ # │ set -g mouse │ │ t │ │ │ # │ set -g status off │ C-F6 │ │ │ │ # │ set -g status on │ C-F1 │ │ │ │ # │ set -g status 2 │ C-F2 │ │ │ │ # │ set -g status 3 │ C-F3 │ │ │ │ # │ set -g status 4 │ C-F4 │ │ │ │ # │ set -g status 5 │ C-F5 │ │ │ │ # │ source-file │ │ r │ │ │ # │ split-window -h │ │ h │ │ % │ # │ split-window -v │ │ v │ │ \" │ # │ swap-window -t -1 │ │ M-Left │ │ │ # │ swap-window -t +1 │ │ M-Right │ │ │ # │ switch-client -n │ M-Down │ │ │ │ # │ switch-client -p │ M-Up │ │ │ │ # ╰───────────────────┴───────────┴─────────┴─────┴───────╯ " }