# Special thanks to Nicholas Marriott. # Enable RGB color if running in xterm set-option -sa terminal-overrides ",xterm*:Tc" # Change the default $TERM to xterm-256color # Necessary because vim ctrl arrows must be defined through TERM set -g default-terminal "xterm-256color" set-window-option -g xterm-keys on # No bells at all set -g bell-action none # Keep windows around after they exit set -g remain-on-exit off # More history lines set -g history-limit 16384 # Base window is Numero Uno set -g base-index 1 set-window-option -g pane-base-index 1 # Set vi mode when copying set-window-option -g mode-keys vi # compatibility with vim for focus based events set -g focus-events on # KEYBINDINGS # Reload config file bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded ~/.tmux.conf" # Clipboard bind -T copy-mode-vi v send-keys -X begin-selection bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -r -selection clipboard" bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -r -selection clipboard" # Unbind ESC set -sg escape-time 0 # Toggle status bar bind t set-option status # Toggle monitoring window activity bind m set monitor-activity\; display 'monitor-activity #{?monitor-activity,on,off}' bind M run-shell "tmux set monitor-silence #{?monitor-silence,0,10}"\; display "monitor-silence #{?monitor-silence,on,off}" # Toggle synchronized panes (sending keys to every pane) bind y set synchronize-panes\; display 'synchronize-panes #{?synchronize-panes,on,off}' # Paste from tmux buffer bind p paste-buffer # Kill all windows bind x confirm -p "Kill Pane?" kill-pane bind X confirm -p "Kill Window?" kill-window bind M-x confirm -p "Kill Session?" kill-session bind M-X confirm -p "Kill Server?" kill-server # Restart pane bind k run -C "respawn-pane -k; send-keys !! 'C-j'" # Splitting bind v split-window -h -c "#{pane_current_path}" bind h split-window -v -c "#{pane_current_path}" # Swapping left and right a la vim bind -n M-H swap-pane -U bind -n M-L swap-pane -D ## Resizing panes bind -r C-H resize-pane -L 5 bind -r C-J resize-pane -D 5 bind -r C-K resize-pane -U 5 bind -r C-L resize-pane -R 5 # Join and break windows bind j command-prompt -1p "Take window:" "join-pane -s %%" bind J command-prompt -1p "Send to window:" "join-pane -t \:%% ; select-window -l" # Break pane without losing focus bind b break-pane -t : # Reset length and shit bind z select-layout main-vertical # Pane navigating with h|j|k|l a la vim bind -n -N "select leftwards pane" M-h select-pane -L bind -n -N "select downwards pane" M-j select-pane -D bind -n -N "select upwards pane" M-k select-pane -U bind -n -N "select rightwards pane" M-l select-pane -R # Window navigating with M-u|i bind -n M-u previous-window bind -n M-i next-window # Session navigeting with S-M-u|i bind -n M-U switch-client -p bind -n M-I switch-client -n # Renaming bind n command-prompt "rename-window '%%'" bind N command-prompt "rename-session '%%'" # Starting new windows bind w new-window -c "$HOME" bind W new-session -c "$HOME" # Show tree bind S choose-tree -Z # Menu for mounting and ejecting devices. bind E display-menu -T "#[align=centre]#I:#W" -x W -y W '' Mount 0 "display-popup -E 'amount'" # Theme #+---------+ #+ Options + #+---------+ set -g status-interval 1 set -g status on #+--------+ #+ Status + #+--------+ #+--- Layout ---+ set -g set-titles on set -g status-position top set -g window-status-current-style "underscore" set -g status-justify left set -g status-left "#[fg=black,bg=blue,bold] #S #[fg=blue,bg=black,nobold,noitalics,nounderscore]" set -g status-right "#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %H:%M #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H " #+--- Colors ---+ set -g status-style bg=black,fg=white #+-------+ #+ Panes + #+-------+ set -g pane-border-style bg=default,fg=brightblack set -g pane-active-border-style bg=default,fg=blue set -g display-panes-colour black set -g display-panes-active-colour brightblack #+------------+ #+ Clock Mode + #+------------+ setw -g clock-mode-colour cyan #+----------+ #+ Messages + #+---------+ set -g message-style bg=brightblack,fg=cyan set -g message-command-style bg=brightblack,fg=cyan #+--- Windows ---+ set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]" set -g window-status-current-format "#[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#I #[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#W #F #[fg=cyan,bg=black,nobold,noitalics,nounderscore]" set -g window-status-separator ""