Skip to content

Instantly share code, notes, and snippets.

@ugovaretto
Last active July 21, 2025 08:21
Show Gist options
  • Save ugovaretto/68da4e4794b794411bfcc4147e38b4dc to your computer and use it in GitHub Desktop.
Save ugovaretto/68da4e4794b794411bfcc4147e38b4dc to your computer and use it in GitHub Desktop.
TMUX config
# Rebind Prefix to CTRL-S
set-option -g prefix C-s
unbind C-b
bind C-a send-prefix
# Vim navigation
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
# Start all numbering at 1 instead of 0 for better key reachability
set-option -g base-index 1
set-option -g pane-base-index 1
# Reload config file (if changed)
bind r source-file ~/.config/tmux/tmux.conf
# Enable mouse support
set-option -g mouse on
# Increase history limit, as we want an "almost" unlimited buffer.
# May be set to something even higher, like 250k
set-option -g history-limit 100000
# Fix Terminal Title display, to not contain tmux specic information
set-option -g set-titles on
set-option -g set-titles-string "#{pane_title}"
# Open new windows and panes in the current working directory of the active
# pane.
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
# Enable extended support for some more sophisticated terminal emulator
# features. Disable them if they are causing problems!
set-option -s focus-events on
set-option -s extended-keys on
# Disable waiting time when pressing escape, for smoother Neovim usage. Disable
# if differentiation between function and meta keycombination is needed.
set-option -s escape-time 0
##
# Styling
##
# gruvbox material colorscheme (mostly)
RED="#ea6962"
GREEN="#a9b665"
YELLOW="#d8a657"
BLUE="#7daea3"
MAGENTA="#d3869b"
CYAN="#89b482"
BLACK="#1d2021"
DARK_GRAY="#32302F"
LIGHT_GRAY="#4F4946"
BG="#32302F"
FG="#d4be98"
# Nerdfont characters
HALF_ROUND_OPEN="#(printf '\uE0B6')"
HALF_ROUND_CLOSE="#(printf '\uE0B4')"
TRIANGLE_OPEN="#(printf '\uE0B2')"
TRIANGLE_CLOSE="#(printf '\uE0B0')"
# Uncomment to move statusbar to the top
set-option -g status-position top
# Basic colors of the Statusbar
set-option -g status-style bg=${BG},fg=${FG}
# Show the window list centered between the left and the right section
set-option -g status-justify centre
# Style and set contents on the left section
set-option -g status-left "\
#[fg=${LIGHT_GRAY},bg=default]${HALF_ROUND_OPEN}\
#[bg=${LIGHT_GRAY},fg=${YELLOW}]#S \
#[fg=${LIGHT_GRAY},bg=default]${TRIANGLE_CLOSE}\
"
# Style and set contents on the right section
set-option -g status-right "\
#[fg=${LIGHT_GRAY},bg=default]${TRIANGLE_OPEN}\
#[bg=${LIGHT_GRAY},fg=${CYAN}] #h\
#[fg=${LIGHT_GRAY},bg=default]${HALF_ROUND_CLOSE}\
"
# Set max length of left and right section
set-option -g status-left-length 100
set-option -g status-right-length 100
# Style and set content for the inactive windows
set-option -g window-status-format "\
\
#I\
#[fg=${MAGENTA}]:\
#[fg=default]#W\
\
"
# Style and set content for the active windows
set-option -g window-status-current-format "\
#[fg=${LIGHT_GRAY},bg=default]${HALF_ROUND_OPEN}\
#[bg=${LIGHT_GRAY},fg=default]#I\
#[fg=${RED}]:\
#[fg=default]#W\
#[fg=${LIGHT_GRAY},bg=default]${HALF_ROUND_CLOSE}\
"
# Remove the separator between window list items, as we already have spacing
# "around" inactive items
set-option -g window-status-separator ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment