roziv0.1.0Docstui-lipan ↗SponsorGitHub ↗

Tiling terminal multiplexer

rozi

A terminal multiplexer that feels like a modern window manager.

Split your terminal into panes, arrange them automatically, and pick up where you left off. Native on Linux, macOS, and Windows.

Linux and macOS · installs the current release, links ~/.local/bin/rozi

rozi
1 ·3
2 ·3
3
4
5
∞ dev
AgentsPanesSessions
rozimaster
Claude Code1
Refactoring layout engine
OpenCode1
Idle
OpenCode1
Smoke test · 10s wait
Claude Code2
Waiting for approval
FilesGit
~/Work/Projects/rozi
› assets
› benches
› docsM
› srcM
› testsM
› README.md
zsh
a3f19c2 layout: cache the tiling tree
7be04d1 workbar: workspace badges
e2c0b8f agents: detect blocked state
✳ Claude Code v2.1.228
Opus 5 · high effort · Claude Pro
~/Work/Projects/rozi
refactor the layout engine
Edit(src/layout/mod.rs)
⎿ +42 −18 · tiling pass split out
Bash(cargo clippy)
⎿ 0 warnings · 42 suites green
Done — tiling pass is out
of mod.rs.
- layout/mod.rs: split and
resize share one solve pass.
- layout/tree.rs: rebalance is
incremental — O(depth) now.
Tree is clean; cargo test passes.
Sautéed for 2m 49s
~
opencode 1.18.16
loading workspace · 2 MCP servers
read ../tui-lipan/AGENTS.md
21:45 · 8/11/2026
+ Thought: 190ms
I'll read ../tui-lipan/AGENTS.md from the workspace.
→ Read ~/Work/Projects/tui-lipan/AGENTS.md
▣ Skein · Grok 4.5 · 4m 51s · done
~
Claude Code v2.1.228
Opus 4.6 with high effort · ~/Work/Projects/rozi
fix the pane focus race in tree.rs
Edit(src/layout/tree.rs)
rozi
tiling terminal multiplexer
  • 7 layouts
  • 9 workspaces
  • 29 themes
  • Linux · macOS · Windows
  • MIT OR Apache-2.0

What you get

Panes that arrange themselves

New panes split the pane you are looking at, along whichever side has more room. Seven arrangements are a keypress away — dwindle, master-and-stack, grid, columns, rows, a scrolling strip, and monocle. Any pane can float, go fullscreen, or be dragged and resized with the mouse.

Layouts & panes →

Nothing is lost when you close the window

A background server owns every PTY, so leaving does not kill your work. rozi attach dev brings it all back — same layout, same running programs, same scrollback. Several windows can attach at once, and --remote myserver reaches a session on another machine over SSH.

Sessions →

Change anything without restarting

Save config.toml and it applies immediately — keys, colors, status bar — with your panes untouched. It works the other way too: flip a setting from the command palette and rozi writes it back into your file, so what you tried out is what you keep.

Configuration →

A real terminal, not an approximation

Mouse support, text selection, images, scrollback with search, copy mode with vi-style motions, clipboard paste, and true color. 29 built-in themes plus a system theme that follows your desktop — and the colors inside your panes follow whichever one is active.

Terminal features →

First five minutes

Everything happens through the prefix key — hold Ctrl-a, let go, then press one key. Prefer chords? Alt + the same key does the same thing. Both are fully rebindable.

Ctrl-aEnterOpen another pane
Ctrl-ah j k lMove focus left / down / up / right
Ctrl-afMake the focused pane fullscreen
Ctrl-atLet the pane float on top
Ctrl-a1…9Jump to a workspace
Ctrl-apSearch every command by name
Ctrl-a?Show all keys
Ctrl-adLeave — a named session keeps running
Full key reference →

One file configures it

~/.config/rozi/config.toml on Linux and macOS. Save it and the change lands immediately; a file that will not parse falls back to the defaults and tells you so.

[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 →

Also in the box

Command paletteFuzzy-search every command by name
Side panelFiles, git changes, panes, sessions, coding agents
Saved layoutsRelaunch a setup with the same panes and commands
ScratchpadA pane that drops over your work and hides again
Copy mode & searchWalk the scrollback with vi motions
Synchronized typingSend what you type to every pane at once
Shared controlSeveral people attach; one drives the layout
Scriptingfocus, send-text, new-pane, capture-pane
HooksRun your own commands when something happens
Your own shortcutsBind a key to open a pane or send text
Status barBuilt-in readouts, your text, or a timed command
Placement rulesSend panes running a command to a chosen spot
Vim/Neovim navigatorOne set of keys for editor splits and panes

rozi documentation

rozi is a Hyprland-style tiling terminal multiplexer built on the tui-lipan TUI framework. Each pane is a live PTY shell; panes are arranged with dwindle, master, grid, columns, rows, scrollable, or monocle tiling, with floating windows, fullscreen, 9 workspaces, animated geometry, and tmux-style prefix commands.

rozi runs an always-server model: a background session server owns every PTY and the UI attaches to it. A bare launch follows [session] startup — by default it opens the session picker; a named target or --session attaches or launches from a same-named profile; use new to create explicitly.

Contents

PageWhat it covers
Feature overviewSingle-page inventory of every feature, with links into the reference docs.
Getting startedRequirements, platform support, building, running, and quitting.
Installation & releasesBootstrap installers, signed updates, rollback, managed layout, and release signing.
KeybindingsPrefix mode, held modifier, mouse gestures, resize mode, and the full key table.
ConfigurationThe complete config.toml reference: shell, input, animations, theme, profile, clipboard.
Layouts & panesTiled layout kinds, floating, fullscreen, split ratios, focus and movement.
SidebarDocked sidebar configuration, built-in tabs, navigation, and shared-session sizing.
ThemesThe 29 selectable presets, the system theme and ANSI fallback, custom theme files, live hot-reload, and terminal colors.
Terminal featuresThe live terminal: mouse reporting, selection, clipboard (OSC52), titles, and scrollback search.
Project profiles & pane identitySaving and restoring named workspace layouts.
Named profilesProfile files, CLI launch/default profile priority, and in-app profile management.
Control socketPer-run automation socket, pane environment, CLI commands, and JSON protocol.
Agent skillThe operational contract printed by rozi --skill for coding agents controlling panes and sessions.
HooksEvent-triggered commands, event fields, environment variables, and control-socket callbacks.
Extension recipesWorked examples combining pickers, published rows, services, and hooks.
Benchmarks & profilingCriterion targets, baseline comparisons, live stress recipes, and Samply profiling.
Performance recordsCurrent assessment, dated audit reports, and conventions for recording future results.
Performance audit playbookReproduce a full CPU, memory, latency, scaling, lifecycle, and profiling audit.
Vim/Neovim navigatorSeamless navigation between editor splits and rozi panes.
SessionsEphemeral and named sessions, leave behavior, detach/reattach, and limitations.
Remote SSH sessions--remote attach over SSH, bootstrap/install, protocol negotiation, and feature split.

At a glance

  • Control paths - a Ctrl-a prefix (always works) and a held Alt/Super modifier for active command keys. See Keybindings.
  • Layouts - dwindle by default; master, grid, columns, rows, scrollable, and monocle per workspace; plus floating and fullscreen panes. See Layouts & panes.
  • Leave client - prefix q or prefix d by default; named sessions keep running, while temporary sessions are closed or kept according to whether they contain work.
  • Named sessions - rozi <name> creates/connects to a persistent PTY server.
  • Config file - $ROZI_CONFIG, else ~/.config/rozi/config.toml. See Configuration.
  • Architecture / internals - see AGENTS.md at the repo root.