Skip to content

Keybindings ​

This page lists rozi's default keys and explains how to change them. To see the keys currently in effect, including your overrides, press Ctrl+A, then ? to open the Keybindings overlay. You can edit bindings there or under [keys] in config.toml.

Prefix and held modifier ​

Every command key in the tables below works in two ways by default:

  • Press the prefix Ctrl+A, release it, then press the command key.
  • Hold Alt and press the command key.

For example, close a pane with Ctrl+A, then w, or with Alt+W.

  • Press Ctrl+A twice to send a literal Ctrl+A to the focused pane.
  • Esc cancels a pending prefix.
  • A key with no binding ends prefix mode and is not sent to the pane.

Set [input] prefix, [input] modifier, or [input] modifier_shortcuts to change this scheme. With modifier_shortcuts = false, prefix commands keep working and held-modifier chords go to the pane instead. See Configuration and Core concepts.

Key notation ​

rozi writes keys the same way everywhere: on this page, in the Keybindings overlay, in footers, and in the which-key strip.

KindNotationExamples
Printable key with Ctrl, Alt, or SuperEvery modifier written out; letters uppercase, case means nothingCtrl+A, Ctrl+Shift+A, Alt+Shift+W, Ctrl+Shift+/
Printable key on its own, such as after the prefixThe character it typess, S, ?
Named keyEvery modifier written outTab, Shift+Tab, Ctrl+Shift+Left

So S after the prefix means Shift+S, while Ctrl+S never includes Shift.

A footer hint is also a button: clicking it does what pressing its key does, including the second press a destructive action asks for. Hints for moving between fields, such as Tab for the next field, are reminders only.

Default command keys ​

Panes and focus ​

CommandCommand key
New paneEnter
New floating paneShift+Enter
Close panew
Toggle floatingt
Pin or unpinT
Toggle fullscreenf
Rename paneN
Paste textv
Paste text directlyCtrl+V
Promote to master.
Swap left, down, up, rightH/J/K/L, or Shift plus arrows
Move and reinsert left, down, up, rightCtrl+H/J/K/L, or Ctrl plus arrows
Focus left, down, up, righth/j/k/l, or arrows
Cycle focus forward or backwardTab or Shift+Tab

Ctrl+V pastes text. In a local session, other clipboard formats pass through to the pane program and prefix or held-modifier paste commands read text. In a managed remote session, these paste commands also upload clipboard images and copied files, then insert their remote paths. See Select, copy, and paste.

Layout and workspaces ​

CommandCommand key
Flip split axisSpace
Grow split or master area=
Shrink split or master area-
Resize moder
Cycle layoutm
LayoutsM
Rename workspacen
Switch to workspace 1 through 91 through 9
Move pane to workspace 1 through 9Shift+1 through Shift+9
Move or swap whole workspaceCtrl+Shift+1 through Ctrl+Shift+9

Terminals that report shifted symbols may send the shifted workspace keys as !@#$%^&*(. rozi accepts both forms.

Bare n renames the workspace; N renames the pane. See Layouts and panes for layout behavior.

App, profiles, sessions, and collaboration ​

