tmux configuration redesign

This commit is contained in:
2026-07-18 13:56:41 +05:30
parent bd0fca3af6
commit de44196750
3 changed files with 154 additions and 79 deletions
+38 -79
View File
@@ -71,42 +71,49 @@ tmux_conf_24b_colour=auto
# - tmux_conf_theme_synchronized # - tmux_conf_theme_synchronized
tmux_conf_theme=enabled tmux_conf_theme=enabled
# Carbonfox Color Palette # Classic Monokai Color Palette
color_bg="#161616" color_bg="#272822"
color_fg="#f2f4f8" color_fg="#f8f8f2"
color_black="#282828" color_black="#1e1f1c"
color_gray="#353535" color_gray="#3e3d32"
color_light_gray="#484848" color_light_gray="#75715e"
color_red="#ee5396" color_red="#f92672"
color_green="#25be6a" color_green="#a6e22e" # Monokai Green (Session & Normal)
color_teal="#3ddbd9" color_teal="#a6e22e" # Monokai Green
color_blue="#78a9ff" color_blue="#66d9ef" # Monokai Cyan/Blue
color_purple="#be95ff" color_purple="#ae81ff" # Monokai Purple (Host & Visual)
color_cyan="#33b1ff" color_cyan="#66d9ef" # Monokai Cyan (Active Window)
color_white="#dfdfe0" color_yellow="#e6db74" # Monokai Yellow (Date/Time)
color_white="#f8f8f2"
color_accent="$color_blue" color_accent="$color_cyan" # Active window is Monokai Cyan
color_primary="default" color_primary="default"
color_secondary="$color_gray" color_secondary="$color_gray"
color_fg_primary="$color_fg" color_fg_primary="$color_fg"
color_fg_secondary="$color_white" color_fg_secondary="$color_white"
# Curve variables bound to palette colors
color_blue_curve="$color_purple"
color_cyan_curve="$color_yellow"
color_purple_curve="$color_purple"
window_status_current_bg="default" window_status_current_bg="default"
window_status_current_fg="$color_accent" window_status_current_fg="$color_accent"
theme_mode_bg="$color_accent" theme_mode_bg="$color_accent"
theme_mode_fg="$color_bg" theme_mode_fg="$color_bg"
tmux_conf_theme_window_fg="$color_fg_primary" tmux_conf_theme_window_fg="#a5afc2"
# window style # window style
tmux_conf_theme_window_bg="default" tmux_conf_theme_window_bg="default"
# highlight focused pane, possible values are: # highlight focused pane, possible values are:
# - true # - true
# - false (default) # - false (default)
tmux_conf_theme_highlight_focused_pane=false tmux_conf_theme_highlight_focused_pane=true
# focused pane colours: # focused pane colours:
tmux_conf_theme_focused_pane_fg="#f2f4f8"
tmux_conf_theme_focused_pane_bg="default" tmux_conf_theme_focused_pane_bg="default"
# pane border style, possible values are: # pane border style, possible values are:
@@ -174,7 +181,7 @@ tmux_conf_theme_window_status_attr="none"
# tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" # tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" #tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}" # tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_format="#[fg=$color_gray,bg=default]#[fg=$color_fg,bg=$color_gray]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}#[fg=$color_gray,bg=default]" tmux_conf_theme_window_status_format="#[fg=$color_light_gray,bg=default]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window current status style # window current status style
# - built-in variables are: # - built-in variables are:
@@ -189,7 +196,7 @@ tmux_conf_theme_window_status_format="#[fg=$color_gray,bg=default]#[fg=$color
# tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" # tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" #tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}" # tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_format="#[fg=$color_accent,bg=default]#[fg=$color_bg,bg=$color_accent,bold]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}#[fg=$color_accent,bg=default]" tmux_conf_theme_window_status_current_format="#[fg=$color_accent,bg=default,bold]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_fg="$window_status_current_fg" tmux_conf_theme_window_status_current_fg="$window_status_current_fg"
tmux_conf_theme_window_status_current_bg="$window_status_current_bg" tmux_conf_theme_window_status_current_bg="$window_status_current_bg"
@@ -249,18 +256,19 @@ tmux_conf_theme_right_separator_sub=""
# - #{username} # - #{username}
# - #{username_ssh} # - #{username_ssh}
tmux_conf_theme_status_left=" ❐ #S #[fg=$color_accent,bg=default,none]" tmux_conf_theme_status_left=" #[fg=$color_teal,bg=default,bold]❐ #S #[fg=$color_gray,bg=default,none]"
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized} |#[fg=default,bg=default] #[fg=$color_secondary,bg=default,none]#[fg=$color_fg,bg=$color_secondary,none]󰔚 #{?uptime_d,#{uptime_d}d,}#{?uptime_h,#{uptime_h}h,}#{?uptime_m,#{uptime_m}m,}#[fg=$color_secondary,bg=default,none] |#[fg=default,bg=default] #[fg=$color_purple,bg=default,none]#[fg=$color_bg,bg=$color_purple,bold]󰊪 #{username}#{root}@#{hostname}#[fg=$color_purple,bg=default,none] "
# status left style # status left style
tmux_conf_theme_status_left_fg="$color_bg" tmux_conf_theme_status_left_fg="default"
tmux_conf_theme_status_left_bg="$color_accent" tmux_conf_theme_status_left_bg="default"
tmux_conf_theme_status_left_attr="bold" tmux_conf_theme_status_left_attr="none"
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized}#{?pane_in_mode,#{?selection_active,#[fg=$color_blue,bg=default,bold] VISUAL,#[fg=$color_green,bg=default,bold] NORMAL},} | #[fg=$color_fg,bg=default,none]󰔚 #{?uptime_d,#{uptime_d}d,}#{?uptime_h,#{uptime_h}h,}#{?uptime_m,#{uptime_m}m,} #[fg=$color_gray]│ #[fg=$color_cyan,bg=default,bold]󱑒 %d %b %H:%M #[fg=$color_gray]│ #[fg=$color_purple,bg=default,bold]󰊪 #{username}#{root}@#{hostname}"
# status right style # status right style
tmux_conf_theme_status_right_fg="$color_red,$color_fg,$color_bg" tmux_conf_theme_status_right_fg="$color_red,$color_fg"
tmux_conf_theme_status_right_bg="default,$color_secondary,$color_purple" tmux_conf_theme_status_right_bg="default,default"
tmux_conf_theme_status_right_attr="bold,none,bold" tmux_conf_theme_status_right_attr="bold,none"
# pairing indicator # pairing indicator
tmux_conf_theme_pairing="⚇" # U+2687 tmux_conf_theme_pairing="⚇" # U+2687
@@ -352,38 +360,11 @@ tmux_conf_urlscan_options="--compact --dedupe"
# -- user customizations ------------------------------------------------------- # -- user customizations -------------------------------------------------------
# this is the place to override or undo settings # Source modular configurations
set-option -g detach-on-destroy off source-file "/Users/jsarthak/dotfiles/tmux/config/settings.conf"
source-file "/Users/jsarthak/dotfiles/tmux/config/keybindings.conf"
# increase history size setw -g window-status-separator " #[fg=#484848]• " #!important
set -g history-limit 99999999
set status-bg default
# start with mouse mode enabled
set -g mouse on
# Allow tmux to understand and pass through color queries
set -as terminal-overrides ",xterm*:Tc"
set -as terminal-overrides ",xterm*:RGB"
# force Vi mode
# really you should export VISUAL or EDITOR environment variable, see manual
set -g status-keys vi
set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes
set -gu prefix2
unbind C-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
unbind -T copy-mode-vi MouseDragEnd1Pane
# if you don't want Oh my tmux! to alter a binding, use #!important
# bind c new-window -c '#{pane_current_path}' #!important
# move status line to top
set -g status-position bottom
# -- tpm ----------------------------------------------------------------------- # -- tpm -----------------------------------------------------------------------
@@ -427,28 +408,6 @@ set -g @plugin 'tmux-plugins/tmux-resurrect'
#set -g @continuum-restore 'on' #set -g @continuum-restore 'on'
set -g @plugin 'tmux-plugins/tmux-logging' set -g @plugin 'tmux-plugins/tmux-logging'
# switch windows alt+number
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
# Toggle popup window with Ctrl+
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
detach-client
} {
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
}
bind-key -n M-f "tmux-sessionizer\n"
# Set alignment
set -g status-justify left
# set -g status-style fg=default,bg=default
# set mode-style "fg=black,bg=default"
# -- custom variables ---------------------------------------------------------- # -- custom variables ----------------------------------------------------------
# to define a custom #{foo} variable, define a POSIX shell function between the # to define a custom #{foo} variable, define a POSIX shell function between the
+67
View File
@@ -0,0 +1,67 @@
# ==============================================================================
# TMUX KEYBINDINGS
# ==============================================================================
# Prefix key override: change from C-b to C-a
set -gu prefix2
unbind C-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Fast window switching with Alt + Number
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
# Toggle centered popup scratch terminal with Alt + p
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
detach-client
} {
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
}
# Run tmux-sessionizer with Alt + f
bind-key -n M-f send-keys "tmux-sessionizer\n"
# Sleek centered FZF popup search overlays (requires fzf)
# Alt-s: Fuzzy search and switch sessions in popup
bind-key -n M-s display-popup -w 65% -h 50% -E "tmux list-sessions | fzf --reverse --header='Jump to Session' | cut -d: -f1 | xargs tmux switch-client -t"
# Alt-w: Fuzzy search and switch windows in popup
bind-key -n M-w display-popup -w 75% -h 60% -E "tmux list-windows -a -F '#{session_name}:#{window_index} - #{window_name}' | fzf --reverse --header='Jump to Window' | cut -d' ' -f1 | xargs tmux select-window -t"
# ==============================================================================
# COPY MODE (VI MODE) & INSTANT STATUS REDRAW
# ==============================================================================
# Force immediate status redraw when entering copy mode
bind-key [ copy-mode \; refresh-client -S
# vi-copy navigation and selection bindings with instant status bar update
bind-key -T copy-mode-vi v send-keys -X begin-selection \; refresh-client -S
bind-key -T copy-mode-vi V send-keys -X select-line \; refresh-client -S
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle \; refresh-client -S
bind-key -T copy-mode-vi q send-keys -X cancel \; refresh-client -S
bind-key -T copy-mode-vi Escape send-keys -X cancel \; refresh-client -S
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel \; refresh-client -S
# Mouse Drag Selection: copy to clipboard and redraw instantly without leaving copy-mode
unbind -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection-and-cancel \; refresh-client -S
# ==============================================================================
# PANE NAVIGATION & RESIZING OVERRIDES (NO PREFIX)
# ==============================================================================
# Resize panes using Shift + Arrow keys
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Up resize-pane -U 2
bind -n S-Down resize-pane -D 2
+49
View File
@@ -0,0 +1,49 @@
# ==============================================================================
# TMUX GENERAL SETTINGS
# ==============================================================================
# Detach behavior: keep tmux alive when closing the last window/pane in a session
set-option -g detach-on-destroy off
# Increase scrollback history limit
set -g history-limit 99999999
# Enable mouse mode (scrolling, selecting, pane resizing)
set -g mouse on
# Terminal colors and overrides: pass through truecolor support
set -as terminal-overrides ",xterm*:Tc"
set -as terminal-overrides ",xterm*:RGB"
set -as terminal-overrides ",alacritty:Tc"
set -as terminal-overrides ",kitty:Tc"
set -as terminal-overrides ",wezterm:Tc"
# Force VI mode for command status line and pane navigation/copy mode
set -g status-keys vi
set -g mode-keys vi
# Keep the status line positioned at the bottom
set -g status-position bottom
# Left-justify the window list and set a subtle dot separator between windows
set -g status-justify left
setw -g window-status-separator " #[fg=#484848]• "
# ==============================================================================
# PANE STYLING & BORDER STATUS LINE
# ==============================================================================
# Custom pane border colors
set -g pane-border-style "fg=#353535,bg=default"
set -g pane-active-border-style "fg=#78a9ff,bg=default"
# Disable status line on the pane borders
set -g pane-border-status off
# ==============================================================================
# POPUP WINDOW STYLING
# ==============================================================================
# Make popups transparent
set -g popup-style "bg=default"
set -g popup-border-style "fg=#353535,bg=default"