Keybindings

Design Philosophy #

When the terminal panel is focused, all keys are forwarded to the PTY except most keys with a Ctrl modifier (intercepted as global commands — though a handful that collide with readline, such as Ctrl+B/D/E/F/O/P/R/S/U/W, defer to the agent CLI; see Terminal passthrough below) and Shift+arrow/page / Alt+page keys (for scrollback).

Why Ctrl, not Alt? Coding-agent CLIs and shell programs heavily use Alt-key combinations. Ctrl has established precedent for meta actions in terminal multiplexers (tmux uses Ctrl+B , screen uses Ctrl+A ).

Global Keys #

Key Action Mnemonic
Ctrl+Q Quit (detach sessions) Q uit
Ctrl+N New session (opens repo picker) N ew
Ctrl+C Copy selection, or send SIGINT if none C opy
Ctrl+V Paste from clipboard Paste
Ctrl+P Automations (scheduled agent runs) P rogram
Ctrl+W / F5 Toggle tasks panel (todo list) Work items
Ctrl+/ Global search (sessions / tasks / automations / files) / = search
Ctrl+T Toggle shell pane T erminal
Ctrl+X / F7 Toggle code-review pane (native diff reviewer) Review
Ctrl+H Focus previous pane (cycle backward) Vim: h = left
Ctrl+J Select next session Vim: j = down
Ctrl+K Select previous session Vim: k = up
Ctrl+L Focus next pane (cycle forward) Vim: l = right
Ctrl+D Delete session Vim: d = delete
Ctrl+O Open active session's repos/worktrees in editor O pen
Ctrl+R Restart active session R estart
Ctrl+F Fork active session F ork
Ctrl+S Sync worktrees with origin/main S ync
Ctrl+Z Undo session delete Z = undo
Ctrl+U Restore deleted sessions U ndelete
Ctrl+Y / F4 Pick TUI theme Color Y oke
F1 / Ctrl+G Keybindings help + interactive editor Universal
Ctrl+, / F6 Settings panel (edit settings.toml) , = preferences
Ctrl+B / F2 Toggle info panel Next to F1
Ctrl+E / F3 Toggle file viewer Next to F2
F9 Toggle session-list pane Hide for a full-width terminal; right-side panels stay

Everything here is rebindable. Press F1 and pick an action to capture a new chord live, or hand-edit ~/.config/thurbox/keybindings.json (an action name → one or more chord strings); changes reload without a restart. See Configuration → keybindings.json for the format.

Terminal passthrough: a handful of Ctrl+<letter> commands ( Ctrl+D / Ctrl+O / Ctrl+R / Ctrl+F / Ctrl+S and the panel toggles) collide with readline. When a session terminal is focused they defer to the agent CLI; reach them from the session list, or via their F -key alternate ( F2 / F3 / F5 ). Navigation and app-control chords ( Ctrl+H / J / K / L , Ctrl+Q , Ctrl+N ) always work, even in the terminal.

macOS: in kitty-protocol terminals (iTerm2 3.5+, kitty, WezTerm, Ghostty) the Command key works as a modifier: Cmd+J / Cmd+Shift+J switch sessions, Cmd+L / Cmd+Shift+L cycle panes, and any action can be rebound to a cmd+… chord (aliases: super , command ). Terminal.app delivers no Cmd chords; everything else works there. F1–F5 need Fn on Mac laptops unless function keys are set to standard.

List Navigation #

When the session list is focused:

Key Action
j / Down Next item
k / Up Previous item
Enter Select / focus
Shift+J / Shift+K Move the selected session (and its nested children) down / up. Manual order wins over status — whole repo groups swap past a group edge.
Shift+S Sort sessions alphabetically by name within each repo group

Manual ordering and the alphabetical sort are persisted, so they survive restarts and sync across concurrent instances.

Press Ctrl+/ to open the global search strip, which searches every scope at once — sessions (name, agent, branch, and live terminal-buffer content), tasks, automations, and the active session's file tree. It replaces the old per-pane / filters.

  • Type to filter; matches highlight live in the panels themselves.
  • Up / Down (or Ctrl+P / Ctrl+N ) move the selection, Enter jumps to the result and focuses its pane, and Esc restores the prior state.

The file viewer keeps its own in-file / text search, which is unrelated to global search.

Terminal Scrollback & Selection #

Key Action
Shift+Up / Shift+Down Scroll 1 line
Shift+PageUp / Shift+PageDown Scroll half page
Alt+PageUp / Alt+PageDown Scroll half page (fallback where the terminal claims Shift+Page, e.g. Terminal.app/iTerm2)
Mouse wheel Scroll 3 lines
Mouse drag Select text
Any other key Snap to bottom + forward to PTY

When scrolled up, the block title shows a [N↑] indicator and the PTY cursor is hidden.

Modal Keybindings #

Branch selector (Worktree mode)

Key Action
j / Down Next branch
k / Up Previous branch
Enter Select base branch, open name prompt
Esc Cancel

New branch name prompt

Key Action
Enter Confirm name, create branch and worktree
Esc Cancel

Automations #

A dedicated Automations pane sits beneath the session list (always present). It joins the Ctrl+H / Ctrl+L focus cycle; Ctrl+P opens the same list as a modal at any width.

Automations pane / list (focused)

Key Action
Ctrl+N / n New automation (opens the editor)
j / k Select previous / next automation
Space Toggle enabled / disabled
r Run now
e / Enter Edit
d Delete

Automation editor

Key Action
Tab / Move between fields
/ Space Adjust the focused selector / stepper (trigger, time, action)
Ctrl+E Toggle enabled
Enter Save
Esc Cancel

Agent Picker #

The Ctrl+N new-session flow ends with an agent picker. The agent picker is skipped when only one agent is defined in agents.toml .

Key Action
j / Down Next agent
k / Up Previous agent
Enter Confirm selection
Esc Cancel session creation