TUIOS
A terminal multiplexer and window manager written in Go, MIT licensed, by Gaurav Gosain. It runs
inside an existing terminal and gives it panes, tiling layouts, nine workspaces, a command palette and
detachable sessions — the job tmux does, with vim-style modal navigation and an i3/niri-shaped layout
model on top. Docs at tuios.gaurav.zip.
3,250★ / 115 forks / 20 open items (16 issues + 4 PRs) / 9 watchers, 1,161 commits, 12
contributors — 1,101 of those commits by the author, so this is one person's project with a light
fringe. Created 2025-09-06, last pushed 2026-08-16, actively developed. Latest tagged release is
v0.7.0 from 2026-03-28 with 31 build assets, which leaves four and a half months of work on main
that nobody has been handed as a release. All figures read 2026-08-17.
What it is built on and what it does
The stack is Charm's: Bubble Tea v2 for the Model-View-Update loop and Lipgloss v2 for styling,
with the project's own VT100/ANSI emulator under internal/vt/. Layout offers binary space
partitioning with a spiral, master-stack, and a niri-style scrolling column mode. Sessions survive
via a daemon with attach/detach and resurrection after a daemon restart, and multiple clients can
share one session.
Two feature groups are less ordinary. On graphics it supports the Kitty graphics protocol with flicker-free redraw (image-ID reuse plus synchronized output, DEC mode 2026), Sixel passthrough, the Kitty keyboard protocol, and an OSC 133-aware scrollback browser — so it tries to be transparent to the modern terminal-protocol stack rather than only to text. On automation it ships a tape scripting DSL for recording and replaying workflows, headless execution for CI, and hooks that run shell commands on window events.
The performance claims are specific enough to be checkable by someone who cared to: rendering is event-driven rather than tick-driven, with PTY reader goroutines signalling redraws over buffered channels for near-zero idle CPU; unfocused panes fall back to the emulator's own rendering instead of per-cell iteration; off-screen panes are culled; memory pooling and style caching are credited with a 40–60% allocation reduction. Nothing here has been benchmarked — those are the project's numbers about its own rewrite, with no before-and-after published.
A window manager that asks the platform for nothing
This is the interesting thing about it beside omniwm, and the two make a clean pair.
Both are tiling window managers by a single author, both cite niri and the Wayland-era layout tradition, and both let a user replace how their windows are arranged. omniwm does it on macOS against a vendor that never intended it — accessibility and private APIs, pinned to macOS 26+ on Apple Silicon, signed and notarized so Gatekeeper will let it run, and permanently one point release away from breakage. TUIOS does the same job inside a terminal emulator, which is a canvas that already belongs to the user's process. There is no compositor to fight, no entitlement to request, no signing authority to pay, and no OS update that can revoke it.
The spoke's compatibility-layer register describes control taken in user space rather than granted by the platform, by reimplementing or intercepting an interface. TUIOS is a fourth position and a cheaper one: it neither asks nor intercepts. It draws inside a rectangle it was already given. So the corpus now has the same ambition priced twice — omniwm paying the platform's toll in fragility and Apple's identity fee, TUIOS paying nothing because it stayed inside a text grid — and the difference in cost is almost entirely about which surface the author chose, not about how good either program is.
The limit of that trade should be stated too: what TUIOS manages are terminal panes, not applications. It is a window manager for one kind of window.
Distribution says something as well
Homebrew, the Arch AUR, Nix flake, Docker image on ghcr.io, go install, and a piped install.sh.
Compare anysoftkeyboard and termux, which treat f-droid as their real channel because the
vendor store either degrades them or won't have them. Nobody polices terminal programs, so a one-person
Go project is in six distribution channels at once and needs no alternative store to exist. The
category the spoke keeps documenting — software fighting to reach the user — does not apply here, and
the contrast is worth keeping: the friction those projects meet is a property of locked platforms,
not of independent software.
The curl … | bash line is offered alongside the package managers rather than instead of them, which
is the mild version of a pattern worth flagging; a user has five auditable options here.
What is not established
- No benchmark. Every performance figure is first-party and unverified, and the 40–60% allocation-reduction claim describes an internal rewrite with no published baseline.
- No comparison to tmux, Zellij or WezTerm's own multiplexing is held — the obvious incumbents, and Zellij in particular is the near-twin (a Rust multiplexer with layouts and a plugin system).
- The release gap is unexplained. Four and a half months of commits past v0.7.0 means the
documented version and the running code have diverged; anyone installing from Homebrew and anyone
installing with
go install @latestare getting different programs. - Bus factor of one. 95% of commits are the author's, and Terminal Trove "Tool of the Week" recognition and a Ko-fi link are the whole visible support structure.
- Graphics support is partly aspirational by the project's own account: the Kitty animation protocol is unsupported, Kitty text sizing has known scrollback bugs, Sixel lacks pixel-level clipping and is called experimental, and the SSH and web-terminal modes are experimental too.
Connections
The spoke's fifth entry in the environment you compute in register, after anysoftkeyboard, omniwm, termux (cross-wiki) and proot-distro. It is the first Go source here and the first whose pitch is performance engineering rather than autonomy or privacy — nothing in its README argues about clouds, vendors or data, which makes it a useful control case for a corpus where almost every other project is selling control.
Cross-spoke note. The Charm stack it is built on — Bubble Tea's MVU loop, Lipgloss styling — is
../ui-frameworks-wiki's subject, and that spoke holds terminal-ui and opentui with no page on
Charm yet. The toolkit belongs there; this application belongs here, per this spoke's standing
boundary. Cross-link, don't duplicate.
Related
foss-application · omniwm · compatibility-layer · anysoftkeyboard · f-droid · proot-distro · termux · terminal-ui · synthesis