Files
dotfiles/.config/tmux/tmux.conf
T
2024-11-05 15:36:07 -05:00

117 lines
3.6 KiB
Bash

# ~/.config/tmux/tmux.conf
set -g escape-time 0
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
set -g history-limit 150000
set -g display-time 3000
set -g status-interval 5
set -g focus-events on
# Start indexes at 1 instead of 0
set -g base-index 1
setw -g pane-base-index 1
# Set term title to current session window
set -g set-titles on
set -g set-titles-string "#I: #W"
# Change activation from ctrl+b to ctrl+a
set -g prefix C-a
unbind C-b
bind-key C-a send-prefix
# Split windows with | and -
unbind %
bind | split-window -h -c "#{pane_current_path}"
unbind '"'
bind - split-window -v -c "#{pane_current_path}"
# Reload config
unbind R
bind -N "Reload tmux configuration" R source-file ~/.config/tmux/tmux.conf \; display "Config reloaded."
# Pane navigation
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R
# Resize panes
bind -r h resize-pane -L 5
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r l resize-pane -R 5
# Fullscreen current pane
bind -r m resize-pane -Z
# create new windows in the same cwd
bind c new-window -c "#{pane_current_path}"
# Window navigation
bind -n C-p previous-window
bind -n C-n next-window
# Prompt to rename new windows on creation
set-hook -g after-new-window 'command-prompt -I "#{window_pane}" "rename-window '%%'"'
set -g mouse on
set-window-option -g mode-keys vi
unbind -T copy-mode-vi Space;
unbind -T copy-mode-vi Enter;
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection
unbind -T copy-mode-vi MouseDragEnd1Pane
##########################
# Plugins
##########################
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'nordtheme/tmux'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect' # persist tmux sessions across reboot
set -g @plugin 'tmux-plugins/tmux-continuum' # automatically saves session every 15 mins
set -g @plugin 'laktak/extrakto' # fzf search in tmux (prefix+tab)
set -g @plugin 'sainnhe/tmux-fzf' # <prefix> F
set -g @plugin 'alexwforsythe/tmux-which-key' # <prefix><space>
set -g @plugin 'niqodea/tmux-matryoshka' # nested tmux (def F1-F3)
# Session restore options
set -g @continuum-boot 'on' # automatically start tmux session on boot
set -g @continuum-boot-options 'alacritty,fullscreen' # start tmux in fullscreen alacritty on macOS
set -g @continuum-restore 'on'
set -g @resurrect-strategy-nvim 'session'
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-processes 'ssh nvim man less tail btop htop vi vim' # space separated list of programs to restore
#### Options for nested tmux. putting here for reference while I decide if this is worth keeping
# # keybind to disable outer-most active tmux
# set -g @matryoshka_down_keybind 'M-d'
# # keybind to enable inner-most inactive tmux
# set -g @matryoshka_up_keybind 'M-u'
# # keybind to recursively enable all tmux instances
# set -g @matryoshka_up_recursive_keybind 'M-U'
# # status style of inactive tmux
# set -g @matryoshka_inactive_status_style 'fg=colour245,bg=colour238'
#
# # name of the option for the style of the status line
# # set if you rely on something other than the default 'status-style' option for it
# set -g @matryoshka_status_style_option 'my-status-style'
##### FZF settings
TMUX_FZF_SESSION_FORMAT="#{session_windows} windows"
TMUX_FZF_MENU=\
"switch session\n#'{$HOME}/.config/tmux/plugins/tmux-fzf/scripts/session.sh' switch\n"\
"rename window\n#{$HOME}/.config/tmux/plugins/tmux\-fzf/scripts/window.sh rename\n"
run '~/.config/tmux/plugins/tpm/tpm'