Files
dotfiles/home/.tmux.conf
Andrejus 396de0003c feat(tmux): simplify copy-mode to OSC52, remove condensed toggle
Drop pbcopy/xclip/xsel pipe hacks — OSC52 via set-clipboard
handles system clipboard automatically. Remove @condensed
status bar toggle, simplify status click to lock-session.
Add client-focus-in mouse reset workaround.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:24 +00:00

98 lines
3.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prefix: Ctrl+A
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# True color
set -g default-terminal "tmux-256color"
set -s terminal-overrides "xterm-256color:RGB"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
# Shell
set -g default-shell "$SHELL"
# Windows and panes start at 1
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -g history-limit 100000
set -sg escape-time 10
set -g focus-events on
set -g display-time 4000
# Mouse
set -g mouse on
set -g set-clipboard on
set-hook -g client-focus-in 'set -g mouse off ; set -g mouse on'
bind -T root MouseDown1StatusRight lock-session
# Copy mode — OSC52 via set-clipboard handles system clipboard automatically
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
bind -T copy-mode-vi MouseDown1Pane send -X clear-selection
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-selection-and-cancel
# Splits
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
bind c new-window -c "#{pane_current_path}"
# Pane navigation
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Pane resize
bind -r C-h resize-pane -L 5
bind -r C-j resize-pane -D 5
bind -r C-k resize-pane -U 5
bind -r C-l resize-pane -R 5
# Quick switch to last window
bind a last-window
# Reload
bind r source-file ~/.tmux.conf \; display "Config reloaded"
# Screensaver
bind S lock-session
# Status bar
set -g status-position bottom
set -g status-interval 1
set -g status-style "fg=#7290B8,bg=default"
set -g status-left "#{?client_prefix,#[fg=colour208]● ,#[fg=#3C3C3C]● }"
set -g status-right "#{?@condensed,,#{?#{e|>=|:#{client_width},120},#(~/.tmux/network.sh) #[fg=#3C3C3C] #(~/.tmux/battery.sh) #[fg=#3C3C3C] ,}}#{?@condensed,,#{?#{e|>=|:#{client_width},80},#[fg=#808080]%a %d %b ,}}#{?@condensed,#[fg=#3C3C3C],}#[fg=#2CB494]#[bg=#1A1A1A] %H:%M #[default]#(~/.tmux/heartbeat.sh)"
set -g status-right-length 80
set -g window-status-format "#{?window_last_flag, #[fg=#1A7A64]#I#[fg=default] #W , #I #W }"
set -g window-status-current-format " #[fg=#085040]#I#[fg=#0A0A0A] #W "
set -g window-status-separator " "
set -g window-status-style "fg=#808080,bg=#1A1A1A"
set -g window-status-current-style "fg=#0A0A0A,bg=#2CB494,bold"
set -g window-status-bell-style "fg=colour234,bg=colour208,bold"
set -g monitor-bell on
set -g visual-bell off
set -g pane-border-style "fg=#3C3C3C"
set -g pane-active-border-style "fg=#2CB494"
set -g message-style "fg=#2CB494,bg=default"
set -g message-command-style "fg=#F88C14,bg=default"
set -g mode-style "fg=colour255,bg=colour30,bold"
set -g display-panes-colour "#808080"
set -g display-panes-active-colour "#2CB494"
# Clock
set -g clock-mode-colour "#2CB494"
# Screensaver
set -g lock-after-time 180
set -g lock-command 'eval $(grep active_total ${TMPDIR:-/tmp}/.tmux_heartbeat 2>/dev/null); ~/.tmux/donut ${active_total:-0}'
set -g automatic-rename on
set -g allow-rename off
set -g automatic-rename-format '#(~/.tmux/tab-name.sh "#{pane_current_command}" "#{b:pane_current_path}")'