dotfiles/.config/tmux/tmux.conf

183 lines
4.6 KiB
Bash

# Needed for some graphics to work properly
# set -g default-terminal "tmux-256color"
# set -as terminal-features ',xterm-kitty:RGB'
# So keystrokes are forwarded correctly
set -g xterm-keys on
set -s extended-keys on
set -ag terminal-overrides ",foot*:Tc:extkeys:RGB"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
# set -as terminal-features 'xterm*:extkeys'
# THIS IS WHAT MAKES EXTENDED MODIFIERS WORK IN TMUX
# set -as terminal-features '*ghostty*:extkeys'
# set -g default-terminal "tmux-256color"
set-option -g update-environment "WAYLAND_DISPLAY XDG_RUNTIME_DIR"
# # don't let programs rename window
set -g allow-rename off
# # don't wait after escape sequences
set -s escape-time 1
#
# # Fix some graphics issues
# set -gq allow-passthrough on
# set -g visual-activity off
# max lines in window history
set -g history-limit 10000
# bind to reload config
unbind r
bind r source-file ~/.config/tmux/tmux.conf
unbind -n C-Enter
# unbind -n C-m
# bind C-t to prefix
unbind C-t
unbind C-b
set -g prefix C-t
# cringe: will disable later
set -g mouse on
# tmux renames window automatically
setw -g automatic-rename on
# start indexing at 1 (based)
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
# reset window numbers if layout changes
set-option -g renumber-windows on
# ignore terminal bell
set -g bell-action none
### PLUGINS
# plugin manager
set -g @plugin 'tmux-plugins/tpm'
# sensible defaults
set -g @plugin 'tmux-plugins/tmux-sensible'
# better yank
set -g @plugin 'tmux-plugins/tmux-yank'
# pretty minimal status
set -g @plugin 'niksingh710/minimal-tmux-status'
# Theme Settings
set -g @minimal-tmux-use-arrow false
set -g @minimal-tmux-status "top"
set -g @minimal-tmux-right true
set -g @minimal-tmux-justify "centre"
set -g @minimal-tmux-bg "#933737"
set -g @minimal-tmux-fg "#000000"
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @resurrect-strategy-nvim 'session'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-boot 'on'
# Awesome Tmux
# note: prefix + Tab to trigger
set -g @plugin 'laktak/extrakto'
# prefix + ?: keybindings help
set -g @plugin 'lost-melody/tmux-command-palette'
# easymotion
set -g @plugin 'ddzero2c/tmux-easymotion'
set -g @easymotion-key 's'
# prefix + T
set -g @plugin '27medkamal/tmux-session-wizard'
# prefix + g
set -g @plugin 'sturob/tmux-teleport'
# Prefix f to open main fzf
# Prefix C-w to open window switcher
TMUX_FZF_LAUNCH_KEY="C-f"
set -g @plugin 'sainnhe/tmux-fzf'
bind-key C-w run-shell -b "/home/fic/.config/tmux/plugins/tmux-fzf/scripts/window.sh switch"
# TODO:
# https://github.com/whame/tmux-modal
# https://github.com/gcla/tmux-wormhole
### NAVIGATION KEYBINDINGS
#
### Note: m:n:e:i are h:j:k:l on colemak-dh
# focus panes
bind -n M-m select-pane -L
bind -n M-n select-pane -D
bind -n M-e select-pane -U
bind -n M-i select-pane -R
# If we pressed prefix it's intentional; no need to confirm
bind x kill-window
# This will kill the pane
# ONLY asks for confirmation if it's the last
# pane in the window
bind -n M-x run-shell "~/.config/tmux/confirm_kill_pane.sh; true"
# Fullscreen pane
bind -n M-f resize-pane -Z
# Swap the split bindings to be consistent with nvim
# v -> split right
# s -> split down
bind -n M-v split-window -h -c "#{pane_current_path}"
bind -n M-s split-window -v -c "#{pane_current_path}"
# Resize pane
bind Left resize-pane -L 5
bind Right resize-pane -R 5
bind Up resize-pane -U 5
bind Down resize-pane -D 5
# Focus windows
bind -n M-u next-window
bind -n M-l previous-window
# Swap window left/right (keeping focus)
bind -n M-U swap-window -t + \; next-window
bind -n M-L swap-window -t - \; previous-window
# Swap active pane with direction
bind C-j swap-pane -t left
bind C-l swap-pane -D
bind C-u swap-pane -U
bind C-y swap-pane -t right
# m to mark a pane, M to "swap" it with current pane
# Note: this does not "unmark" the marked pane!
bind M swap-pane
# Unbind these resizing defaults
# as they conflict with Neovim
unbind -n M-Left
unbind -n M-Right
unbind -n M-Up
unbind -n M-Down
# Toggle status bar
bind-key b set-option status
# Enable vi keys in copy mode
set-window-option -g mode-keys vi
# Copy mode
# TODO: binding to cancel copy mode without selecting
bind v copy-mode
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Do not preserve the current working directory for new windows
bind c new-window -c ""
# TESTING
# DO NOT bind -n M-T display-message "Testing"
# bind -n C-Enter display-message "test?"
# WARN: This line must come last!
run '~/.tmux/plugins/tpm/tpm'