dots/.config/tmux/tmux.conf

103 lines
4.3 KiB
Plaintext
Raw Normal View History

2024-12-31 11:25:24 +03:00
#########################
### TMUX CLI COMMANDS ###
#########################
# Reload tmux configuration tmux source ~/.config/tmux/tmux.conf
# Attach to an existing session tmux attach -t session_name
# Kill all tmux processes pkill -f tmux
# Install specified plugins via TPM prefix + I
# Run custom shell script at startup run-shell "~/your/command.sh"
# (in tmux.conf)
########################
### GENERAL SETTINGS ###
########################
set-option -g default-terminal "screen-256color" # Enable 256 colors in terminal
#set -g default-terminal 'tmux-256color'
#set -g default-terminal 'xterm-256color'
set -ga terminal-overrides ',*:Tc' # Enable TrueColors
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' # Support cursor shape changes
set -g base-index 1 # Start window numbering at 1
set -g pane-base-index 1 # Start pane numbering at 1
set -g aggressive-resize on # Automatically resize panes on window size change
set -g history-limit 10000 # Keep 10,000 lines in scrollback buffer
set -g set-titles on # Enable automatic title updates
set -g mouse on # Enable mouse support
set -g mode-style "fg=black,bg=blue" # Customize text selection colors in copy mode
set -g status-position top # Place status bar at top
set-environment -g LC_CTYPE "ru_RU.UTF-8" # Set environment encoding for Russian
#set -g pane-active-border-style fg=blue # Set active board color: example with bg 'fg=blue,bg=green'
#set -s set-clipboard off # Clipboard mode on|off|external
#set -g display-time 100 # Set deley after changing focus of pane (def 750 ms)
## Extra status bar line
#setw -g pane-border-status bottom # Border placement
#setw -g pane-border-format '─' # Border style
#########################
### MOUSE KEYBINDINGS ###
#########################
# Open a new window with double-click on status bar
bind-key -n DoubleClick1Status new-window
############################
### KEYBOARD KEYBINDINGS ###
############################
bind-key 'v' copy-mode # 'prefix+v' to enable copy mode
bind-key -T copy-mode-vi 'v' send -X begin-selection # 'v' to start selecting in copy mode
# Manual save/restore bindings for tmux-resurrect
# 'prefix+F5' to save
bind-key -T prefix F5 run-shell \
'~/.config/tmux/plugins/tmux-resurrect/scripts/save.sh && mv -f $(find ~/.local/share/tmux/resurrect -type f -name "tmux_resurrect_*.txt" -size +0c | sort | tail -1) ~/.local/share/tmux/resurrect/main.txt && tmux display-message "Environment saved manually!"'
# 'prefix+F6' to load
bind-key -T prefix F6 run-shell \
'ln -sf ~/.local/share/tmux/resurrect/main.txt ~/.local/share/tmux/resurrect/last && ~/.config/tmux/plugins/tmux-resurrect/scripts/restore.sh'
####################
### PLUGINS LIST ###
####################
# Plugins
set -g @plugin 'tmux-plugins/tpm' # Plugins manager
set -g @plugin 'tmux-plugins/tmux-sensible' # Optimal tmux default settings
set -g @plugin 'arcticicestudio/nord-tmux' # Nord theme for tmux
set -g @plugin 'tmux-plugins/tmux-resurrect' # Save and restore tmux env
set -g @plugin 'tmux-plugins/tmux-continuum' # Automates save and restore actions of tmux-resurrect
######################
### PLUGINS CONFIG ###
######################
# Configure tmux-resurrect
# Cleanup old session files
run-shell \
'find ~/.local/share/tmux/resurrect/ -type f -name "*.txt" ! -name "main.txt" -mtime +3 -delete'
#set -g @resurrect-capture-pane-contents 'on' # Restore previous sessions content
set -g @resurrect-strategy-nvim 'session' # Use sessions for restoring Neovim
set -g @resurrect-processes 'ssh ranger mc tmux cmatrix ipython' # Processes to restore
# Configure tmux-continuum
set -g @continuum-boot 'on' # Auto-start tmux via systemd
set -g @continuum-restore 'on' # Auto-restore tmux sessions
set -g @continuum-save-interval '60' # Auto-save every 60 minutes
# Ensure TPM plugin is installed
if "test ! -d ~/.config/tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm'"
# Autoinstall other plugins on new machine
run '~/.config/tmux/plugins/tpm/tpm'
run '~/.config/tmux/plugins/tpm/bin/install_plugins'
# Initialize TPM (keep this line at very bottom of tmux.conf)
run '~/.config/tmux/plugins/tpm/tpm'