Skip to content

Instantly share code, notes, and snippets.

@quyleanh
Created June 7, 2022 18:05
Show Gist options
  • Save quyleanh/a6b3019bed394d5aa2570bda0a60b8b3 to your computer and use it in GitHub Desktop.
Save quyleanh/a6b3019bed394d5aa2570bda0a60b8b3 to your computer and use it in GitHub Desktop.
Default config for tmux
# Bind escape to copy mode
#unbind [
#bind Escape copy-mode
# p = paste
unbind p
bind p paste-buffer
# no escape delay
set -sg escape-time 0
# remap prefix to Control + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Start window numbering at 1 (default => 0)
set -g base-index 1
set -g clock-mode-style 24
# Renumber windows after removing one
set -g renumber-windows on
# use 256 colors
#set -g default-terminal "tmux-256color-italic"
#set-option -ga terminal-overrides ",xterm-256color-italic:Tc"
#set -g default-terminal "tmux-256color-italic"
#set -g default-terminal "tmux-256color"
# checkhealth
set -g default-terminal "screen-256color"
set-option -sa terminal-overrides ',XXX:RGB'
# change tmux bar colors
#set -g status-bg '#222222'
#set -g status-fg '#aaaaaa'
# Keep plenty of history for scrollback
set -g history-limit 50000
# mouse
set -g mouse off
bind m split-window -h 'reattach-to-user-namespace mutt'
# Act like vim in copy mode
set -g status-keys vi
setw -g mode-keys vi
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
# 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 C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
#bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Secondary binding for C-l to retain redraw
bind C-l send-keys 'C-l'
# Easy rotating of panes
bind C-k swap-pane -U
# increase display time
set -g display-panes-time 1200
# status bar stuff
#set -g status-left-length 40
# Simplify status bar display.
#set -g status-left '[#S]'
#set -g status-right "%I:%M %p "
# set -g status-right "#[fg=red][44%%]#[default] - %I:%M %p "
# Dismiss current pane to background window
bind b break-pane -d
bind-key j command-prompt -p "join pane from: " "join-pane -h -s '%%'"
# more intuitive keybindings for splitting
#bind \ split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Easy return to Vim from tmux runner zoom runner pane
bind C-p run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys ':VtrZoomRunnerPane' 'C-m') || tmux send-keys 'C-c' && tmux select-pane -l"
# Make C-j display a selectable list of sessions
bind C-j choose-tree
# Keep window names as I set them
setw -g automatic-rename off
# Reload tmux.conf with prefix-r
bind C-r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"
# Provide access to the clipboard for pbpaste, pbcopy (details: http://goo.gl/DN82E)
#set-option -g default-command "reattach-to-user-namespace -l zsh -l"
set-window-option -g automatic-rename on
# Enable VI mode
set-window-option -g mode-keys vi
# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on
# bind resizing of panes to H,J,K,L (resizes by steps of 10 lines/columns)
# # Note, bindings are repeatable (within the default 500ms time limit) so that
# # you don't have to keep entering the prefix. (Prefix-H-H-H resizes by 15)
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Down resize-pane -D 1
bind -n S-Up resize-pane -U 1
unbind -n C-Left
unbind -n C-Down
unbind -n C-Up
unbind -n C-Right
bind -n C-Left resize-pane -L 10
bind -n C-Right resize-pane -R 10
bind -n C-Down resize-pane -D 5
bind -n C-Up resize-pane -U 5
#source-file ~/.tmux/themes/themepack/basic.tmuxtheme
#run-shell ~/.tmux/plugins/tmux-copycat/copycat.tmux
#run-shell ~/.tmux/plugins/tmux-cpu/cpu.tmux
#run-shell ~/.tmux/plugins/tmux-better-mouse-mode/scroll_copy_mode.tmux
#run-shell ~/.tmux/plugins/tmux-sidebar/sidebar.tmux
#set -g @sidebar-tree-command 'tree -C'
# basic.tmuxtheme
# Status update interval
set -g status-interval 1
# Basic status bar colors
set -g status-style bg=black,fg=cyan
# Left side of status bar
set -g status-left-style bg=black,fg=green
set -g status-left-length 40
set -g status-left "#S #[fg=white]» #[fg=yellow]#I #[fg=cyan]#P"
# Right side of status bar
set -g status-right-style bg=black,fg=cyan
set -g status-right-length 40
set -g status-right "#(free | grep Mem | awk '{printf(\"%.2f%\", 100*$3/$2)}') « #[fg=yellow]%H:%M:%S %d-%b-%y"
#set -g status-right "CPU: #{cpu_temp_icon} #{cpu_temp} #H #[fg=white]« #[fg=yellow]%H:%M:%S #[fg=green]%d-%b-%y"
# Window status
set -g window-status-format " #I:#W#F "
set -g window-status-current-format " #I:#W#F "
# Current window status
set -g window-status-current-style bg=red,fg=black
# Window with activity status
set -g window-status-activity-style bg=black,fg=yellow
# Window separator
set -g window-status-separator ""
# Window status alignment
set -g status-justify centre
# Pane border
set -g pane-border-style bg=black,fg=default
# Active pane border
set -g pane-active-border-style bg=black,fg=green
# Pane number indicator
set -g display-panes-colour black
set -g display-panes-active-colour black
# Clock mode
set -g clock-mode-colour red
set -g clock-mode-style 24
# Message
set -g message-style bg=black,fg=default
# Command message
set -g message-command-style bg=black,fg=default
# Mode
set -g mode-style bg=red,fg=default
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment