dotfiles/.config/tmux/tmux.conf

130 lines
3 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
# 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
# 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'
### Session management -- TODO: configure later
# set -g @plugin 'tmux-plugins/tmux-resurrect'
# set -g @plugin 'tmux-plugins/tmux-continuum'
### NAVIGATION KEYBINDINGS
# 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
bind v copy-mode
bind u next-window
bind l previous-window
bind -n M-j swap-pane -t left
bind -n M-l swap-pane -D
bind -n M-u swap-pane -U
bind -n M-y swap-pane -t right
# m to mark a pane, M to "swap" it with current pane
bind M swap-pane
unbind -n M-Left
unbind -n M-Right
unbind -n M-Up
unbind -n M-Down
# 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"
bind-key t set-option status
set-window-option -g mode-keys vi
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
bind-key b set-option status
# Do not preserve the current working directory for new windows
bind c new-window -c ""
run '/usr/share/tmux-plugin-manager/tpm'