182 lines
3.8 KiB
Bash
182 lines
3.8 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 bg=black,fg=green
|
|
|
|
# regular style
|
|
set-option -g pane-border-style bg=black,fg=gray
|
|
|
|
# ╭────────┬────────╮
|
|
# │ option │ status │
|
|
# ╰────────┴────────╯
|
|
|
|
# status lines
|
|
set-option -g status 4
|
|
|
|
# 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=cyan]#{pane_current_path}\
|
|
#[align=right] \
|
|
#[fg=green]#{session_name}\
|
|
'
|
|
|
|
# line 2
|
|
set-option -g status-format[1] '\
|
|
#{W:\
|
|
#{?window_active,#[fg=green],\
|
|
#{?window_activity_flag,#[fg=red],#[fg=default]}}\
|
|
#{window_index} \
|
|
#{window_name}\
|
|
#{?window_flags, #{window_flags},}\
|
|
\
|
|
}\
|
|
#[align=right] \
|
|
#[fg=yellow]%H:%M:%S\
|
|
'
|
|
|
|
# line 3
|
|
set-option -g status-format[2] '\
|
|
#{P:\
|
|
#{?pane_active,#[fg=green],#[fg=default]}\
|
|
#{pane_index}\
|
|
\
|
|
#{pane_current_command}\
|
|
\
|
|
}\
|
|
#[align=right] \
|
|
#[fg=yellow]%Y-%m-%d\
|
|
'
|
|
|
|
# line 4
|
|
set-option -g status-format[3] '\
|
|
#{P:\
|
|
#{?pane_active,#[fg=green],#[fg=default]}\
|
|
#{pane_index}\
|
|
\
|
|
#[fg=blue]#{pane_width}×#{pane_height}\
|
|
\
|
|
}\
|
|
#[align=right] \
|
|
#[fg=blue]#{window_width}×#{window_height}\
|
|
'
|
|
|
|
# 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
|
|
|
|
# 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
|
|
"
|
|
}
|