###################### ### SETTINGS ### ###################### # loud or quiet? set -g visual-activity off set -g visual-bell off set -g visual-silence off setw -g monitor-activity off set -g bell-action none # enable vi mode keys setw -g mode-keys vi # mouse control (clickable windows, panes, resizable panes) setw -g mouse on set -g mouse on # clipboard control set -g set-clipboard on set -g history-limit 20000 # screen colors set -g default-terminal "tmux-256color" # Start with index 1 set -g base-index 1 setw -g pane-base-index 1 # Automatically set window title set-window-option -g automatic-rename on set-option -g set-titles on ###################### ### KEYBINDS ### ###################### # Config that is very close to a i3 window manager's keybinding. # Set new prefix # Note : you can press super key by set M. # (tested with tty only) set -g prefix C-a bind C-a send-prefix # First remove *all* keybindings unbind -a # Basic bindings bind ? list-keys bind d detach-client bind D choose-client bind : command-prompt #bind \ show-messages # Copy mode bind c copy-mode # clipboard control bind P paste-buffer bind -T copy-mode-vi v send-keys -X begin-selection bind -T copy-mode-vi y send-keys -X copy-selection bind -T copy-mode-vi r send-keys -X rectangle-toggle bind y run-shell -b "tmux show-buffer | xclip -sel clip" \; display-message "Copied tmux buffer to system clipboard" # Refresh client bind R refresh-client \; display-message "Refresh already" # Rename window bind , command-prompt "rename-window %%" # Clock mode bind t clock-mode # Show pane info bind i display-panes # Config Reloads bind r source-file ~/.tmux.conf \; display-message "Config reloaded" # resize controls bind -r h resize-pane -L 2 \; display-message "Resize left" bind -r l resize-pane -R 2 \; display-message "Resize right" bind -r k resize-pane -U 2 \; display-message "Resize up" bind -r j resize-pane -D 2 \; display-message "Resize down" # zoom control bind -n M-f resize-pane -Z # split panes using | and -, make sure they open in the same path bind | split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}" # Change layouts bind o rotate-window bind Space next-layout bind K swap-pane -s {up-of} bind J swap-pane -s {down-of} bind H swap-pane -s {left-of} bind L swap-pane -s {right-of} # Choose Window bind w choose-window # Change current pane to next window bind 1 join-pane -t :1 bind 2 join-pane -t :2 bind 3 join-pane -t :3 bind 4 join-pane -t :4 bind 5 join-pane -t :5 bind 6 join-pane -t :6 bind 7 join-pane -t :7 bind 8 join-pane -t :8 bind 9 join-pane -t :9 bind 0 join-pane -t :10 # Switch windows alt+number bind -n M-1 if-shell 'tmux select-window -t :1' '' 'new-window -t :1' bind -n M-2 if-shell 'tmux select-window -t :2' '' 'new-window -t :2' bind -n M-3 if-shell 'tmux select-window -t :3' '' 'new-window -t :3' bind -n M-4 if-shell 'tmux select-window -t :4' '' 'new-window -t :4' bind -n M-5 if-shell 'tmux select-window -t :5' '' 'new-window -t :5' bind -n M-6 if-shell 'tmux select-window -t :6' '' 'new-window -t :6' bind -n M-7 if-shell 'tmux select-window -t :7' '' 'new-window -t :7' bind -n M-8 if-shell 'tmux select-window -t :8' '' 'new-window -t :8' bind -n M-9 if-shell 'tmux select-window -t :9' '' 'new-window -t :9' bind -n M-0 if-shell 'tmux select-window -t :10' '' 'new-window -t :10' # Kill Selected Pane bind Q kill-pane # present a menu of URLs to open from the visible pane. sweet. bind u capture-pane \;\ save-buffer /tmp/tmux-buffer \;\ split-window -l 10 "urlview /tmp/tmux-buffer" # Smart pane switching with awareness of Vim splits. # See: https://github.com/christoomey/vim-tmux-navigator is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" bind-key -n M-h if-shell "$is_vim" "send-keys M-h" "select-pane -L" bind-key -n M-j if-shell "$is_vim" "send-keys M-j" "select-pane -D" bind-key -n M-k if-shell "$is_vim" "send-keys M-k" "select-pane -U" bind-key -n M-l if-shell "$is_vim" "send-keys M-l" "select-pane -R" #bind-key -n M-\ if-shell "$is_vim" "send-keys M-\\" "select-pane -l" bind-key -T copy-mode-vi M-h select-pane -L bind-key -T copy-mode-vi M-j select-pane -D bind-key -T copy-mode-vi M-k select-pane -U bind-key -T copy-mode-vi M-l select-pane -R #bind-key -T copy-mode-vi M-\ select-pane -l # fzf binding set -g @tmux-fzf-launch-key 'f' ###################### ### DESIGN CHANGES ### ###################### # various plugins set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'sainnhe/tmux-fzf' # note: fzf bound to 'F' set -g @plugin 'odedlaz/tmux-onedark-theme' # solarized plugin and options # set -g @plugin 'seebi/tmux-colors-solarized' # set -g @colors-solarized '256' (the default) # set -g @colors-solarized 'dark' # set -g @colors-solarized 'light' # set -g @colors-solarized 'base16' # tmux themepack # set -g @plugin 'jimeh/tmux-themepack' # set -g @themepack 'basic' # set -g @themepack 'powerline/default/yellow' # set -g @themepack 'powerline/default/orange' # set -g @themepack 'powerline/block/blue' # set -g @themepack 'powerline/block/cyan' # set -g @themepack 'powerline/default/gray' # set -g @themepack 'powerline/double/yellow' # keep at bottom run -b '~/.tmux/plugins/tpm/tpm'