# Increase scrollback buffer size set -g history-limit 10000 # Start window and pane numbering from 1 for easier switching set -g base-index 1 setw -g pane-base-index 1 # Allow automatic renaming of windows set -g allow-rename on # set -g automatic-rename off # Renumber windows when one is removed. set -g renumber-windows on # Improve colors set -g default-terminal "${TERM}" # Enable undercurl set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # Enable undercurl colors set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # Allow tmux to set the terminal title set -g set-titles on # Monitor window activity to display in the status bar setw -g monitor-activity on # A bell in another window should cause a bell in the current window set -g bell-action any # Don't show distracting notifications set -g visual-bell off set -g visual-activity off # Focus events enabled for terminals that support them set -g focus-events on # Useful when using sharing a session with different size terminals setw -g aggressive-resize on # don't detach tmux when killing a session set -g detach-on-destroy off # address vim mode switching delay (http://superuser.com/a/252717/65504) set -s escape-time 0 set -as terminal-features ",*:RGB" # set -g default-terminal "tmux-256color" set -ag terminal-overrides ",xterm-256color:RGB" #-------------------------------------------------------------------------- # Status line #-------------------------------------------------------------------------- # Status line customisation set-option -g status-left-length 100 # set-option -g status-right-length 100 set-option -g status-left " #{session_name} " set-option -g status-right " " # set-option -g status-style "fg=#7C7D83 bg=#18242e" # ayu # set-option -g status-style "fg=#7C7D83 bg=#16151d" # tokyo night # set-option -g status-style "fg=#7C7D83 bg=#24282f" # one dark set-option -g status-style "fg=#7C7D83 bg=default" # gruvbox dark # set-option -g status-style "fg=#828bb1 bg=default" # default will set the background to transparent set-option -g window-status-format "#{window_index}:#{window_name}#{window_flags} " # window_name -> pane_current_command set-option -g window-status-current-format "#{window_index}:#{window_name}#{window_flags} " set-option -g window-status-current-style fg=#fabd2f #for gruvbox use: dcc7a0 or aeb6ff #-------------------------------------------------------------------------- # Key Bindings #-------------------------------------------------------------------------- # -r means that the bind can repeat without entering prefix again # -n means that the bind doesn't use the prefix # Smart pane switching with awareness of vim splits is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"' bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" # Switch between two most recently used windows bind Space last-window # switch between two most recently used sessions bind b switch-client -l # open lazygit in a new window with prefix+g bind-key g new-window -n lazygit -c "#{pane_current_path}" "lazygit" # open an application in a new window with prefix+o, and allow me to provide the app name bind-key o command-prompt -p "open app: " "new-window '%%'" # show a prompt to kill a window by id with prefix+X bind-key X command-prompt -p "kill window: " "kill-window -t '%%'" # use prefix+| (or prefix+\) to split window horizontally and prefix+- or # (prefix+_) to split vertically also use the current pane path to define the # new pane path bind | split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}" # change the path for newly created windows bind c new-window -c "#{pane_current_path}" bind C-e display-popup -E "\ tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\ sed '/^$/d' |\ fzf --reverse --header jump-to-session |\ xargs tmux switch-client -t" # search windows in current session bind C-f display-popup -E "\ tmux list-windows -F '#{window_index} #{window_name}' |\ sed '/^$/d' |\ fzf --reverse --header jump-to-window |\ cut -d ' ' -f 1 |\ xargs tmux select-window -t" # Move tmux status bar to top bind-key C-k run-shell "tmux set-option -g status-position top;" # Move tmux status bar to bottom bind-key C-j run-shell "tmux set-option -g status-position bottom;" unbind r unbind '"' unbind % bind r source-file ~/.tmux.conf set -g mouse on bind \\ split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}" set -g base-index 1 set -g pane-base-index 1 # set-window-option -g pane-base-index 1 set-option -g renumber-windows on # Makes that when killing a session tmux doesn't detach set-option -g detach-on-destroy off set-option -sg escape-time 0 set -g prefix C-s setw -g mode-keys vi bind-key h select-pane -L bind-key j select-pane -D bind-key k select-pane -U bind-key l select-pane -R bind-key b set-option status set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum' set -g @plugin 'christoomey/vim-tmux-navigator' # set -g @plugin 'niksingh710/minimal-tmux-status' set -g status-position bottom set -g @continuum-restore 'on' run '~/.tmux/plugins/tpm/tpm'