139 lines
3.3 KiB
Bash
139 lines
3.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'
|
|
|
|
# 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"
|
|
|
|
### Session management -- TODO: configure later
|
|
|
|
# set -g @plugin 'tmux-plugins/tmux-resurrect'
|
|
# set -g @plugin 'tmux-plugins/tmux-continuum'
|
|
|
|
### 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 u next-window
|
|
bind l previous-window
|
|
|
|
# Swap active pane with direction
|
|
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
|
|
# 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 ""
|
|
|
|
# WARN: This line must come last!
|
|
run '/usr/share/tmux-plugin-manager/tpm'
|