Skip to content

Keybindings

Press the prefix (Ctrl+Space by default), then a key. Ctrl+Space ? shows the live cheat-sheet. Remap anything, change the prefix, or apply a preset in Settings → Keys.

Key Command Key Command
←↓↑→ / hjkl focus pane c new tab
; next pane (cycle) n / p / cycle tabs
[ / ] focus history back / forward . / > next blocked / done agent
, rename tab v / s / + split right / down / auto
x close pane N new workspace (folder picker)
z zoom pane D close workspace
r resize mode (then arrows) w / W next / previous workspace
f fork agent session G new worktree
b / B toggle both / right sidebar g git tab
a / A agents All/Active / All workspaces/Here o orchestration board
e focus FILES tree m Mission Control
M jump palette (tabs / workspaces / agents) i focus DIFF review
t named sessions / global fuzzy finder
q / d detach = Settings
19 jump to tab Shift+1Shift+9 jump to workspace

The prefix is configurable. From the Prefix row at the top of Settings → Keys, press a safe key, then press it again to confirm. You can use a single function key (F1F12) or a character/Space chord containing Ctrl or Alt, such as Ctrl+b, Alt+\, or Ctrl+Alt+Space. Bare text keys are rejected so Luvus can never swallow normal typing. Super/Cmd, Hyper, and Meta are rejected because desktop environments do not report them consistently. Pressing the configured prefix twice sends that literal key to the focused pane.

The no-Ctrl (F12) preset is the most portable single-key option. On a Mac keyboard configured to use media controls, press Fn+F12; Luvus still receives it as F12. Luvus asks you to confirm any captured prefix before saving it, so an operating-system or terminal shortcut cannot silently lock you out.

The Preset row below it applies a whole bundle at once. Available presets are luvus (default) (Ctrl+Space), no-Ctrl (F12), and tmux. The tmux preset switches the prefix to Ctrl+b and maps the tmux keys onto luvus:

tmux luvus command
% / " split right / down
o next pane
, rename tab (window)
( / ) previous / next workspace (session)
w jump palette (choose-window / choose-tree)

The rest of tmux’s keys (c, n, p, x, z, d, digits) already match luvus’s defaults. A preset is a starting point, so you can still rebind individual keys afterward. Choose luvus (default) to revert.

Note: , renames the tab on both the luvus defaults and the tmux preset (the same as tmux’s rename-window), and Settings lives on =. The Menu button (top-right) always opens Settings too.

The pane focus history behaves like a browser or Vim jump list and crosses tabs and workspaces. Ctrl+Space [ walks backward through previously focused panes; Ctrl+Space ] walks forward again. A new ordinary focus change after going back starts a new branch and clears the forward history. Closed panes are skipped.

Agent navigation is separate: Ctrl+Space . cycles through Blocked agents and Ctrl+Space > cycles through Done agents.

M (or w under the tmux preset) opens the palette: every tab, every workspace, and every agent in one overlay. Type to filter, and use the scope chips (or Tab) to narrow it to one category. Arrows move, Enter jumps, Esc clears the filter then closes.

Shift+1 through Shift+9 jump directly to workspaces 1 through 9. The number follows the current WORKSPACES sidebar display order, including pinned workspaces and grouped worktrees. A position that is not currently available does nothing.

The stable configuration ids are jump_workspace_1 through jump_workspace_9. For example:

{
"keybindings": {
"jump_workspace_1": "u",
"jump_workspace_2": ""
}
}

Settings → Keys exposes each action separately, so users whose keyboard layout or terminal reports shifted number keys differently can rebind or disable them. The example above rebinds workspace 1 to u and disables workspace 2.

The tmux preset reserves % and ( for split-right and previous-workspace, which conflict with the terminal symbols for Shift+5 and Shift+9. Those two direct workspace jumps are therefore unbound under that preset until reassigned.

/ opens one finder across the selected Luvus home. It ranks named sessions, workspaces, tabs, panes, agents, file paths, and retained pane output. Use Tab or Shift+Tab to move through All, Navigate, Files, and Output. Ctrl+i toggles case-sensitive retained-output matching. Enter opens the selected target. A non-empty query needs one Esc to clear and a second Esc to close.

Navigation results appear first. File, output, and other running-session results arrive in the same list without resetting the selected row. See the Global Fuzzy Finder guide for limits and CLI use.

Ctrl+Space t focuses the named-session selector directly. Use / or j / k to move, Home / End to reach either edge, and Enter to switch or create a session. Press a to open the selected row’s actions, then use the same navigation keys and Enter to run one. q or Esc closes the active menu; inside the new-session prompt, q remains ordinary name text and Esc returns to the list. Like every configurable prefix command, Sessions: focus can be rebound in Settings → Keys. A running non-current session offers Stop. A stopped session offers Start, and a stopped named session also offers Delete with confirmation. The same actions are available by right click.

Shift+↑ enters scroll mode. The built-in sidebar lists have matching focus commands: Ctrl+Space w for WORKSPACES, Ctrl+Space a for AGENTS, Ctrl+Space e for FILES, and Ctrl+Space i for DIFF. The Sessions selector at Ctrl+Space t follows the same keyboard model. Use arrows or j / k to move, Enter to open the selected row, a to open its right-click actions, and Esc or q to return input to the pane. AGENTS also accepts f for All / Active and s for all workspaces / this workspace. FILES additionally uses h / l to collapse or expand folders. After Enter opens a file view, x closes that view. An opened DIFF review closes with q or Esc.

Rename dialogs (a tab, a workspace, or a pane): / move the text cursor, Home / End jump to the start or end of the name, Backspace and Delete remove the character before or after the cursor, Enter saves, and Esc cancels.

Right-click menus (no key needed): a tab to rename it, a workspace row for its menu (rename / close / path visibility / worktrees / git / board), a pane to split or close it, an agent row for quick actions and path visibility, or a FILES row to open it read-only or in an editor, explicitly preview Markdown/Mermaid, or manage the entry (new / rename / delete). See Panes, Tabs & Workspaces and Browsing & Opening Files.

Custom bindings persist in config.json: prefix holds the prefix chord, and keybindings maps each command id to a key (an empty value unbinds it). Pressing the configured prefix and then ? shows the current map, and every command is editable in Settings → Keys (the vim hjkl and Tab aliases included, since nothing is bound behind your back).

direct_keybindings is a separate, empty-by-default map for shortcuts that run without the prefix. For example, this enables direct tab switching:

{
"direct_keybindings": {
"prev_tab": "alt+left",
"next_tab": "alt+right"
}
}

Direct shortcuts deliberately take the configured keys away from the focused shell, nested TUI, focused FILES/DIFF dock, or dashboard. They are global in normal mode; an open modal, text editor, scroll/copy/resize mode, or the configured Luvus prefix still takes precedence. Use semantic chords such as alt+right, not terminal byte sequences such as ESC[1;3C. Supported names include arrows, home, end, pageup, pagedown, tab, enter, esc, delete, insert, space, and f1f12; every chord must contain Ctrl, Alt, or Shift, and printable characters additionally require Ctrl or Alt.