rwx/sh/tmux.sh
2025-01-19 17:39:54 +01:00

208 lines
4.4 KiB
Bash

# ╭──────┬───────╮
# │ 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 '\
#{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=gray
# ╭────────┬────────╮
# │ option │ status │
# ╰────────┴────────╯
# status lines
set-option -g status 3
# background color
set-option -g status-bg black
# foreground color
set-option -g status-fg gray
# line 1
set-option -g status-format[0] '\
#[fg=default]╭╴\
#[fg=cyan]#{pane_current_path}\
#[align=right]\
#[fg=default]#{pane_current_command}\
#[fg=yellow]%H:%M:%S\
#[fg=default]╶╮\
'
# line 2
set-option -g status-format[1] '\
#[fg=default]│\
#{W:\
#{?window_active,#[fg=green],\
#{?window_activity_flag,#[fg=red],#[fg=default]}}\
#{window_index}-#{window_panes} \
#{window_name}\
\
}\
#[align=right]\
#[fg=green]#{session_name}\
#[fg=default]#(tmux list-sessions | wc --lines)\
#[fg=default]│\
'
# line 3
set-option -g status-format[2] '\
#[fg=default]│\
#{P:\
#{?pane_active,#[fg=green],#[fg=default]}\
#{pane_index}\
\
#{pane_current_command}\
\
}\
#[align=right]\
#[fg=yellow]%Y-%m-%d\
#[fg=default]│\
'
# line 4
set-option -g status-format[3] '\
#[fg=default]│\
#{P:\
#{?pane_active,#[fg=green],#[fg=default]}\
#{pane_index}\
\
#[fg=blue]#{pane_width}×#{pane_height}\
\
}\
#[align=right]\
#[fg=blue]#{window_width}×#{window_height}\
#[fg=default]│\
'
# line 5
set-option -g status-format[4] '\
#[fg=default]│\
#[align=centre]\
#{host}\
#[align=right]\
#[fg=default]│\
'
# 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 window
bind-key -n F2 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-F10 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 │
# ╰─────┴────────╯
# split window
bind-key h split-window -h
bind-key v split-window -v
# 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
"
}