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
Altand press the command key.
For example, close a pane with Ctrl+A, then w, or with Alt+W.
- Press
Ctrl+Atwice to send a literalCtrl+Ato the focused pane. Esccancels 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.
| Kind | Notation | Examples |
|---|---|---|
Printable key with Ctrl, Alt, or Super | Every modifier written out; letters uppercase, case means nothing | Ctrl+A, Ctrl+Shift+A, Alt+Shift+W, Ctrl+Shift+/ |
| Printable key on its own, such as after the prefix | The character it types | s, S, ? |
| Named key | Every modifier written out | Tab, 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
| Command | Command key |
|---|---|
| New pane | Enter |
| New floating pane | Shift+Enter |
| Close pane | w |
| Toggle floating | t |
| Pin or unpin | T |
| Toggle fullscreen | f |
| Rename pane | N |
| Paste text | v |
| Paste text directly | Ctrl+V |
| Promote to master | . |
| Swap left, down, up, right | H/J/K/L, or Shift plus arrows |
| Move and reinsert left, down, up, right | Ctrl+H/J/K/L, or Ctrl plus arrows |
| Focus left, down, up, right | h/j/k/l, or arrows |
| Cycle focus forward or backward | Tab 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
| Command | Command key |
|---|---|
| Flip split axis | Space |
| Grow split or master area | = |
| Shrink split or master area | - |
| Resize mode | r |
| Cycle layout | m |
| Layouts | M |
| Rename workspace | n |
| Switch to workspace 1 through 9 | 1 through 9 |
| Move pane to workspace 1 through 9 | Shift+1 through Shift+9 |
| Move or swap whole workspace | Ctrl+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
| Command | Command key |
|---|---|
| Command palette | p |
| Keybindings help | ? |
| Copy mode | [ |
| Hint mode | u |
| Scratchpad | ` (backtick) |
| Search scrollback | / |
| Profiles | o |
| Save session as profile | O |
| Sessions | s |
| Agents | a |
| Rename or name current session | S |
| Take or request layout control | g |
| Grant layout control | e |
| Quit client | q or d |
| Toggle DevTools | F12 |
Named sessions keep running when you quit; temporary sessions follow the rules in Sessions.
Sidebar
| Command | Command key |
|---|---|
| Toggle sidebar | b |
| Collapse or restore dock panels | \ |
| Focus sidebar | B |
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-synchronizationtoggle-pane-loggingrespawn-panefocus-next-blocked-panefocus-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 Agentsagent-conversations; see Watch agents talksmart-focus-left,smart-focus-down,smart-focus-up,smart-focus-rightsettingsextensionsupdate-rozi(listed only when a newer release is known)restart-rozirelease-notes(listed only in builds from a release archive)open-configapply-profilecollaboratorsnew-temporary-sessiontoggle-input-locktoggle-control-takeoverkill-workspacekill-sessionrestart-sessionupgrade-session(listed when the attached session runs another rozi release)edit-scrollbackcopy-last-outputscreenshot-pane(listed only when a pane has focus)screenshot-uitoggle-pane-recording(listed when the focused pane can be recorded)mark-pane-recording(listed while the focused pane records)toggle-ui-recordingmark-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:
| Key | Action |
|---|---|
h/j/k/l or arrows | Resize toward that direction |
Esc or Enter | Leave 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:
| Key | Action |
|---|---|
h/j/k/l or arrows | Move the cursor |
w/b/e | Move by word |
W/B/E | Move by whitespace-delimited word |
0, ^, $ | Start, first non-blank, or end of row |
Ctrl+U, Ctrl+D | Half page up or down |
g, G | Top of history or live bottom |
/ | Search this pane |
n, N | Next or previous search match |
[, ] | Previous or next shell prompt |
o | Copy the last command output |
v or Space | Start a selection |
y or Enter | Copy and exit |
Esc or q | Exit |
| Drag | Select text |
| Click | Move 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.
Escorqexits.
Other keys are not sent to the pane while hint mode is active.
Sidebar keys
After the B command key focuses the sidebar:
| Key | Action |
|---|---|
j/k or arrows | Move through rows |
PageUp, PageDown | Move by a page |
g, G, Home, End | First or last row |
Enter | Activate the selected row |
x | Close the selected row; press again to confirm |
Tab, Shift+Tab | Next or previous tab |
h/l, arrows, Space | Collapse, expand, or toggle file-tree directories |
Ctrl+Enter | Files/Git: insert the selected file or directory path into the focused pane |
Alt+Left/Right, Alt+h/l | Move the active tab; cross into the other visible dock at the inner edge |
Ctrl+Up/Down, Ctrl+k/j | Focus the previous or next panel in this dock |
Ctrl+Left/Right, Ctrl+h/l | Focus the dock in that direction, keeping the panel level |
Alt+Up/Down, Alt+k/j | Move the active tab between panels |
Shift+Left/Right, Shift+h/l | Resize the sidebar |
Shift+Up/Down, Shift+k/j | Resize the panel split |
? | Open Keybindings… |
Esc | Return 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
| Key | Action |
|---|---|
Enter | Connect, switch, or restore |
Ctrl+N | Create a named session on the active tab's host |
Ctrl+T | Open the temporary shell on the active tab's host |
Ctrl+K twice | Kill a live session, or forget a snapshot or last-seen cache entry |
Ctrl+E twice | Restart a live session, or upgrade one on an incompatible rozi version |
Ctrl+W | Disconnect a background attachment |
Ctrl+X | Disconnect the active tab's remote host |
Tab / Shift+Tab, → / ← | Show the next or previous host's tab |
Ctrl+R | Open Remote hosts |
Opening Sessions does not probe remote hosts. See Sessions.
Remote hosts
| Key | Action |
|---|---|
Enter | Connect the selected host and stay on the list; press again to open a connected host |
Ctrl+N | Add a host |
Ctrl+E | Edit the selected host |
Ctrl+R | Reconnect a connected host and refresh its sessions |
Ctrl+K twice | Forget the selected host |
Esc | Cancel 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
| Key | Action |
|---|---|
Enter | Open a ready HTTP(S) forward in your browser, or retry a failed forward |
Ctrl+N | Add a port forward |
Ctrl+R | Retry a failed forward |
Ctrl+K twice | Close the selected forward |
Esc | Close 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
| Key | Action |
|---|---|
Enter | Open the session with the profile's name |
Ctrl+O | Launch under another name |
Ctrl+N | Capture the current session |
Ctrl+R twice | Replace the current session |
Ctrl+F | Toggle the default profile |
Ctrl+K twice | Delete the profile |
See Profiles.
Worktrees
Worktrees has no default command key. Open it from the command palette or from the sidebar's Worktrees tab.
| Key | Action |
|---|---|
Enter | Open the checkout's session |
Ctrl+Enter | Open a pane in the current session at the selected checkout |
Ctrl+C | Copy the selected checkout's full path |
Ctrl+N | Create a checkout |
Ctrl+R | Refresh checkouts and PR/CI status |
Ctrl+K twice | Remove 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+Fsaves the highlighted layout as the default. - Scrollback search: the arrow and paging keys move through results,
Enterselects one, andTabchanges the scope. - Settings:
Tab,Shift+Tab, andLeft/Rightswitch categories, each remembering its last highlighted row.Entertoggles a two-option row. A row with more values shows…after its label;Enteropens a small picker where the highlight previews the value,Entersaves, andEscrestores the old one.Shift+Entercycles 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, andLeft/Rightswitch between Installed and Discover. See the list below. - Collaborators:
Entergrants control,Ctrl+Ddeclines a request, andCtrl+Ktwice removes a client. - Rename prompts:
Entersubmits. An empty pane or workspace name clears it.
In Extensions:
| Key | Action |
|---|---|
Enter on an installed row | Enable or disable it |
Ctrl+D on an installed row | Open its report |
Enter on a Discover row | Open its installation report |
Enter again in a discovery report | Install the exact indexed commit, or open an installed extension on Installed |
Ctrl+I | Open the manual install prompt |
Ctrl+U | Update a Git-managed installation, or check every one again when no update is known; also in its report |
Ctrl+Y in the picker | Update every installation with a known update, when there is more than one |
Ctrl+R | Rescan installed manifests on Installed; refetch the index on Discover |
Ctrl+O | Open an installed manifest |
Ctrl+Y in a report | Copy the report |
Ctrl+K twice | Remove an installation; also in its report |
Ctrl+L | Open the report's link: a discovery entry's source at its indexed commit, or an installed extension's homepage |
| Arrow and paging keys | Scroll details |
Rebind a command
Bind actions under [keys] in config.toml. A bare command key follows the current prefix and modifier scheme:
[keys]
copy-mode = "b"An explicit chord replaces both the prefix and the held-modifier forms:
[keys]
spawn = "ctrl-b c"
quit = "ctrl-a d"Use add to keep the defaults and add another binding:
[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:
[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 DSee 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.
| Key | Action |
|---|---|
↑ / ↓, PageUp / PageDown, Home / End | Move the selection |
← / →, Tab / Shift+Tab | Switch tabs |
Enter or click | Change the selected binding |
Ctrl+U | Unbind the selected action |
Ctrl+D | Reset the selected binding, Prefix, or Mod to its default |
Ctrl+R | Reset every keybinding override, after confirmation |
Esc | Close |
Ctrl+A, then ?, opens Keybindings. Typing new pane narrows the list to the command.
Record a binding
- Select a row and press
Enter. - Press the new key or chord. On terminals with enhanced keyboard support, held modifiers appear as you press them (
Ctrl+, thenCtrl+Shift+, thenCtrl+Shift+A). - Review the captured binding. Press
Enterto save it, orEscto 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
Enterto take the binding. Only the colliding chords move: takingAlt+Enterfrom New pane leaves it bound to"prefix:enter". - Press
Escto 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 pickAlt,Super, orOff, then pressEnter.Offturns 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:
[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/Lto the pane, and the editor moves between its own splits. At an outer edge, the editor plugin callsrozi run-action focus-<direction>to move rozi's focus. Integrations that should not wrap around at rozi's outer edge can callfocus-<direction>-no-wrapinstead, such asfocus-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.