Keybindings cheatsheet
Every default binding in nebelhaus, grouped by where it lives. The same list is available live in-system: tap ⇪ then / to open Pounce’s cheatsheet, generated from your actual app roster.
Notation: ⌥ Option/Alt · ⌘ Command · ⌃ Control · ⇧ Shift · ⇪ Caps-Lock.
These are the defaults. The three keys everything else hangs off are options
— nebelhaus.keys.leader (what ⇪ is), nebelhaus.keys.windowNav (what ⌥ is)
and nebelhaus.keys.palette (what opens Pounce) — so on a rice that has changed
them, read ⇪ and ⌥ below as “the leader” and “the nav modifier”. Any of the
three can be "none", which removes its bindings rather than moving them. See
rebinding; your own live
cheatsheet always reflects the keys you actually have.
Tiling — main mode (prowl)
Section titled “Tiling — main mode (prowl)”| Keys | Action |
|---|---|
⌥H ⌥J ⌥K ⌥L | Focus left / down / up / right (Vim-style twin of ⇪ + arrows) |
⌥/ | Tiles layout (toggles horizontal ↔ vertical split) |
⌥, | Accordion layout (toggles horizontal ↔ vertical) |
⌥F | Toggle fullscreen |
⌥Tab | Previous workspace (back-and-forth) |
⌥⇧Tab | Move workspace to next monitor |
⌥⇧; | Enter service mode |
⌘Space | Open Pounce |
Launch mode — tap ⇪ (prowl)
Section titled “Launch mode — tap ⇪ (prowl)”| Keys | Action |
|---|---|
<app-key> | Launch / focus that app (T terminal, B browser by default) |
1–4 | Focus workspace 1–4 |
⇧1–⇧4 | Throw the focused window to workspace 1–4 and follow it there |
⇧<app-key> | Throw the focused window to that app’s workspace and follow it there |
←↓↑→ | Focus tiled window; drops into navigate mode (arrows repeat, ⇧+arrow moves the window, Esc/Return exits) |
- / = | Enter resize mode (shrink / grow) |
V | Clipboard history (Pounce) |
E | Emoji picker (Pounce) |
Z | Reopen the last closed app (the ⌘⇧T analog) |
, | Open macOS System Settings (mirrors the ⌘, convention) |
Backtick | Re-sort every window to its workspace (wake recovery) |
/ | Show the cheatsheet |
Esc | Exit launch mode |
Service mode — ⌥⇧; (prowl)
Section titled “Service mode — ⌥⇧; (prowl)”| Keys | Action |
|---|---|
R | Flatten the workspace tree |
F | Toggle floating ↔ tiling |
Backspace | Close all windows except current |
⌥⇧H/J/K/L | Join with the neighbour |
↑ / ↓ | Volume up / down |
⇧↓ | Mute |
Esc | Reload config and exit |
Terminal — zellij (hearth)
Section titled “Terminal — zellij (hearth)”| Keys | Action |
|---|---|
Super P | New pane (inherits cwd; hops to the main checkout inside a worktree) |
Super ⇧P | New pane, stay here (inherits cwd, no worktree hop) |
Super T | New tab at $HOME (born named ~) |
Super ⇧T | New tab at the focused pane’s directory (same worktree hop as Super P) |
Super F | Toggle the focused pane fullscreen (zoom to fill the tab, again to restore) |
Super R | Reload the terminal stack — quit/reopen Ghostty and restart zellij with the same tabs, panes and cwds; live Claude panes resume (also zreload from a shell) |
Super Y | yazi peek (floating previews; Enter on a dir opens a new tab there) |
Super ⇧Y | yazi jump (browse, then shell in that dir) |
Super L | Open Links picker (every URL from focused pane’s transcript/scrollback) |
Ctrl Tab / Ctrl ⇧Tab | Tab history back / forward (most-recently-used, browser-style) |
Alt [ / Alt ] | Cycle swap layouts (grid → spiral → columns) — works locked too |
Super C | Spawn an isolated agent (own worktree) in a new pane — your agents.default client: Claude Code via its own --worktree, Codex or Opencode via wt new |
Super ⇧C | The same agent, in place of the focused pane instead of beside it — the replaced pane is suspended, not killed, and comes back when the agent quits |
Ctrl ⌥⇧C | Spawn a resident agent (this checkout) |
Locked by default. zellij boots in Locked input mode, so its single-key
submode leaders (pane, tab, resize) stay inert until you press Ctrl g — a stray
keystroke can’t drop you into a submode. The Super-prefixed launchers above work
regardless of the lock, and so do Alt [ / Alt ] — picking a layout is a
workspace act, not a submode. The rest of zellij’s Alt row stays inert while
locked on purpose: Alt h/j/k/l and Alt-arrows are word motions the shell and
your editor want. Flip it with nebelhaus.hearth.zellijStartLocked.
Clickable links work across two modifiers. ⌥-click a file path (or a
visible URL / bare domain) in the terminal to open it — a path opens a new tab
cd’d there, a link opens in the browser. ⌘-click opens any web link,
including embedded hyperlinks whose visible text isn’t the URL (e.g. Claude
Code’s /tui session and PR links) — those only respond to ⌘-click, since the
URL is hidden in the terminal escape sequence rather than shown on screen.
Pounce — ⌘Space
Section titled “Pounce — ⌘Space”| Keys | Action |
|---|---|
| type | Fuzzy-search |
↑ / ↓ | Move selection |
Return | Default action |
⇧Return | Insert a newline (the query field is multi-line) |
⌘Return | Modifier action (e.g. Reveal in Finder) |
⌥Return / ⌃Return | Alternate actions (when shown) |
⌥Return (Find Files) | Copy the path |
Tab | Cycle sections / emoji categories |
Esc | Dismiss |
Ghostty note
Section titled “Ghostty note”Ghostty deliberately unbinds ⌘T, ⌘P, ⌘⇧P, ⌘Y, ⌘⇧Y, ⌘⇧T, ⌘F,
⌘R, ⌘C and ⌘⇧C so zellij owns them — the same keys work whether or not
you’re multiplexed. (⌘⇧C is unbound pre-emptively: Ghostty claims nothing there
today, and the unbind keeps it that way if a future release does.)
Ctrl-Tab is forwarded to zellij via the kitty keyboard protocol.
⌘D and ⌘⇧D are unbound too, but nothing takes them over: they do nothing.
Ghostty’s defaults there are its own new_split:right / new_split:down, which
nest a second terminal surface inside the one zellij is driving — invisible to
the multiplexer, so its layout, status bar and pane keys would apply to only half
the window. Since ⌘D is muscle memory from other terminals, it’s an easy
accident; use Super P for a pane instead.