CR: Tmux Configuration Remediation
Change Summary
Change ID |
CR-2026-03-25-tmux-config-remediation |
Type |
Configuration Quality / Technical Debt |
Priority |
P2 - Medium |
Status |
In Progress (Implementation Complete) |
Requested |
2026-03-25 |
Owner |
Evan Rosado |
Risk Level |
Low |
Rollback Time |
< 5 minutes (git revert) |
Systems Affected |
tmux-config ( |
Background
Code review of the tmux-config repository revealed several issues affecting maintainability and functionality:
-
Critical: TPM plugin path mismatch between configuration files
-
High: Duplicate keybindings causing conflicts (last binding wins)
-
High: Stale paths referencing non-existent directories
-
Medium: Duplicate settings causing confusion
-
Low: Missing modern tmux 3.2+ features
Scope
Repository
/home/evanusmodestus/atelier/_projects/personal/tmux-config
Files Affected
| File | Changes Required |
|---|---|
|
Fix TPM path (line 46) |
|
Remove duplicate |
|
Resolve |
|
Fix script path, update stale paths, remove duplicate clipboard |
|
Increase status-interval for performance |
Critical Findings (P0)
1. TPM Path Mismatch
Severity: PLUGIN LOADING FAILURE RISK
Issue: Configuration files reference two different TPM locations:
set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.config/tmux/plugins'
run '~/.tmux/plugins/tpm/tpm' # WRONG - legacy location
Fix: Standardize on ~/.config/tmux/plugins/tpm/tpm
2. Duplicate Keybinding: N
Severity: KEYBINDING CONFLICT
File: 01_CORE/keybindings.conf
Issue: N is bound twice - last binding wins, first is silently overwritten:
bind N select-layout main-vertical # line 97 - OVERWRITTEN
bind N new-session # line 100 - WINS
Fix: Change main-vertical to different key (suggest F for "Full vertical")
High Priority Findings (P1)
3. Wrong Script Path
File: 05_SNIPPETS/enhanced-keybindings.conf:106
"~/.config/tmux/config/03_SCRIPTS/tmux-help.sh | less"
"~/.config/tmux/03_SCRIPTS/tmux-help.sh | less"
4. Stale Paths
File: 05_SNIPPETS/enhanced-keybindings.conf:9-16
Issue: References ~/opus-workspace which doesn’t exist. Current structure uses ~/atelier.
bind-key -n M-w run-shell "tmux neww -c ~/opus-workspace"
bind-key -n M-a run-shell "tmux neww -c ~/opus-workspace/_apparatus"
bind-key -n M-p run-shell "tmux neww -c ~/opus-workspace/projecta"
bind-key C-d neww -c ~/opus-workspace/_apparatus/unix/dotfiles
bind-key C-n neww -c ~/opus-workspace/_apparatus/omnia/instrumentum-nvim
bind-key C-t neww -c ~/opus-workspace/_apparatus/unix/tmux-config
bind-key -n M-w run-shell "tmux neww -c ~/atelier"
bind-key -n M-a run-shell "tmux neww -c ~/atelier/_projects"
bind-key -n M-p run-shell "tmux neww -c ~/atelier/_projects/personal"
bind-key C-d neww -c ~/atelier/_projects/personal/dotfiles
bind-key C-n neww -c ~/atelier/_projects/personal/domus-nvim
bind-key C-t neww -c ~/atelier/_projects/personal/tmux-config
5. Hardcoded Clipboard (Conflicts with clipboard.conf)
File: 05_SNIPPETS/enhanced-keybindings.conf:113-117
Issue: Hardcodes xclip, ignoring the cross-platform detection in clipboard.conf.
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key C-v run "tmux set-buffer \"$(xclip -out -selection clipboard)\"; tmux paste-buffer"
Fix: Remove entirely - tmux-yank plugin and clipboard.conf handle this correctly.
Medium Priority Findings (P2)
6. Duplicate Settings
| Setting | First Location | Duplicate Location |
|---|---|---|
|
base.conf:24 |
base.conf:64 |
|
base.conf:74 |
enhanced-statusline.conf:123 |
|
base.conf:73 |
enhanced-statusline.conf:124 |
|
base.conf:33 |
enhanced-statusline.conf:88 |
Fix: Remove duplicates from enhanced-statusline.conf (base.conf is authoritative).
7. Status Refresh Too Frequent
File: 05_SNIPPETS/enhanced-statusline.conf:14
set -g status-interval 2 # Calls shell scripts every 2 seconds
set -g status-interval 5 # Reduce CPU overhead
8. Additional Duplicate Keybindings
| Key | Location 1 | Location 2 |
|---|---|---|
|
keybindings.conf:86 (sync-panes) |
enhanced-keybindings.conf:137 (sync-panes) |
|
keybindings.conf:8 |
enhanced-keybindings.conf:23 |
|
default tmux (zoom) |
enhanced-keybindings.conf:38 (zoom + message) |
Note: These are benign - later definitions simply override with enhanced behavior. Document for clarity.
Remediation Plan
Phase 1: Critical Fixes
| # | Task | File |
|---|---|---|
1.1 |
Change TPM path from |
tmux.conf:46 |
1.2 |
Change |
keybindings.conf:97 |
Phase 2: High Priority Fixes
| # | Task | File |
|---|---|---|
2.1 |
Remove |
enhanced-keybindings.conf:106 |
2.2 |
Update 6 stale |
enhanced-keybindings.conf:9-16 |
2.3 |
Remove hardcoded clipboard bindings (lines 113-117) |
enhanced-keybindings.conf |
Phase 3: Medium Priority Fixes
| # | Task | File |
|---|---|---|
3.1 |
Remove duplicate |
base.conf |
3.2 |
Remove duplicate |
enhanced-statusline.conf |
3.3 |
Change |
enhanced-statusline.conf:14 |
Pre-Change Checklist
-
Current tmux config working
-
Git status clean
-
No active sessions depend on specific keybindings
Current State Capture
# Verify current working state
tmux source-file ~/.config/tmux/tmux.conf
tmux list-keys | wc -l
tmux show-options -g | grep -E "status-interval|focus-events"
Post-Change Validation
Functionality Tests
-
tmux source-file ~/.config/tmux/tmux.conf- no errors -
Prefix+Ftriggers main-vertical layout -
Prefix+Ncreates new session -
Prefix+/opens help popup -
Alt+wopens new window at~/atelier -
Copy/paste works (select text,
yto yank,Prefix+Pto paste)
Verification Commands
# Reload and check for errors
tmux source-file ~/.config/tmux/tmux.conf
# Verify N is now new-session only
tmux list-keys | grep "bind-key.*N"
# Verify F is main-vertical
tmux list-keys | grep "bind-key.*F"
# Check status interval
tmux show-options -g status-interval
Rollback Procedure
Trigger Conditions
Rollback if:
-
Tmux fails to start
-
Critical keybindings broken
-
Status bar not rendering
Rollback Steps
cd ~/.config/tmux
git checkout HEAD~1 -- .
tmux source-file ~/.config/tmux/tmux.conf
Optional Enhancements (Future)
Not in scope for this CR, but recommended for future:
| Enhancement | Description |
|---|---|
Modern tmux 3.2+ features |
Add |
Replace tmux-copycat |
Unmaintained - consider |
Status script caching |
Cache system metrics results to reduce subprocess overhead |
Changelog
| Date | Author | Change |
|---|---|---|
2026-03-25 |
Evan Rosado |
Initial CR created from code review |