Commit Graph

31 Commits

Author SHA1 Message Date
Shawn Pana 110e965f6b Mirror scroll-mode bindings into copy-mode-vi table
When `mode-keys` is set to vi (the default on most modern tmux), entering
copy-mode lands you in the `copy-mode-vi` key table, not `copy-mode`. Our
scroll bindings (i/k for 2-line, I/K for half-page) were only in the
`copy-mode` table, so they silently did nothing. Duplicate them into
`copy-mode-vi` so they fire in both modes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 21:55:22 -07:00
Shawn Pana d66e2085ae Bare \smux\ prints help instead of reinstalling
Default was \`install\`, so retyping \`smux\` at the prompt would run the
full installer again (redownload tmux.conf, rewire symlinks, etc.). Now
\`smux\` alone prints the help; reinstall still works via explicit
\`smux install\`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 15:13:40 -07:00
Shawn Pana e616f17bad Use if-shell to set SMUX_BIN_DIR default instead of \${VAR:-default}
tmux's config parser doesn't accept shell parameter expansion like
\${SMUX_BIN_DIR:-\$HOME/.smux/bin}, so sourcing the conf raised
"invalid environment variable". Replace with an if-shell guard at the
top of the file that sets SMUX_BIN_DIR to the default \$HOME/.smux/bin
only when it isn't already set, and have the bindings use a plain
\$SMUX_BIN_DIR reference the shell can expand.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 15:11:27 -07:00
Shawn Pana 9fe1f9d299 Honor \$SMUX_BIN_DIR as an override for the script-binaries location
The Option+F / Option+O / Option+Escape bindings previously hardcoded
\$HOME/.smux/bin as the scripts dir. Replace with
\${SMUX_BIN_DIR:-\$HOME/.smux/bin} so apps that bundle smux (like
ophanim) can point the bindings at their vendored copy by setting
SMUX_BIN_DIR in tmux's global env before source-file'ing this config.
Default path is unchanged so existing installs are unaffected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 15:07:43 -07:00
Shawn Pana cd26d2d87b Option+Escape leaves fullscreen; re-tile the origin window on join
Teach toggle-fullscreen a second mode, 'exit', that only performs the
un-fullscreen branch and never breaks a pane out. Bind Option+Escape
(M-Escape) to that mode so the key is a pure "leave fullscreen if
you're in one" — no-op on a pane that isn't currently fullscreened, no
risk of surprising the user into fullscreen. Both keys also now call
smart-layout on the pane's newly-joined window after join-pane, so
returning a pane to a two-pane layout reshapes into whichever tiling
best fits the window shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 14:01:58 -07:00
Shawn Pana 5dd81430a9 Option+O picks the layout that best matches the window shape; cycling moves to Option+P
Option+O used to cycle tmux's built-in layouts. It now runs a smart-layout
script that scores even-horizontal, even-vertical, and tiled by how close
each one puts the per-pane aspect to a 2:1 cell target (roughly square in
pixels) and applies the winner. A wide window with four panes becomes a
single horizontal row instead of a squished 2x2; a tall narrow window
becomes a vertical stack. The old layout-cycling behavior is preserved on
Option+P for anyone who wants to hand-pick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 13:01:07 -07:00
Shawn Pana 35642eadff Add Option+F to toggle a pane between its own window and the original layout
Break-pane puts the focused pane into a new window by itself; pressing
Option+F again rejoins it to the layout it came from. Origin window id
is stashed on the pane as the @orig-window user option, so it persists
through break-pane/join-pane without any session-level bookkeeping. If
the origin window no longer exists, the stash is cleared and the pane
stays put. Solo-pane windows are a no-op so no dangling state ever
gets written.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 12:42:39 -07:00
shawn pana 95bf0b639e Create LICENSE 2026-03-28 10:21:54 -07:00
shawn pana efceaec6e8 Update README.md 2026-03-28 07:42:07 -07:00
ShawnPana 02cd584159 Add smux skill hint to message command header 2026-03-27 20:03:13 -07:00
ShawnPana 6ccdeb6651 Move legacy skills into smux/references/ 2026-03-27 20:00:46 -07:00
ShawnPana 59af6353f6 Add message command and gitignore personal config files 2026-03-27 19:57:33 -07:00
ShawnPana 2cd02e9859 Shorten README intro 2026-03-27 18:48:57 -07:00
ShawnPana 84bafeefd0 Rewrite README with agent communication overview 2026-03-27 18:48:14 -07:00
ShawnPana 6b70609aec Fix video embed with user-attachments URL 2026-03-27 18:23:29 -07:00
shawn pana 87ae75a93e Update README.md 2026-03-27 18:22:41 -07:00
ShawnPana ecb1603176 Fix video embed in README 2026-03-27 18:21:41 -07:00
ShawnPana 06cfe41081 Add demo video and fix skill link in README 2026-03-27 18:20:07 -07:00
ShawnPana f5fc77a4f2 Combine tmux and tmux-bridge skills into single smux skill
Move old standalone skills to legacy/ directory.
2026-03-27 18:14:03 -07:00
ShawnPana bdfe2d19f2 Fix window navigation wrapping with non-zero start index
Use window_start_flag/window_end_flag instead of hardcoded index
checks, so Option+h/u stop at the edges regardless of window numbering.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 18:10:13 -07:00
ShawnPana a9ac82f28c smux: one-command tmux setup with installer
- Add install.sh (curl | bash installer + smux CLI)
- Cross-platform clipboard in tmux.conf (pbcopy/xclip/xsel)
- Remove personal Claude Code settings and pane alert
- Rewrite README for smux branding

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:37:37 -07:00
ShawnPana 267a2454c1 Move skill files into skills/ directory structure
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 09:55:39 -07:00
ShawnPana be601583cb updates 2026-03-15 12:55:51 -07:00
ShawnPana 5a013036a1 Add usage docs for all keybindings and rename helper
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:59:54 -08:00
ShawnPana 7f8305332b Add README with setup instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:44:41 -08:00
ShawnPana 4b61095538 Move script to scripts/ dir and rename skill.md to SKILL.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:39:39 -08:00
ShawnPana 2c02a97e01 Add Claude Code config and tmux pane alert for approval prompts
- claude-settings.json: hooks, MCP servers, permissions (symlinked to ~/.claude/settings.json)
- claude-pane-alert.sh: turns tmux pane red on permission prompt, resets on approval
- tmux.conf: add layout cycling, pane swapping, window navigation, and status bar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:27:45 -08:00
ShawnPana 1afeb6aa22 Hide status bar for cleaner look
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:24:57 -08:00
ShawnPana 7a3da7d4a3 Add keyboard scroll mode with Option+Tab toggle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:53:29 -08:00
ShawnPana 9605941e21 Add auto-copy to clipboard on mouse selection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 10:07:27 -08:00
ShawnPana eec840526b Initial tmux config and skill file
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 10:01:47 -08:00