umux is a free, open-source terminal workspace manager for Linux, Windows and macOS. One workspace per project, tabs inside it, and every tab splits into as many panels as you need. The feature the app is built around: umux reads the OSC 9;9, 99 and 777 escape sequences that AI CLIs like Claude Code emit when a long task finishes, and turns them into a desktop notification.
Landing: https://umux.pages.dev
GitHub: https://github.com/CrystalPlatforms/umux
The last post here covered v1.0.2 through v1.0.4: the cmux importer, in-app updates, and the offline CLI. Today's release is v1.5.1. Eight commits, about two thousand lines added, and one idea carrying the release: color.
The gray-objects problem
Every row in a terminal manager's sidebar is text. With six projects open, telling them apart means reading, every time, in the sidebar and in the tab bar. v1.5.1 lets each workspace carry a color instead. There are eight, chosen from the workspace's context menu.
The color shows up in small places. A square swatch sits beside the workspace name, and a colored edge runs down the left side of the app while that workspace is active. Tabs get the same treatment: a swatch in the tab bar and a colored strip along the top edge while the tab is active. Groups tint their folder icon. A pinned workspace wears its color on the pin, because the pin is the one mark that is always visible.
Your cmux colors come with you
The part I like most is what happens on import. cmux stores an accent color per workspace and per group as free-form hex: whatever you picked, sixteen million options. umux has a fixed palette of eight. The importer maps every cmux color to the nearest palette entry by squared RGB distance, and the setup arrives looking the way it looked before. Not exactly the same. Nearest.
The mapping is strict on purpose. Only a well-formed #RRGGBB string maps to a palette entry; anything else imports as no color at all. A wrong guess sits in your sidebar forever, but gray costs two clicks to fix.
One detail only shows up when you read cmux's files closely: the actions in cmux.json carry no colors. The session store is the only place colors live, so it is the only place the importer reads them from.
One import, two implementations, one suite
The color mapping exists twice, like everything in the importer: TypeScript in the in-app wizard, Rust in the umux import cmux CLI. The golden-fixture parity suite keeps both honest — the fixtures of cmux state now carry color cases, and one expected plan says exactly which palette entry each maps to. If the two implementations drift, a test goes red before either ships a wrong color. umux import cmux --dry-run still prints the plan and writes nothing; the plan carries the mapped colors, so you can read where everything landed before anything lands.
Ports you can click
The ports tooltip has always listed which local ports your dev servers are listening on. Now a click on a port opens http://localhost:PORT in your browser. The URL still lands on your clipboard too, because copy-on-click is muscle memory nobody should have to unlearn. The new dependency doing the opening is tauri-plugin-opener.
The small stuff
- The inline rename pencil is gone from workspace and group rows. Renaming lives in the context menu — one place, not two.
- The × next to a workspace now deletes it, behind a confirmation. It used to just close it, which read like deleting and wasn't.
- Settings has a Reset umux button. Two clicks wipe every state file (workspaces, layouts, settings) and the app relaunches into its first-run state. A factory reset for when an experiment goes wrong.
About the version number
v1.5.1 follows v1.0.4 directly. The jump is bookkeeping: the roadmap's version numbers got renumbered so the roadmap and the shipped tags stay in step. The app just carried on.
The honest list
Import still does not work on Windows, same as in the first post. X11 sessions are untested; Wayland is the reference platform. Agent status is still the roughest feature in the app, and the completion notification is still the solid part.
Between the last post and this one: 8 commits, +2,127/−192 lines, roughly 950 of them new test code. The installers: .deb, .AppImage and .rpm on Linux, a universal .dmg on macOS 11+, an NSIS installer on Windows 10+. MIT licensed, no accounts, and one anonymous app-open event is the entire telemetry.
Landing: https://umux.pages.dev
GitHub: https://github.com/CrystalPlatforms/umux
If you color your workspaces in cmux and assumed a switch meant repainting everything by hand: it doesn't. Run the dry run and read the mapped palette before anything moves.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.