|
unbind r |
|
bind r source-file ~/.config/tmux/tmux.conf |
|
set -g prefix C-s |
|
set -g prefix2 None |
|
unbind C-b |
|
set -g mouse on |
|
set -gq allow-passthrough on |
|
set -g bell-action any |
|
set -g monitor-bell on |
|
set -g default-terminal "tmux-256color" |
|
set -as terminal-features ',*:RGB' |
|
set -g history-limit 100000 |
|
set -sg escape-time 0 |
|
set -g focus-events on |
|
set -g set-clipboard on |
|
set -g display-time 2000 |
|
|
|
bind-key h select-pane -L |
|
bind-key j select-pane -D |
|
bind-key k select-pane -U |
|
bind-key l select-pane -R |
|
|
|
# Easier splits (preserves working directory) |
|
bind | split-window -h -c "#{pane_current_path}" |
|
bind - split-window -v -c "#{pane_current_path}" |
|
|
|
set-option -g status-position top |
|
|
|
set -g base-index 0 |
|
setw -g pane-base-index 0 |
|
set -g renumber-windows on |
|
|
|
# Emacs-style copy mode |
|
set -g mode-keys emacs |
|
bind -T copy-mode Enter send -X copy-selection-and-cancel |
|
|
|
set -g @plugin 'tmux-plugins/tpm' |
|
set -g @plugin 'tmux-plugins/tmux-sensible' |
|
set -g @plugin 'omerxx/tmux-sessionx' |
|
set -g @plugin 'tmux-plugins/tmux-cpu' |
|
|
|
# Minimal theme |
|
set -g status-style bg='#1a1b26',fg='#565f89' |
|
set -g status-interval 2 |
|
set -g status-left-length 50 |
|
set -g status-right-length 400 |
|
|
|
# Status left/right |
|
set -g status-left '#[fg=#1a1b26,bg=#7aa2f7,bold] #S #[fg=#7aa2f7,bg=default,nobold] #(~/.config/tmux/mouse-indicator.sh) ' |
|
set -g status-right '#[fg=#9ece6a] #{cpu_percentage} #[fg=#bb9af7] #(~/.config/tmux/ram-usage.sh) #[fg=#ff9e64] #(~/.config/tmux/disk-usage.sh) #[fg=#c0caf5] #H #[fg=#7aa2f7]#[fg=#1a1b26,bg=#7aa2f7,bold] %H:%M ' |
|
|
|
# Window list |
|
set -g window-status-format '#[fg=#3b4261]#[bg=default]#[fg=#565f89]#[bg=#3b4261]#{?#{==:#I,0},,}#{?#{==:#I,1},,}#{?#{==:#I,2},,}#{?#{==:#I,3},,}#{?#{==:#I,4},,}#{?#{==:#I,5},,}#{?#{==:#I,6},,}#{?#{==:#I,7},,}#{?#{==:#I,8},,}#{?#{==:#I,9},,} #W#[fg=#3b4261]#[bg=default]' |
|
set -g window-status-current-format '#[fg=#7aa2f7]#{?#{==:#I,0},#[fg=#7aa2f7],}#{?#{==:#I,1},#[fg=#9ece6a],}#{?#{==:#I,2},#[fg=#bb9af7],}#{?#{==:#I,3},#[fg=#ff9e64],}#{?#{==:#I,4},#[fg=#73daca],}#{?#{==:#I,5},#[fg=#f7768e],}#{?#{==:#I,6},#[fg=#2ac3de],}#{?#{==:#I,7},#[fg=#e0af68],}#{?#{==:#I,8},#[fg=#a9b1d6],}#{?#{==:#I,9},#[fg=#d4bfff],}#[bg=default]#[fg=#1a1b26]#[bg=#7aa2f7]#{?#{==:#I,0},#[bg=#7aa2f7],}#{?#{==:#I,1},#[bg=#9ece6a],}#{?#{==:#I,2},#[bg=#bb9af7],}#{?#{==:#I,3},#[bg=#ff9e64],}#{?#{==:#I,4},#[bg=#73daca],}#{?#{==:#I,5},#[bg=#f7768e],}#{?#{==:#I,6},#[bg=#2ac3de],}#{?#{==:#I,7},#[bg=#e0af68],}#{?#{==:#I,8},#[bg=#a9b1d6],}#{?#{==:#I,9},#[bg=#d4bfff],}#[bold]#{?#{==:#I,0},,}#{?#{==:#I,1},,}#{?#{==:#I,2},,}#{?#{==:#I,3},,}#{?#{==:#I,4},,}#{?#{==:#I,5},,}#{?#{==:#I,6},,}#{?#{==:#I,7},,}#{?#{==:#I,8},,}#{?#{==:#I,9},,} #W#[nobold]#[fg=#7aa2f7]#{?#{==:#I,0},#[fg=#7aa2f7],}#{?#{==:#I,1},#[fg=#9ece6a],}#{?#{==:#I,2},#[fg=#bb9af7],}#{?#{==:#I,3},#[fg=#ff9e64],}#{?#{==:#I,4},#[fg=#73daca],}#{?#{==:#I,5},#[fg=#f7768e],}#{?#{==:#I,6},#[fg=#2ac3de],}#{?#{==:#I,7},#[fg=#e0af68],}#{?#{==:#I,8},#[fg=#a9b1d6],}#{?#{==:#I,9},#[fg=#d4bfff],}#[bg=default]' |
|
set -g window-status-separator ' ' |
|
|
|
# Pane borders |
|
set -g pane-border-style fg='#3b4261' |
|
set -g pane-active-border-style fg='#7aa2f7' |
|
|
|
# Message style |
|
set -g message-style bg='#7aa2f7',fg='#1a1b26' |
|
set -g message-command-style bg='#292e42',fg='#7aa2f7' |
|
|
|
# Tree/choose mode styling |
|
|
|
run '~/.config/tmux/plugins/tpm/tpm' |
|
bind-key -T root MouseDown1StatusLeft choose-tree -Zs |
|
|
|
# Repeatable session cycling (C-s ( ( ( or C-s ) ) )) |
|
|
|
# Longer repeat time for key sequences |
|
set -g repeat-time 1000 |
|
|
|
# Repeatable window cycling (C-s n n n or C-s p p p) |
|
bind-key -r n next-window |
|
bind-key -r p previous-window |
|
|
|
# Session cycling by creation order |
|
bind-key -r '(' run-shell "~/.config/tmux/session-prev.sh" |
|
bind-key -r ')' run-shell "~/.config/tmux/session-next.sh" |
|
|
|
# Toggle status bar (C-s B for "bar") |
|
bind-key B run-shell "~/.config/tmux/toggle-status.sh" |
|
|
|
# Session/window tree picker popup (C-s s) — like choose-tree but with fzf |
|
bind-key s display-popup -w 90% -h 75% -E "~/.config/tmux/session-tree.sh" |
|
# Built-in choose-tree (C-s S) |
|
bind-key S choose-tree -Zs |
|
|
|
# Toggle mouse mode (C-s M) - turn off to select/copy text on iPad |
|
bind M set -g mouse |
|
|
|
# Agent dashboard (C-s D) — split pane at top |
|
bind-key D split-window -vb -l 40% \ |
|
"~/.claude/scripts/agent-dashboard.sh" |
|
|
|
# Kill session and switch away (C-s X) |
|
bind-key X confirm-before -p "Kill session #S? (y/n)" \ |
|
"run-shell '~/.config/tmux/kill-session.sh #S'" |
|
|
|
# C-s C-s sends C-s to terminal (override plugin bindings) |
|
bind C-s send-prefix |