feat(tmux): LazyVim-cohesive remote-first tmux config - #7
Conversation
Keep brainstorm/plan artifacts (docs/brainstorms/) local — agent-session scratch, not something to publish in a public dotfiles repo.
Greenfield tmux.conf that makes tmux the terminal-layer of Neovim and a durable cross-device workspace: C-Space prefix, Ctrl-hjkl into Neovim splits, OSC52 clipboard over SSH, tmux-menus discoverability, catppuccin theme, and resurrect+continuum persistence. Plugins are vendored via chezmoiexternal to ~/.config/tmux/plugins/ — a path the plain VPS repo can populate too. catppuccin is pinned to v2.3.0 (it ships breaking syntax); the rest track unpinned. Load order catppuccin→resurrect→ continuum is load-bearing — continuum prepends its autosave hook to status-right, which catppuccin sets.
vim-tmux-navigator completes the seamless Ctrl-hjkl seam between Neovim splits and tmux panes; vim-obsession keeps a Session.vim so tmux-resurrect can restore the Neovim session after a reboot. blink.cmp's <C-Space> is freed since the tmux prefix now owns that chord.
There was a problem hiding this comment.
Pull request overview
This PR introduces a remote-first tmux configuration (plus supporting Neovim + chezmoi changes) to make tmux behave as a durable, per-host workspace with LazyVim-cohesive keybindings and plugin-based UX enhancements.
Changes:
- Add a full
~/.config/tmux/tmux.confwithC-Spaceprefix, OSC52 clipboard support, vim/tmux pane navigation, and a themed status line with persistence plugins. - Vendor tmux plugins via
home/.chezmoiexternal.tomland add Neovim plugin specs to support seamless vim↔tmux navigation and session restoration. - Add a zsh abbreviation to attach/create a per-host
maintmux session and ignore an additional docs folder.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| home/dot_config/zsh/abbreviations | Adds ta abbreviation to attach/create the main tmux session. |
| home/dot_config/tmux/tmux.conf | New tmux configuration: prefix, terminal features, navigation bindings, and plugin sourcing. |
| home/dot_config/nvim/lua/plugins/editor.lua | Adds vim-tmux-navigator + vim-obsession plugin specs for cross-pane navigation and session restore. |
| home/dot_config/nvim/lua/plugins/blink.lua | Frees <C-Space> in blink.cmp to avoid conflict with tmux prefix. |
| home/.chezmoiexternal.toml | Vendors tmux plugins into ~/.config/tmux/plugins/ (catppuccin pinned). |
| .gitignore | Ignores /docs/brainstorms/. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@claude please review PR |
|
Claude finished @jarodtaylor's task in 2m 54s —— View job PR Review: feat(tmux): LazyVim-cohesive remote-first tmux config
OverallSolid, well-reasoned config. The architecture decisions (load order, inline vim-tmux-navigator, tmux-menus over which-key) are clearly thought out and the PR description explains the why at every step. Three issues below need attention before runtime testing — one is a genuine portability bug, one is a misleading comment, and one is a disagreement with a Copilot finding. Issues1.
|
Address PR #7 review (Copilot + Claude): - vim_pattern used \S (GNU/PCRE), which breaks under macOS/BSD grep -E where `ps -o comm=` returns nvim's full path — silently degrading C-hjkl to tmux-only nav. Use [^[:space:]] (POSIX non-whitespace), correct on both BSD and GNU (the suggested [^ \t] would wrongly exclude paths containing 't'). - Fix the backwards catppuccin path comment and the inaccurate "prepends". The 'C-\' quoting concern was a false positive (single quotes are literal).
* origin/main: Add Claude Code GitHub Workflow (#8)
|
Thanks Copilot and Claude — addressed in Fixed:
Dismissed:
Noted, no change:
Runtime acceptance — especially the |
Addresses PR #7 review. `{}` already disables the preset mapping (blink docs list `false` and `{}` as equivalent), but `false` is the more explicit intent.
|
Round 2 — thanks Copilot. One verified false positive, one doc-equivalent I tightened anyway, and a re-raise.
|
Summary
home/dot_config/tmux/tmux.confwas empty. This makes tmux feel like the terminal-layer of LazyVim and turns each fleet host (M5, Mac Mini, VPS) into a durable workspace you can reattach to from any device — the iPad over Termius + Tailscale included. Prefix isC-Space(the sibling of Neovim's Space leader),Ctrl-hjklcrosses seamlessly between Neovim splits and tmux panes, andC-Space Spaceopens a discoverability menu so you learn the bindings instead of memorizing them.Notable decisions
pyyamlgit submodule (empty under a shallow clone), an autobuild that calls GNUrealpath(absent on macOS, fails silently underset -e), and no release tags to pin.jaclu/tmux-menusdelivers the same press-a-key-see-your-options popup as pure POSIX/tmux script: no build, no Python, no submodule — robust by construction.continuumprepends its autosave hook tostatus-right, whichcatppuccinsets — so the order is catppuccin → resurrect → continuum, or autosave is silently lost.chezmoiexternalto~/.config/tmux/plugins/— a path the plain (non-chezmoi) VPS repo can populate the same way — so onetmux.confworks fleet-wide with no chezmoi-only coupling. Only catppuccin is tag-pinned (v2.3.0, it ships breaking syntax); the rest track unpinned.vim-obsessionso the Neovim session restores too.blink.cmp's<C-Space>is freed since the tmux prefix now owns that chord.Verification
No automated suite (dotfiles config). Statically checked here:
.chezmoiexternal.tomlparses, both Lua specs parse, and a focused code-review pass confirmed cross-file path consistency, load order, tmux syntax, and plan fidelity.Runtime acceptance is pending — run on the M5 after
chezmoi apply:C-Spaceis the prefix;C-Space Spaceopens the tmux-menus popupCtrl-hjklcrosses Neovim splits ↔ tmux panes seamlesslyyover SSH lands in the local system clipboardtmux show-options -g status-rightincludes the continuum save hooktmux kill-server+ restart) restores the session, Neovim buffers includedDeferred (intentional)
auto-attach-on-SSH (the guarded block is already specified),
sesh,smart-splits, a curated tmux-menus menu, and the VPS plugin bootstrap (owned by the separate VPS repo).Post-Deploy Monitoring & Validation
No additional operational monitoring required — local dotfiles config; validation is the M5 checklist above (owner: Jarod).