Skip to content

Instantly share code, notes, and snippets.

@peterk87
Created May 10, 2024 19:28
Show Gist options
  • Save peterk87/de7fa16895b6755faae6bc26274b0171 to your computer and use it in GitHub Desktop.
Save peterk87/de7fa16895b6755faae6bc26274b0171 to your computer and use it in GitHub Desktop.
.tmux.conf with QoL improvements and won't give you carpal tunnel
#######################################################################
# tmux.conf #
#######################################################################
#######################################################################
# Setting the prefix from C-b to C-a #
#######################################################################
set -g prefix C-a
#######################################################################
# Free the original Ctrl-b prefix keybinding #
#######################################################################
unbind C-b
#######################################################################
# Setting the delay between prefix and command #
#######################################################################
set -s escape-time 1
#######################################################################
# Ensure that we can send Ctrl-A to other apps #
#######################################################################
bind C-a send-prefix
#######################################################################
# Set the base index for windows to 1 instead of 0 #
#######################################################################
set -g base-index 1
#######################################################################
# Set the base index for panes to 1 instead of 0 #
#######################################################################
setw -g pane-base-index 1
#######################################################################
# Reload the file with Prefix r #
#######################################################################
bind r source-file ~/.tmux.conf \; display "Reloaded!"
#######################################################################
# Pane creation/splitting #
#######################################################################
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
#######################################################################
# Pane Navigation #
#######################################################################
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
#######################################################################
# Quick pane selection #
#######################################################################
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
#######################################################################
# Pane resizing #
#######################################################################
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
#######################################################################
# Pane Movement #
#######################################################################
bind-key C-j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key C-s command-prompt -p "send pane to:" "join-pane -t '%%'"
#######################################################################
# Set the default terminal mode to 256color mode #
#######################################################################
set -g default-terminal "tmux"
set-option -sa terminal-overrides ",xterm*:Tc"
#set-option -sa terminal-features ",xterm*:RGB"
#######################################################################
# Enable activity alerts #
#######################################################################
setw -g monitor-activity on
set -g visual-activity on
#######################################################################
# Working ctrl+left/right in tmux on ubuntu #
#######################################################################
set-window-option -g xterm-keys on
#######################################################################
# VI mode for tmux #
#######################################################################
setw -g mode-keys vi
set-option -g status-keys vi
set-option -g bell-action any
set-option -g set-titles on
set-option -g set-titles-string '#H:#S.#I.#P #W #T' # window number,program name,active (or not)
set-option -g visual-bell off
set -g history-limit 100000
#######################################################################
# Status bar format and style #
#######################################################################
set -g status-interval 5
set -g status-fg white
set -g status-bg colour235
set -g status-left ''
set -g status-right-length 60
set -g status-right '#[fg=green,bg=default]#(echo $USER) #[fg=white,bg=default]%l:%M:%S %p#[default] #[fg=yellow]%a %Y-%m-%d'
#######################################################################
# Status bar tabs #
#######################################################################
setw -g window-status-format "#[fg=white]#[bg=colour237] #I #[bg=colour237]#[fg=white] #W "
setw -g window-status-current-format "#[bg=blue]#[fg=white,bold] *#I #[fg=white,bold]#[bg=blue] [#W] "
bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle
#bind-key -T copy-mode-vi y copy-pipe "xclip -sel clip -i"
set -g mouse on
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment