Panes arrange themselves
Each new pane splits the focused one along its longer side, so the screen stays balanced without dragging borders. Switch between seven layouts, float a pane, or fill the screen with one key.
Layouts and panes →Tiling terminal multiplexer
Your terminals, tiled like a window manager.
rozi arranges panes as you open them, keeps named sessions running after you leave, reaches other machines over SSH, and shows which coding agents need you. Change any of it live, from inside rozi. On Linux, macOS, and Windows.
For Linux and macOS. Installs the current release and links ~/.local/bin/rozi.
Recorded by rozi itself, like every screenshot and clip on this site. See how →
Recorded by rozi · real panes, real programs
rozi reads what coding-agent CLIs draw and marks each pane working, blocked, or done. Activity groups them by repository and branch, and the Agents view, on Alt+A, lists the one waiting on you first: Enter takes you there. 23 agents are built in.
Agent detection →All of it works out of the box
Each new pane splits the focused one along its longer side, so the screen stays balanced without dragging borders. Switch between seven layouts, float a pane, or fill the screen with one key.
Layouts and panes →Detach and your shells, editors, and servers carry on. Come back later, from another window, to the same panes and scrollback. After a reboot, rozi restores the layout, the commands, and their history.
Sessions →Open a Git worktree from the Worktrees picker and rozi gives it a named session of its own, with its own shells and running processes. Move between branches without stashing; each row shows the branch's pull request and CI status.
Worktrees →Several clients can attach to one named session and see the same panes and layout, while each keeps its own focus, theme, and scrollback. One controls the layout and the others follow, or join read-only.
Shared sessions →Arrange your panes once and save them with Ctrl+A, then O. rozi dev attaches to the dev session when it is running, or starts it from the profile: the same commands, directories, and layout.
Profiles →True color, inline images, mouse support, scrollback search, and a vi-style copy mode. With shell integration, new panes open in the directory you are working in.
Terminal features →Previewed live · saved to config.toml · no restart
Open Settings and move through a list: the theme, the pane frames, or the layout change behind the picker as you go. Enter keeps a value and writes it to config.toml; Esc puts the old one back.
Every tab here is the same workspace. Only the lines under the picture differ, and the programs in the panes pick up the theme too.
Customize rozi →31 themes →[theme]
name = "rozi"[theme]
name = "rozi"Keybindings
Ctrl+A then ? lists every key in effect. Pick a command, press the new chord, and rozi shows it before saving, including any command that already uses it. The binding works the moment you confirm.
The prefix and the held modifier are rows in the same list, so moving from Alt to Super takes one change. Edit keybindings →
Five pane styles · one switch turns it all off
Panes arrive and leave with one of five effects, chosen separately for opening and closing, and workspaces slide past one another as you switch between them. Pictures in panes take part too: a portal clips them and particles scatter them.
Prefer a still screen? [animations] enabled = false turns every animation off at once, and Settings › General › Animations has a switch for each one.
[animations]
pane_open_style = "particles"
pane_close_style = "particles"[animations]
pane_open_style = "particles"
pane_close_style = "particles"[animations]
pane_open_style = "portal"
pane_close_style = "portal"[animations]
pane_open_style = "scan"
pane_close_style = "scan"[animations]
pane_open_style = "slide"
pane_close_style = "slide"[animations]
pane_open_style = "scale"
pane_close_style = "scale"[animations]
pane_open_style = "particles"
pane_close_style = "particles"[animations]
workspace = true
workspace_ms = 220Every command works two ways: press the prefix, then a key, or hold Alt and press the key. Rebind either, or hold Super instead.
| Prefix, then a key | Hold Alt | |
|---|---|---|
| Ctrl+AEnter | Alt+Enter | Open another pane |
| Ctrl+Ah j k l | Alt+H…L | Move focus by direction |
| Ctrl+Af | Alt+F | Fullscreen the focused pane |
| Ctrl+At | Alt+T | Float the pane on top |
| Ctrl+A1…9 | Alt+1…9 | Jump to a workspace |
| Ctrl+Ap | Alt+P | Search every command |
| Ctrl+A? | Alt+? | Show and edit every key |
| Ctrl+Ad | Alt+D | Leave; named sessions keep running |
Everything Settings changes lives in one file, ~/.config/rozi/config.toml on Linux and macOS. rozi applies it when you save, without closing a pane, and a mistake never takes it down: a bad value falls back to its default with a warning.
[theme]
name = "catppuccin-mocha"
[input]
prefix = "ctrl-a" # the key that starts a command
modifier = "alt" # or "super"
[layout]
default = "dwindle" # how new workspaces arrange panes
[pane]
border_style = "rounded"One file · live reload · 128 rebindable commands
[theme]
name = "catppuccin-mocha" # a preset, "system", or your own file
[pane]
border_mode = "merged" # neighbours share one seam
border_style = "rounded" # plain, double, thick
titlebar = "integrated"
workbar_powerline = true
[animations]
pane_open_style = "portal" # or "scale", "slide", "scan"
pane_close_style = "particles"
geometry_ms = 220Configure presets, custom theme files, borders, titlebars, and animation timing.Reference →
Any language · public protocol · api = 1
rozi extensions newscaffoldrozi extensions checkvalidaterozi run-action reload-extensionsinstallrozi extensions listconfirm[extension]
id = "git-tools"
title = "Git tools"
version = "0.1.0"
api = 1
[[commands]]
id = "branches" # invoked as git-tools.branches
label = "Switch branch"
exec = ["python", "{extension_dir}/bin/branches.py"]
[[services]]
name = "watch"
exec = ["./bin/watch", "--json"]
restart = "on-failure"rozi pickrozi publishrozi subscriberozi notifyrozi run-actionFor agents, scripts, demos, and bug reports
rozi capture-ui returns the screen as rozi drew it: every pane, border, and overlay, and the images programs displayed. rozi capture-pane does the same for one pane, and works on a detached session too. Ask for plain text, ANSI, or a PNG, so a coding agent can look at what it is working in.
rozi record keeps a pane's screen over time, change by change. The session records it, so it carries on after you detach: review in the morning what an agent did overnight. Record the whole window instead for a demo, then replay it in a terminal or export a GIF, a video, or an asciinema cast.
This page is the demo: every picture and recording on it came out of these commands.
# one pane, as text with its colors
rozi capture-pane --target 3 --render ansi
# record this pane, label a moment, stop
rozi record start --output ~/demo.rozirec
rozi record mark "tests started"
rozi record stop
# watch it back, or turn it into frames
rozi record play ~/demo.rozirec --speed 2
rozi record export ~/demo.rozirec --to png-frames framesEverything in v0.0.48
Seven layoutsshape-aware splitsfloatingfullscreenmove, swap, and promoteresize modenine workspacesmerged bordersgaps and paddingscratchpadanimations
True colorinline imagesmouse reportingscrollback searchvi copy modeclipboard and OSC 52hintsedit scrollbackshell integrationpane loggingsynchronized typing
Named sessionstemporary sessionsseveral windows per sessionshared sessionsremote over SSHrestore after rebootautosaveprofilessession picker
31 themessystem themelive reloadhost terminal colorsworkbar segmentspowerline capstitlebar stylessidebar tabsSettings with live previewkeybinding editorattention alertsnotifications and sounds
Control socketpickpublishsubscribenotifyrun-actioncapture-panecapture-uiPNG and ANSI screenshotspane and UI recordingGIF, video, and cast export23 hook eventsservicesuser commandsextensionsagent skillVim and Neovim navigation
Linux, macOS, and Windowsnative executables with no separate runtimesigned releasesmanaged updatesrollbackpublished benchmarksprivate control socketsMPL-2.0
34 pages, all in the repository