# # By Nicholas Marriott. Public domain. # but -now- me. # ########################################################################### ################# MISC. ################################################### ########################################################################### ########################################################################### # Some tweaks to the status line set -g status-right "%H:%M" set -g window-status-current-style "underscore" # If running inside (nested) tmux ($TMUX is set), then change the status line to red %if #{TMUX} set -g status-bg red %endif # 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 unbind r bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" ########## CLIPBOARD ########## unbind -T copy-mode-vi Space; #Default for begin-selection unbind -T copy-mode-vi Enter; #Default for copy-selection 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 unbind t 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}" # if-shell "true" { # if-shell "#{?monitor-silence,true,false}" { # set monitor-silence 0 # } # if-shell "#{?monitor-silence,false,true}" { # set monitor-silence 10 # } # display "monitor-silence #{?monitor-silence,on,off} #{monitor-silence}" # } # Toggle synchronized panes (sending keys to every pane) unbind y bind y set synchronize-panes\; display 'synchronize-panes #{?synchronize-panes,on,off}' # Paste from tmux buffer unbind p 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'" ########## SPLIT AND SWAP ########### # Splitting unbind v bind v split-window -h -c "#{pane_current_path}" unbind h bind h split-window -v -c "#{pane_current_path}" # Swapping left and right a la vim unbind -n M-H unbind -n M-L 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 ## Default keybindings for resizing unbind C-Up unbind C-Left unbind C-Down unbind C-Right unbind M-Up unbind M-Left unbind M-Down unbind M-Right # Join and break windows unbind j bind j command-prompt -1p "Take window:" "join-pane -s %%" unbind J bind J command-prompt -1p "Send to window:" "join-pane -t \:%% ; select-window -l" # Break pane without losing focus unbind b bind b break-pane -t : # Reset length and shit unbind z bind z select-layout main-vertical ########## NAVIGATION ########## # Pane navigating with h|j|k|l a la vim unbind -n M-h unbind -n M-j unbind -n M-k unbind -n M-l 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 unbind -n M-u unbind -n M-i bind -n M-u previous-window bind -n M-i next-window # Session navigeting with S-M-u|i unbind -n M-y unbind -n M-o bind -n M-U switch-client -p bind -n M-I switch-client -n ########## Windows ########## # Rename window and open new window unbind n # DEFAULT KEY: move to next window unbind N unbind w # DEFAULT KEY: change current window interactively aka choose-tree -zW bind n command-prompt "rename-window '%%'" bind N command-prompt "rename-session '%%'" # Start new window where tmux started, will be home because of xmonad bind w new-window -c "#{pane_current_path}" #-c "#{pane_current_path}" bind W new-session -c "$HOME" # Show tree unbind S bind S choose-tree -Z # Turn the mouse on, but without copy mode dragging # set -g mouse on # unbind -n MouseDrag1Pane # unbind -T copy-mode MouseDrag1Pane # Menu for mounting and ejecting devices. unbind E bind E display-menu -T "#[align=centre]#I:#W" -x W -y W '' Mount 0 "display-popup -E 'amount'"