Skip to content

Pane

A pane is the one addressable unit every pane-driving command targets: a single terminal region a backend can send text to, read output from, or close. Every multiplexer surfaces this concept, however it names its own layers above it (tmux windows, herdr tabs and workspaces, WezTerm tabs and workspaces, Zellij tabs and sessions) — a <pane> argument always names a leaf pane, never one of those containers.

Discover the panes you can address with list, which prints each pane’s id, label, harness, and cwd.

A <pane> argument accepts either form, resolved by one rule: id first, then label.

  1. Id. Every pane has a backend-assigned id (tmux %3, herdr’s own pane id, Zellij’s terminal_N, …). If the locator matches a live pane’s id, that pane wins — before labels are even considered.
  2. Label. A pane may also carry a human-assigned label (set with --label on open or worktree add/worktree open). If the locator matches no id, it is checked against every pane’s label instead.

An id can never be made to mean something else by a person renaming an unrelated pane, so anything addressed by id keeps working no matter what anyone labels later — which is why id is checked first and a label is only a fallback, never a peer.

A locator is recognized by existence, not by shape. Whether a string “looks like” an id is never asked; only whether a live pane actually carries it as an id, then whether one carries it as a label. This also means a label that happens to look like an id still resolves correctly, and an id of a pane that has gone away is never mistaken for a label.

  • Two or more live panes share a label the locator matches: this is reported as an ambiguity error (exit 1) naming every candidate pane (id, label, cwd) so you can pick the right one — cyber-mux never guesses (not “most recent”, not “focused”).
  • The locator matches neither an id nor a label: it is handed to the backend as-is and takes that command’s own not-found path (typically pane-not-found, exit 1) — the same outcome as passing a stale id.

send, submit, read, focus, close, and exists all take a single <pane> argument resolved this way. template save --from <pane> resolves its --from flag identically, and defaults to the calling process’s own pane when omitted.