CommandCommand key
Command palettep
Keybindings help?
Copy mode[
Hint modeu
Scratchpad` (backtick)
Search scrollback/
Profileso
Save session as profileO
Sessionss
Agentsa
Rename or name current sessionS
Take or request layout controlg
Grant layout controle
Quit clientq or d
Toggle DevToolsF12

Named sessions keep running when you quit; temporary sessions follow the rules in Sessions.

CommandCommand key
Toggle sidebarb
Collapse or restore dock panels\
Focus sidebarB

Left and right sidebar toggles are available in the command palette and can be bound through toggle-left-sidebar and toggle-right-sidebar; neither has a default key. The global b command hides the current combination and restores the same docks. Panel counts and startup visibility are configured separately in Settings.

See Sidebar keys for the keys that work once the sidebar has focus.

Commands without default keys ​

These actions are available in the command palette, and you can bind them under [keys]:

  • toggle-pane-synchronization
  • toggle-pane-logging
  • respawn-pane
  • focus-next-blocked-pane
  • focus-next-agent-needing-attention, which goes to the next agent waiting for you, failed, or finished unseen, in any session or on any connected host; see Agents
  • agent-conversations; see Watch agents talk
  • smart-focus-left, smart-focus-down, smart-focus-up, smart-focus-right
  • settings
  • extensions
  • update-rozi (listed only when a newer release is known)
  • restart-rozi
  • release-notes (listed only in builds from a release archive)
  • open-config
  • apply-profile
  • collaborators
  • new-temporary-session
  • toggle-input-lock
  • toggle-control-takeover
  • kill-workspace
  • kill-session
  • restart-session
  • upgrade-session (listed when the attached session runs another rozi release)
  • edit-scrollback
  • copy-last-output
  • screenshot-pane (listed only when a pane has focus)
  • screenshot-ui
  • toggle-pane-recording (listed when the focused pane can be recorded)
  • mark-pane-recording (listed while the focused pane records)
  • toggle-ui-recording
  • mark-ui-recording (listed while the UI records)

reload-extensions is not in the command palette. Bind it under [keys], or run it with rozi run-action reload-extensions.

Appearance actions live in Settings and can also be bound by their action ids.

To run an action from a script, use rozi run-action <id>. Built-in actions and named [[commands]] entries have stable ids; inline commands defined directly under [keys] do not.

Resize mode ​

After the r command key:

KeyAction
h/j/k/l or arrowsResize toward that direction
Esc or EnterLeave resize mode

Other keys are ignored. Floating panes resize their own rectangle. In the Scrollable layout, only horizontal resizing applies, and it changes the focused column's width.

Copy mode ​

After the [ command key:

KeyAction
h/j/k/l or arrowsMove the cursor
w/b/eMove by word
W/B/EMove by whitespace-delimited word
0, ^, $Start, first non-blank, or end of row
Ctrl+U, Ctrl+DHalf page up or down
g, GTop of history or live bottom
/Search this pane
n, NNext or previous search match
[, ]Previous or next shell prompt
oCopy the last command output
v or SpaceStart a selection
y or EnterCopy and exit
Esc or qExit
DragSelect text
ClickMove the cursor

Prompt jumps and last-output copying need shell integration. See Terminal features.

Hint mode ​

After the u command key, rozi labels visible URLs, OSC 8 links, paths, Git commit ids, and your custom [[hints]] patterns. See Hint mode for what each one matches.

  • Type a lowercase label to copy its target. Each key you type hides the labels it rules out and drops off the front of the rest, so a label always shows the keys left to press.
  • Type the label with an uppercase final character to open an eligible URL or custom target.
  • Esc or q exits.

Other keys are not sent to the pane while hint mode is active.

After the B command key focuses the sidebar:

KeyAction
j/k or arrowsMove through rows
PageUp, PageDownMove by a page
g, G, Home, EndFirst or last row
EnterActivate the selected row
xClose the selected row; press again to confirm
Tab, Shift+TabNext or previous tab
h/l, arrows, SpaceCollapse, expand, or toggle file-tree directories
Ctrl+EnterFiles/Git: insert the selected file or directory path into the focused pane
Alt+Left/Right, Alt+h/lMove the active tab; cross into the other visible dock at the inner edge
Ctrl+Up/Down, Ctrl+k/jFocus the previous or next panel in this dock
Ctrl+Left/Right, Ctrl+h/lFocus the dock in that direction, keeping the panel level
Alt+Up/Down, Alt+k/jMove the active tab between panels
Shift+Left/Right, Shift+h/lResize the sidebar
Shift+Up/Down, Shift+k/jResize the panel split
?Open Keybindings…
EscReturn focus to the pane

See Sidebar for what each tab shows.

In Files and Git, Ctrl+click inserts a file or directory path without toggling directories or running the tab's custom click action. Neither Ctrl+click nor Ctrl+Enter presses Enter in the pane. In Worktrees, they open the checkout as a pane rather than a session, or the reverse with [worktrees] sidebar_open = "pane".

Picker keys ​

Sessions ​

KeyAction
EnterConnect, switch, or restore
Ctrl+NCreate a named session on the active tab's host
Ctrl+TOpen the temporary shell on the active tab's host
Ctrl+K twiceKill a live session, or forget a snapshot or last-seen cache entry
Ctrl+E twiceRestart a live session, or upgrade one on an incompatible rozi version
Ctrl+WDisconnect a background attachment
Ctrl+XDisconnect the active tab's remote host
Tab / Shift+Tab, → / ←Show the next or previous host's tab
Ctrl+ROpen Remote hosts

Opening Sessions does not probe remote hosts. See Sessions.

Remote hosts ​

KeyAction
EnterConnect the selected host and stay on the list; press again to open a connected host
Ctrl+NAdd a host
Ctrl+EEdit the selected host
Ctrl+RReconnect a connected host and refresh its sessions
Ctrl+K twiceForget the selected host
EscCancel the connection in progress, or close Remote hosts when none is running

Only one host connects at a time. While it does, Enter and Ctrl+R wait for it, but navigation, Ctrl+E, and Ctrl+K still work on the other rows. In the host editor, Tab and Shift+Tab move between lines.

A host's own Sessions view uses Enter to attach, Ctrl+N for a named session, Ctrl+T for a temporary session, Ctrl+K twice to kill a live session or forget a last-seen cache entry, Ctrl+E twice to restart, Ctrl+W to disconnect a retained attachment, and Ctrl+X to disconnect from the host. Esc goes back to Remote hosts, then to Sessions.

Ports ​

KeyAction
EnterOpen a ready HTTP(S) forward in your browser, or retry a failed forward
Ctrl+NAdd a port forward
Ctrl+RRetry a failed forward
Ctrl+K twiceClose the selected forward
EscClose the form or overlay

In the add-forward dialog, Tab and Shift+Tab move between Remote host, Remote port, and Local port.

Agents ​

Agents lists every agent rozi knows about, on this machine and on every connected host, with the ones that need attention first. Enter goes to the highlighted agent: rozi changes focus if the agent is in the session on screen, or attaches to its session first if it is not. See Go to an agent.

Profiles ​

KeyAction
EnterOpen the session with the profile's name
Ctrl+OLaunch under another name
Ctrl+NCapture the current session
Ctrl+R twiceReplace the current session
Ctrl+FToggle the default profile
Ctrl+K twiceDelete the profile

See Profiles.

Worktrees ​

Worktrees has no default command key. Open it from the command palette or from the sidebar's Worktrees tab.

KeyAction
EnterOpen the checkout's session
Ctrl+EnterOpen a pane in the current session at the selected checkout
Ctrl+CCopy the selected checkout's full path
Ctrl+NCreate a checkout
Ctrl+RRefresh checkouts and PR/CI status
Ctrl+K twiceRemove a linked checkout

In the new-worktree form, Ctrl+E adds a worktree directory inside the repository to .git/info/exclude when Git does not already ignore it. See Worktrees.

Other overlay keys ​

In every overlay, Esc closes it, or returns to the parent overlay if one opened another. Enter activates the selected row or submits a prompt.

In pickers, hold left Alt and press j/k to select the next/previous row, or h/l to switch to the previous/next tab. Plain h/j/k/l still type into the filter. Right Alt and AltGr do not navigate. These shortcuts require a terminal that reports physical modifier presses through the Kitty keyboard protocol; arrows remain available everywhere. If you opened the picker with Alt already held, release and press it again before navigating. Left Alt+j/Alt+k leave the search text unchanged even when there are no matches.

  • Layouts: Ctrl+F saves the highlighted layout as the default.
  • Scrollback search: the arrow and paging keys move through results, Enter selects one, and Tab changes the scope.
  • Settings: Tab, Shift+Tab, and Left/Right switch categories, each remembering its last highlighted row. Enter toggles a two-option row. A row with more values shows … after its label; Enter opens a small picker where the highlight previews the value, Enter saves, and Esc restores the old one. Shift+Enter cycles the live value without opening the picker. Theme and Terminal padding have their own editors. In the Sessions category, On shared attach chooses Ask, Follow, or Take control for writable attaches to a session another client controls.
  • Extensions: Tab, Shift+Tab, and Left/Right switch between Installed and Discover. See the list below.
  • Collaborators: Enter grants control, Ctrl+D declines a request, and Ctrl+K twice removes a client.
  • Rename prompts: Enter submits. An empty pane or workspace name clears it.

In Extensions:

KeyAction
Enter on an installed rowEnable or disable it
Ctrl+D on an installed rowOpen its report
Enter on a Discover rowOpen its installation report
Enter again in a discovery reportInstall the exact indexed commit, or open an installed extension on Installed
Ctrl+IOpen the manual install prompt
Ctrl+UUpdate a Git-managed installation, or check every one again when no update is known; also in its report
Ctrl+Y in the pickerUpdate every installation with a known update, when there is more than one
Ctrl+RRescan installed manifests on Installed; refetch the index on Discover
Ctrl+OOpen an installed manifest
Ctrl+Y in a reportCopy the report
Ctrl+K twiceRemove an installation; also in its report
Ctrl+LOpen the report's link: a discovery entry's source at its indexed commit, or an installed extension's homepage
Arrow and paging keysScroll details

Rebind a command ​

Bind actions under [keys] in config.toml. A bare command key follows the current prefix and modifier scheme:

toml
[keys]
copy-mode = "b"

An explicit chord replaces both the prefix and the held-modifier forms:

toml
[keys]
spawn = "ctrl-b c"
quit = "ctrl-a d"

Use add to keep the defaults and add another binding:

toml
[keys]
spawn = { add = "super-enter" }

A modified key is literal unless it starts with scheme:. For example, copy-mode = "scheme:ctrl-t" creates both the prefix form and the held-modifier form.

prefix: and mod: use one half of the scheme. Unlike literal chords, they follow later changes to the prefix or modifier:

toml
[keys]
spawn = "prefix:enter"      # Ctrl+A Enter, and Ctrl+B Enter after a prefix change
copy-mode = "mod:b"         # Alt+B, dormant while modifier_shortcuts is off
quit = "ctrl-a d"           # always Ctrl+A D

See Configuration for lists, run, send, and named commands.

Edit keybindings in rozi ​

The Keybindings overlay (the ? command key) edits bindings without opening config.toml. Type to filter the list; the search field keeps focus while you navigate.

KeyAction
↑ / ↓, PageUp / PageDown, Home / EndMove the selection
← / →, Tab / Shift+TabSwitch tabs
Enter or clickChange the selected binding
Ctrl+UUnbind the selected action
Ctrl+DReset the selected binding, Prefix, or Mod to its default
Ctrl+RReset every keybinding override, after confirmation
EscClose

Record a binding ​

  1. Select a row and press Enter.
  2. Press the new key or chord. On terminals with enhanced keyboard support, held modifiers appear as you press them (Ctrl+, then Ctrl+Shift+, then Ctrl+Shift+A).
  3. Review the captured binding. Press Enter to save it, or Esc to discard it and record again. Other keys are ignored at this step.

Press Esc before capturing anything to close the card without changing the binding.

rozi saves exactly the modifiers the terminal reports. It never adds Shift because a letter is uppercase, since Caps Lock also produces capitals. Terminals without enhanced keyboard reporting send Ctrl+A and Ctrl+Shift+A identically, so both record as Ctrl+A there.

Each change is written to config.toml at once and takes effect immediately. A recorded command key such as Enter is saved as "enter" and follows the scheme; a chord with Ctrl, Alt, or Super is saved literally.

Resolve conflicts ​

If the new binding already belongs to another action, the card lists every conflict. Recording the prefix key itself reports a conflict with Prefix rather than with every command after it.

  • Press Enter to take the binding. Only the colliding chords move: taking Alt+Enter from New pane leaves it bound to "prefix:enter".
  • Press Esc to record a different binding.

You cannot take the prefix key for a command this way. Change Prefix first.

Change the prefix or modifier ​

  • The Prefix row records one key, like any other binding.
  • The Mod row opens a chooser. Use ← / → to pick Alt, Super, or Off, then press Enter. Off turns off held-modifier shortcuts and remembers the modifier for when you turn them back on.

Every command key that follows the scheme moves with the new Prefix or Mod. Literal chords such as ctrl-a q stay as written. If some literal chords use the old Prefix or Mod, the card counts them, and Tab offers to convert them to prefix: or mod: forms so they move too. Nothing is converted unless you turn that on.

rozi refuses a Prefix or Mod change that would make two commands collide, and lists the colliding pairs.

Read the list ​

  • An unchanged binding shows its keys.
  • An override shows current ← default. An unbound override shows — ← default.
  • Unbind moves the action to the Unbound tab.
  • Workspace ranges, mouse gestures, and the Modes tab are reference only.

Built-in actions and named [[commands]] entries are editable. Inline run and send entries in [keys] have no stable action id, so you can change them only in config.toml.

Split-aware navigation ​

The smart-focus-left, smart-focus-down, smart-focus-up, and smart-focus-right actions let one set of keys move between editor splits and rozi panes. The vim-rozi-navigator extension suggests these bindings when they are free:

toml
[keys]
smart-focus-left = "ctrl-h"
smart-focus-down = "ctrl-j"
smart-focus-up = "ctrl-k"
smart-focus-right = "ctrl-l"

With that extension installed, this block is optional. Keep it to use these keys whatever the extension's state, or to override a conflicting binding. Any explicit entry for these actions, including [] to leave one unbound, replaces the extension's suggestion.

When you press a smart-focus key, rozi checks whether the focused pane is running an editor listed in [navigation] editors:

  • If it is, rozi forwards Ctrl+H/J/K/L to the pane, and the editor moves between its own splits. At an outer edge, the editor plugin calls rozi run-action focus-<direction> to move rozi's focus. Integrations that should not wrap around at rozi's outer edge can call focus-<direction>-no-wrap instead, such as focus-left-no-wrap.
  • If it is not, rozi moves pane focus itself.

On Linux and macOS, rozi checks every program in the pane's foreground process group, so it finds an editor started through a shell function, package runner, or other wrapper. On other platforms, it uses the command name the shell reports.

An enabled extension can add program names through [[navigation_targets]]. An explicit [navigation] editors entry, even an empty list, replaces both the built-in and the extension names.

The editor plugin manages its own splits and uses the same rozi run-action calls in local and attached sessions. See the Vim and Neovim navigator, whose repository contains both the editor plugin and the rozi extension.

Platform caveats ​

Alt is the default held modifier because terminal emulators usually deliver it. Many desktop environments reserve Super, and Windows intercepts most Windows-key chords before a console application receives them.

Windows Terminal and the classic console also intercept some Alt chords: Alt+Enter toggles fullscreen, and Alt+Space opens the window menu. Other host bindings can collide with rozi's held-modifier shortcuts. To avoid this, use the Ctrl+A prefix, unbind the host keys you want rozi to receive, or rebind the commands under [keys].

On Windows, Ctrl+C reaches the focused pane, and closing the console window detaches the client. Terminals report modified arrows and shifted symbols differently, so rozi registers the common forms of its default keys.

A bare F12 goes to the pane application. rozi's DevTools command uses only the prefix or held-modifier form.

MPL-2.0