Drag tiles onto a drawing sheet, style them, and tell them how to behave when the window gets narrow. Export one config file and the same layout renders into Claude Code, into tmux, and into the browser preview — from one engine, so the preview can't drift from what you see at 2am.
git clone https://github.com/Bravim-Ketan-Purohit/statusline
68 tiles · 26 signals · 20 CLI commands · MIT licensed
68 tiles across six groups, ten starter bundles to open from, and a layer schedule that keeps track of which breakpoint you are looking at. Nothing is nested more than one level deep.
Drop position sets the order. Every tile carries its own defaults, so a bar is usable before you have styled anything — then you select one and start turning knobs.
It never wraps and never truncates mid-tile. Borders cost real columns and the solver counts them. Drag the handle below — this is the same ranking the CLI applies when it renders for real.
Any style field can be overridden per breakpoint, and the thresholds themselves are editable.
Under 80 columns the whole bar drops labels and shortens values. Above it, single low-priority tiles shorten first — a tile gives up its label before any tile disappears.
A narrower terminal never keeps more tiles. That's a tested guarantee, not a hope.
Pull the width handle in the builder and tiles leave in priority order, then come back in the order they left. Nothing is clipped in half on the way through.
The three targets do differ in what they can physically do, and the builder tells you which while you're designing rather than after you install.
Colour is per tile or for the whole bar, with named palette entries defined once on the sheet so re-theming is a single edit. Every fill is quantised and emitted one escape per cell.
linear · radial · conic · diamond · wave · ripple · spiral · barber · comet · scan · plasma · pulse · breathe · rainbow · strobe. Up to 16 stops, an angle, an origin, speed and scale.
Drag to position, slider to zoom. Pull an 8-stop ramp out of the crop, or bake it to a 96 × 8 cell matrix with half-blocks.
Up to twelve rules per tile, layered — later rules win, so a general rule takes a specific override. Blink is derived from the clock, not the terminal's blink attribute, so it looks identical everywhere.
Pick a signal, a threshold, then what changes: ink, ground, border, blink target and rate. Ring the bell once when the incident starts — never on every render.
ci.failingci.passingci.runningpr.approvedpr.changespr.pendingpr.openreview.waitinggit.conflictgit.dirtygit.cleangit.aheadgit.behindcontext.abovefivehour.abovesevenday.abovecost.abovecpu.abovemem.aboveswap.abovedisk.aboveload.abovegpu.abovevram.abovebattery.belowalwaysA tile can also stay hidden until it has something to say, and a firing rule can escalate past the hide rules.
Two tiles dragged in, a border added, a flowing gradient turned on and cycled through five modes, then the width pulled down until the bar sheds three tiles and takes them back.
Free and open source. Read the renderer, file an issue, send a tile — the whole thing is on GitHub.
Bravim-Ketan-Purohit/statusline · MIT
Build the layout in the browser, then hit Copy install. The config travels as a single base64 blob.
statusline export
Writes the config and patches ~/.claude/settings.json — it shows you a diff rather than overwriting blindly.
statusline import <blob>
Optional. Prints the .tmux.conf snippet with the mouse binding already included.
statusline tmux-conf
No. tmux is a first-class target on its own, and the web preview runs anywhere. Claude Code just gets the extra rows and the OSC 8 links.
The daemon. statusline daemon samples cpu, memory, swap, disk, load, network, gpu and vram off the render path, and statusline doctor tells you if it is not running.
No network calls on the render path — that is architectural, not incidental. Every tile declares a cost tier, the daemon does the sampling, and the renderer reads a cache.
Commands are argv arrays, never shell strings, and any command a config wants to run has to be approved against its exact arguments first. Editing the command revokes the approval.
Set the colour depth to ansi256 or ansi16 and the engine quantises to it. The 16 colour theme exists for exactly this.
Yes — as declarative JSON manifests with no code execution. statusline search and statusline add pull them from the registry, http-only, shown to you before install.