A few agents means a few workspaces, several tabs each, and panes inside
those: agents, editors, dev servers, test watchers. The question stops being
“which window” and becomes “where was that?” wrkstrms has three answers,
depending on what you know.
You know its name: the finder
⌃␣ f opens the finder. It lists every agent, tab, workspace, project and
command in one place, and a few letters narrow it down. The letters only have
to appear in order, so dsys finds Design System, and matches at the start
of words rank higher.
╭─ find ───────────────────────────────────────────────────────────────────────╮│›check2 / 47 │├──────────────────────────────────────────────────────────────────────────────┤│▌●keep the checkout form's values when a… storefront › form stateagent ││✓document the new checkout states storefront › docsagent │╰──────────────────────────────────────────────────────────────────────────────╯
⌃␣ f, then check: the blocked agent and the finished one.
With an empty query, agents come first, most urgent first, so ⌃␣ f then
Enter is another way to get to the agent that needs you. To look at one
kind of thing, start with its name: agent, tab, space, project, mem
or > for commands. >split finds the split commands and runs one with
Enter, and from three letters on, matching memories show up too.
You know what it said: search all panes
Sometimes you don’t remember where something is, only what it printed: a
failing test, an error, a port. ⌃␣ / searches the text of every pane in
every workspace, scrollback included.
╭─ search all panes ───────────────────────────────────────────────────────────╮│›fail7 / 63 lines │├──────────────────────────────────────────────────────────────────────────────┤│▌·Tests 1 failed | 38 passed storefront › f…line ││·FAIL keeps values after a failed submit storefront › f…line ││·….test.tsx (12 tests | 1 failed) storefront › f…line ││·●Fails as expected. Now the fix: storefront › f…line ││·✗ keeps values after a failed submit storefront › f…line ││·● I'll add a failing test first, then move the form storefront › f…line ││·…'s values when a submit fails storefront › f…line │╰──────────────────────────────────────────────────────────────────────────────╯
⌃␣ /, then fail: the test watcher's failure and the agent talking about it, side by side.
It’s plain text with smart case: error finds Error and ERROR, Error
finds only Error. Start with \v for a regular expression (\vport \d+).
Tab narrows it to this workspace, then this tab. Enter goes to that pane
and puts the cursor on the match, in copy mode.
You don’t know the key: ask
Every command in wrkstrms is the prefix, ⌃␣ (Ctrl-Space), then one key.
You don’t need to learn them up front.
⌃␣ ? shows every key on one screen: the prefix keys by group, the keys that
work without the prefix, the sidebar’s keys, and what the status glyphs mean.
┌ wrkstrms keys ───────────────────────────────────────────────────────────────────────────────────────────────┐│ Prefix: C-Space, thenToolsNo prefix ││ V view markdown Alt-a next needing you ││ Panes e editor (nvim) Alt-h/j/k/l focus pane ││ s split below A continue in another agent Alt-1…9 go to tab ││ v split right y memory Alt-[ / Alt-] previous / next tab ││ h/j/k/l focus pane c review changes Alt-{ / Alt-} previous / next workspace ││ H/J/K/L swap pane g git panel ││ z zoom R review PRs Agent status ││ r resize mode p open PR ● blocked: needs you ││ = equalize o open dev server ✓ done: finished, not seen ││ x close pane ◐ working ││ . label pane Workspaces○ idle ││ ! pane to new tab b sidebar ││ [ copy mode f/w find anything In the sidebar ││ M pane to another tab / search all panes j/k move ││ ; previous pane W new workspace gg/G top / bottom ││ N new project Enter jump there ││ Tabs / filter ││ @ join a tab here General r rename ││ t new tab D dashboard x close (asks) ││ n new workstream S settings Esc/l back to panes ││ , rename tab a next needing you ││ & close tab I inspect agent status Mouse ││ Tab last tab m menu for this pane click a pane, tab or sidebar row ││ 1-9 go to tab ? all keys drag a divider or header to resize ││ d detach Shift-drag to select text ││ q quit (stops every pane) ││ C-Space send C-Space │└ e edit keys · any other key to close ────────────────────────────────────────────────────────────────────────┘
If you’d rather be reminded as you go, turn on the which-key popup
(which_key = true under [leader] in keys.toml, or in Settings). Press
the prefix, pause a moment, and it lists what comes next. If you already know
the key, press it right away and the popup never shows.
┌ after C-Space ────────────────────────────────────────────────────┐│ PanesTools ││ s split below V view markdown ││ v split right e editor (nvim) ││ h/j/k/l focus pane A continue in another agent ││ H/J/K/L swap pane y memory ││ z zoom c review changes ││ r resize mode g git panel ││ = equalize R review PRs ││ x close pane p open PR ││ . label pane o open dev server ││ ! pane to new tab ││ [ copy mode Workspaces ││ M pane to another tab b sidebar ││ ; previous pane f/w find anything ││ / search all panes ││ Tabs W new workspace ││ @ join a tab here N new project ││ t new tab ││ n new workstream General ││ , rename tab D dashboard ││ & close tab S settings ││ Tab last tab a next needing you ││ 1-9 go to tab I inspect agent status ││ m menu for this pane ││ ? all keys ││ d detach ││ q quit (stops every pane) ││ C-Space send C-Space │└───────────────────────────────────────────────────────────────────┘
Keys without the prefix
A handful of moves are frequent enough to skip the prefix:
Key
Does
Alt-a
Jump to the next agent that needs you
Alt-h/j/k/l
Focus the pane to the left, below, above, right
Alt-1…Alt-9
Go to a tab
Alt-[ / Alt-]
Previous or next tab
Alt-{ / Alt-}
Previous or next workspace
Your keys, not ours
The prefix itself can change: a backtick, tmux’s Ctrl-a, Option-Space,
or a spare key like F12. Any command can be rebound, keys can lead to
other keys (⌃␣ o p to open a PR), and ws keys opens an editor with a map
of your keyboard showing what every key does. The same editor is the first
page of Settings (⌃␣ S), where changes save as you make them.