@rotem-bar/pi-name-tmux
v0.1.2
Published
A pi extension to automatically name your tmux window based on pi's state
Readme
pi-name-tmux
A pi extension to automatically name your tmux window based on pi's state
- Adopts name from
/name - Generating indicator
- Distinct pending-question indicator (supports @juicesharp/rpiv-ask-user-question)
Install
pi install npm:pi-name-tmux
# or from git:
pi install git:github.com/<you>/pi-name-tmuxTo try it locally during development:
pnpm install
pi -e /path/to/pi-name-tmuxBehavior
The extension only runs inside tmux ($TMUX + $TMUX_PANE) and targets the
window that contains the running pane.
| State | Window name |
| ----------------------- | ----------- |
| Waiting for input | ○ <name> |
| Generating | ● <name> |
| Ask-user prompt pending | ◔ <name> |
<name> resolution:
- Persisted session name (set via
/nameorpi.setSessionName()) — restored when a named session is loaded and adopted live viasession_info_changed - Otherwise the window's original name (captured before the first rename, with any existing status prefixes removed to prevent duplicate indicators)
- Otherwise the current directory's basename
On session shutdown (/new, /resume, /fork, quit) the original window
name is restored and tmux's automatic-rename window option is re-enabled.
Development
Requires Node.js ≥ 24 and pnpm.
pnpm install
pnpm lint # oxlint
pnpm format # oxfmt (in place); format:check for CI
pnpm typecheck # tsc --noEmit
pnpm test # node:test suite with a mocked tmux binaryTests drive the extension through its full event lifecycle against a mocked tmux binary and assert the exact window-rename sequence.
CI
CI runs on Tangled Spindle, executed by the kubernetes
engine on evan.jarrett.net/loom:
.tangled/workflows/test.yml— lint, format check, typecheck, and tests on every push and pull request.tangled/workflows/publish.yml— publishes to npm when av*tag is pushed; requires anNPM_TOKENsecret registered for the repo on tangled
