1
0
Fork 0

add tmux config

This commit is contained in:
Luca Bilke 2023-12-11 19:14:42 +01:00
parent abebb19346
commit 86edaaae3b
1 changed files with 121 additions and 0 deletions

121
.config/tmux/tmux.conf Normal file
View File

@ -0,0 +1,121 @@
yank="xsel -i --clipboard"
# GENERAL SETTINGS
set -g default-terminal "screen-256color"
set -g history-limit 20000
set -g buffer-limit 20
set -sg escape-time 0
set -g display-time 1500
set -g remain-on-exit off
set -g repeat-time 300
setw -g allow-rename off
setw -g automatic-rename off
setw -g aggressive-resize on
set -g prefix C-a
set -g set-titles on
set -g set-titles-string "#I:#W"
set -g mouse off
setw -g mode-keys vi
set -g visual-activity on
# STATUS BAR SETTINGS
black="color0"
red="color1"
green="color2"
yellow="color3"
blue="color4"
purple="color5"
cyan="color6"
gray="color7"
darkgray="color8"
white="color15"
set -g mode-style "fg=default,bg=$blue"
set -g message-style "fg=$blue,bg=$black"
set -g status-style "fg=$gray,bg=$black"
setw -g window-status-format " #I:#W "
setw -g window-status-current-style "fg=$black,bold,bg=$blue"
setw -g window-status-current-format " #I:#W# "
setw -g window-status-activity-style "fg=$gray"
setw -g pane-active-border-style "fg=$blue"
set -g status on
set -g status-interval 5
set -g status-position bottom
set -g status-justify left
set -g status-right-length 100
# BINDINGS
unbind 'C-b'
unbind '$'
unbind ','
unbind '%'
unbind '"'
unbind '}'
unbind '{'
unbind '['
unbind ']'
unbind "'"
unbind 'n'
unbind 'p'
unbind 'l'
unbind 'M'
unbind 'o'
unbind '&'
unbind '#'
unbind '='
unbind 'z'
unbind 'Space'
unbind 'M-Up'
unbind 'M-Down'
unbind 'M-Right'
unbind 'M-Left'
bind 'C-r' source-file ~/$XDG_CONFIG_HOME/tmux/tmux.conf \; display "Config reloaded"
bind 'r' command-prompt -I "#{window_name}" "rename-window '%%'"
bind 'R' command-prompt -I "#{session_name}" "rename-session '%%'"
bind 'c' new-window -c "#{pane_current_path}"
bind '|' split-window -h -c "#{pane_current_path}"
bind '_' split-window -v -c "#{pane_current_path}"
bind -r 'C-[' previous-window
bind -r 'C-]' next-window
bind -r '[' select-pane -t :.-
bind -r ']' select-pane -t :.+
bind -r 'Tab' last-window # cycle thru MRU tabs
bind -r 'C-o' swap-pane -D
bind '+' resize-pane -Z
bind 'L' command-prompt -p "Link window from (session:window): " "link-window -s %% -a"
bind 'Space' if '[ #{pane_index} -eq 2 ]' \
'swap-pane -s "!"' \
'select-pane -t:.1 ; swap-pane -d -t 1 -s "!"'
bind 'x' kill-pane
bind 'X' kill-window
bind 'C-x' confirm-before -p "kill other windows? (y/n)" "kill-window -a"
bind 'Q' confirm-before -p "kill-session #S? (y/n)" kill-session
bind 'C-u' command-prompt -p "Session to merge with: " \
"run-shell 'yes | head -n #{session_windows} | xargs -I {} -n 1 tmux movew -t %%'"
bind 'd' detach
bind 'D' if -F '#{session_many_attached}' \
'confirm-before -p "Detach other clients? (y/n)" "detach -a"' \
'display "Session has only 1 client attached"'
bind 'C-s' if -F '#{s/off//:status}' 'set status off' 'set status on'
bind 'm' setw monitor-activity \; display-message 'Monitor window activity [#{?monitor-activity,ON,OFF}]'
bind 'M' if -F '#{monitor-silence}' \
'setw monitor-silence 0 ; display-message "Monitor window silence [OFF]"' \
'command-prompt -p "Monitor silence: interval (s)" "setw monitor-silence %%"'
bind 'p' paste-buffer
bind 'C-p' choose-buffer
bind 'C-c' copy-mode
bind -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "$yank"
bind -T copy-mode-vi 'Y' send-keys -X copy-line-and-cancel \; run "tmux save-buffer - | $yank"
# These binds allow toggling of keybind handling by the root tmux session
# This is helpful when nesting tmux sessions (i.e. when using SSH)
bind -T root F12 \
set prefix None \;\
set key-table off \;\
if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
refresh-client -S
bind -T off F12 \
set -u prefix \;\
set -u key-table \;\
refresh-client -S