roziv0.0.48DocsExtensionstui-lipan ↗SponsorGitHub ↗

Tiling terminal multiplexer

rozi

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 →

  • 7layouts
  • 31themes
  • 128rebindable commands
  • 23agents detected
  • 3supported platforms

See it work

Recorded by rozi · real panes, real programs

See which agent needs you

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 →

Included features

All of it works out of the box

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 →

Sessions keep running

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 →

A session per branch

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 →

Share a session

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 →

Save a workspace as a profile

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 →

A complete terminal in every pane

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 →

Make it yours

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"

Keybindings

Rebind keys without a manual

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 →

Motion

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.

Animation styles →
[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 = 220

First five minutes

Every 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 keyHold Alt
Ctrl+AEnterAlt+EnterOpen another pane
Ctrl+Ah j k lAlt+H…LMove focus by direction
Ctrl+AfAlt+FFullscreen the focused pane
Ctrl+AtAlt+TFloat the pane on top
Ctrl+A1…9Alt+1…9Jump to a workspace
Ctrl+ApAlt+PSearch every command
Ctrl+A?Alt+?Show and edit every key
Ctrl+AdAlt+DLeave; named sessions keep running
Full key reference →

Configuration file

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"
Every setting →

Configuration examples

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 = 220

Configure presets, custom theme files, borders, titlebars, and animation timing.Reference →

Extensions are ordinary programs

Any language · public protocol · api = 1

  1. rozi extensions newscaffold
  2. rozi extensions checkvalidate
  3. rozi run-action reload-extensionsinstall
  4. rozi 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"

Public commands

rozi pick
Opens a searchable picker and returns the selected value
rozi publish
Publishes actionable rows in the Activity sidebar
rozi subscribe
Streams events to a long-running process
rozi notify
Shows a toast for a result produced off screen
rozi run-action
Runs a built-in, user-defined, or extension command

Worked examples

Write an extension →

Screenshots and recordings

For 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 frames
Capturing the screen →Recording →

Feature index

Everything in v0.0.48

Window management

Layouts and panes →

Seven layoutsshape-aware splitsfloatingfullscreenmove, swap, and promoteresize modenine workspacesmerged bordersgaps and paddingscratchpadanimations

The terminal itself

Terminal features →

True colorinline imagesmouse reportingscrollback searchvi copy modeclipboard and OSC 52hintsedit scrollbackshell integrationpane loggingsynchronized typing

Sessions and sharing

Sessions →

Named sessionstemporary sessionsseveral windows per sessionshared sessionsremote over SSHrestore after rebootautosaveprofilessession picker

Look and feel

Customize rozi →

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

How it ships

Installation →

Linux, macOS, and Windowsnative executables with no separate runtimesigned releasesmanaged updatesrollbackpublished benchmarksprivate control socketsMPL-2.0

Documentation

34 pages, all in the repository