Files
absolute-dotfiles/.tmux.conf
2025-01-06 15:14:18 +01:00

117 lines
3.6 KiB
Bash

set -g mouse on
bind r source-file ~/.tmux.conf
set-option -a terminal-features 'XXX:RGB'
set-option -sg escape-time 10
set-option -g focus-events on
set-window-option -g mode-keys vi
set-option -g renumber-windows on
# Allow passthrough
set -gq allow-passthrough on
set -g visual-activity off
# Key Bindings
# Auto Source tmux.conf
unbind r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# Set binding for searching with / and ?
bind-key / copy-mode \; send-key ?
# Setting up vi binds for tmux copy mode
bind-key -T copy-mode-vi "v" send-keys -X begin-selection
bind-key -T copy-mode-vi "y" send-keys -X copy-selection
unbind -T copy-mode-vi MouseDragEnd1Pane
# Setting up vertical split with |
unbind %
bind | split-window -h -c '#{pane_current_path}'
# Set kill pane to Shift + Option + X
bind -n M-X kill-pane
# Setting up horizontal split with -
unbind '"'
bind - split-window -v -c '#{pane_current_path}'
# Setting up window movement with leader key + Left/Right arrow
bind Left swap-window -t -1\; select-window -t -1
bind Right swap-window -t +1\; select-window -t +1
# Setting up pane resize with hjkl
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r l resize-pane -R 5
bind -r h resize-pane -L 5
# Setting up pane minimize/maximize with m
bind -r m resize-pane -Z
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'MunifTanjim/tmux-mode-indicator'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'omerxx/catppuccin-tmux'
set -g @plugin 'omerxx/tmux-sessionx'
set -g @plugin 'omerxx/tmux-floax'
set -g @resurrect-dir "~/.tmux/resurrect"
set -g @resurrect-capture-pane-contents 'on'
set -g @sessionx-bind 's'
set -g @sessionx-window-mode 'on'
set -g @sessionx-tree-mode 'off'
set -g status-position top
set -g @catppuccin_window_left_separator ""
set -g @catppuccin_window_right_separator " "
set -g @catppuccin_window_middle_separator " █"
set -g @catppuccin_window_number_position "right"
set -g @catppuccin_window_default_fill "number"
set -g @catppuccin_window_default_text "#W"
set -g @catppuccin_window_current_fill "number"
set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(),}"
set -g @catppuccin_status_modules_right "directory date_time"
set -g @catppuccin_status_modules_left "session"
set -g @catppuccin_status_left_separator " "
set -g @catppuccin_status_right_separator " "
set -g @catppuccin_status_right_separator_inverse "no"
set -g @catppuccin_status_fill "icon"
set -g @catppuccin_status_connect_separator "no"
set -g @catppuccin_directory_text "#{b:pane_current_path}"
set -g @catppuccin_date_time_text "%H:%M"
# for neovim
set -g @resurrect-strategy-nvim 'session'
set -g @continuum-restore 'on'
# Is VIM?
# TMUX Navigation
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf|pipenv)(diff)?$'"
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
#
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'