Created
April 21, 2025 15:56
-
-
Save jvegaf/d202cde5eab2ec671b0b68293fe321d1 to your computer and use it in GitHub Desktop.
tmux config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set -g escape-time 10 | |
set-option -sa terminal-overrides ",xterm*:Tc" | |
set -g mouse on | |
set -g status-interval 5 | |
# set -s set-clipboard external | |
set -as terminal-features ',rxvt-unicode-256color:clipboard' | |
# Set the control character to Ctrl+Spacebar (instead of Ctrl+B) | |
unbind-key C-b | |
set -g prefix M-a | |
bind-key M-a send-prefix | |
set-option -g allow-rename on | |
set-option -g set-titles on | |
set-option -g set-titles-string '#T' | |
bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '" | |
unbind r | |
bind r source-file ~/.tmux.conf | |
# unbind % | |
# bind | split-window -h | |
bind-key C-Tab next-window | |
bind-key C-S-Tab previous-window | |
# Set new panes to open in current directory | |
bind c new-window -c "#{pane_current_path}" | |
bind '"' split-window -c "#{pane_current_path}" | |
unbind . | |
bind . split-window -h -c "#{pane_current_path}" | |
bind e kill-window | |
bind x kill-pane | |
# set-window-option -g mode-keys vi | |
setw -g mode-keys vi | |
set -g status-keys vi | |
bind-key -T copy-mode-vi 'v' send -X begin-selection # start selecting text with "v" | |
bind-key -T copy-mode-vi 'y' send -X copy-selection # copy text with "y" | |
# Start windows and panes at 1, not 0 | |
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 | |
# Vim style pane selection | |
bind h select-pane -L | |
bind j select-pane -D | |
bind k select-pane -U | |
bind l select-pane -R | |
# Use Alt-arrow keys without prefix key to switch panes | |
bind -n M-Left select-pane -L | |
bind -n M-Right select-pane -R | |
bind -n M-Up select-pane -U | |
bind -n M-Down select-pane -D | |
# Alt vim keys to switch windows | |
bind -n M-H previous-window | |
bind -n M-L next-window | |
# 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|l?n?vim?x?|fzf)(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' | |
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' | |
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ | |
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" | |
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ | |
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" | |
bind-key -T copy-mode-vi 'C-h' select-pane -L | |
bind-key -T copy-mode-vi 'C-j' select-pane -D | |
bind-key -T copy-mode-vi 'C-k' select-pane -U | |
bind-key -T copy-mode-vi 'C-l' select-pane -R | |
bind-key -T copy-mode-vi 'C-\' select-pane -l | |
# List of plugins | |
set -g @plugin 'tmux-plugins/tpm' | |
set -g @plugin 'tmux-plugins/tmux-sensible' | |
set -g @plugin 'caiogondim/maglev' | |
set -g @plugin 'tmux-plugins/tmux-resurrect' | |
set -g @plugin 'tmux-plugins/tmux-continuum' | |
set -g @plugin 'tmux-plugins/tmux-yank' | |
set -g @plugin 'tmux-plugins/tmux-pain-control' | |
set -g @plugin 'tmux-plugins/tmux-copycat' | |
set -g @plugin 'tmux-plugins/tmux-open' | |
set -g @plugin 'tmux-plugins/tmux-battery' | |
set -g @plugin 'tmux-plugins/tmux-cpu' | |
set -g @plugin 'christoomey/vim-tmux-navigator' | |
set -g @plugin 'tmux-plugins/tmux-net-speed' | |
set -g @plugin 'alexwforsythe/tmux-which-key' | |
# NOTE: you can use vars with $<var> and ${<var>} as long as the str is double quoted: "" | |
# WARNING: hex colors can't contain capital letters | |
# --> Catppuccin | |
thm_bg="#1e1e28" | |
thm_fg="#dadae8" | |
thm_cyan="#c2e7f0" | |
thm_black="#15121c" | |
thm_gray="#332e41" | |
thm_magenta="#c6aae8" | |
thm_pink="#e5b4e2" | |
thm_red="#e38c8f" | |
thm_green="#b1e3ad" | |
thm_yellow="#ebddaa" | |
thm_blue="#a4b9ef" | |
thm_orange="#f9c096" | |
thm_black4="#575268" | |
# ----------------------------=== Theme ===-------------------------- | |
# status | |
set -g status-position top | |
set -g status "on" | |
set -g status-bg "${thm_bg}" | |
set -g status-justify "left" | |
set -g status-left-length "100" | |
set -g status-right-length "100" | |
# messages | |
set -g message-style fg="${thm_cyan}",bg="${thm_gray}",align="centre" | |
set -g message-command-style fg="${thm_cyan}",bg="${thm_gray}",align="centre" | |
# panes | |
set -g pane-border-style fg="${thm_gray}" | |
set -g pane-active-border-style fg="${thm_blue}" | |
# windows | |
setw -g window-status-activity-style fg="${thm_fg}",bg="${thm_bg}",none | |
setw -g window-status-separator "" | |
setw -g window-status-style fg="${thm_fg}",bg="${thm_bg}",none | |
# --------=== Statusline | |
set -g status-left "" | |
set -g status-right "#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #W #{?client_prefix,#[fg=$thm_red],#[fg=$thm_green]}#[bg=$thm_gray]#{?client_prefix,#[bg=$thm_red],#[bg=$thm_green]}#[fg=$thm_bg] #[fg=$thm_fg,bg=$thm_gray] #S " | |
# current_dir | |
setw -g window-status-format "#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #W " | |
# setw -g window-status-current-format "#[fg=$thm_bg,bg=$thm_orange] #I #[fg=$thm_fg,bg=$thm_bg] #{b:pane_current_path} " | |
# parent_dir/current_dir | |
# setw -g window-status-format "#[fg=colour232,bg=colour111] #I #[fg=colour222,bg=colour235] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) " | |
setw -g window-status-current-format "#[fg=colour232,bg=$thm_orange] #I #[fg=colour255,bg=colour237] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) " | |
# --------=== Modes | |
setw -g clock-mode-colour "${thm_blue}" | |
setw -g mode-style "fg=${thm_pink} bg=${thm_black4} bold" | |
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) | |
setenv -g TMUX_PLUGIN_MANAGER_PATH "$HOME/.tmux/plugins/" | |
if "test ! -d ~/.tmux/plugins/tpm" \ | |
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" | |
run '~/.tmux/plugins/tpm/tpm' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment