STATUSLINE REV A
Open the builder
A VISUAL BUILDER FOR YOUR TERMINAL'S BOTTOM ROW

Design the last line of your terminal.

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

FIG 1 — ONE BAR, RUNNING FIFTEEN FILL MODES, ONE AFTER ANOTHER · NOT A SCREENSHOT
01THE SHEET YOU DRAW ON

Parts list on the left, drawing sheet in the middle, inspector on the right.

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.

The Statusline builder: parts list, drawing sheet, layer schedule and inspector
FIG 2 — THE BUILDER PARTS LIST · DRAWING SHEET · LAYER SCHEDULE · INSPECTOR
FIG 3 — ADDING TILES

Drag a tile out of the parts list and it is on the bar.

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.

02IT FITS, OR IT DROPS WHAT MATTERS LEAST

Every tile has a priority. Narrow the window and the solver drops whole tiles.

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.

138 COL · 1104 PX LAYER lg DRAWN 11 DROPPED USED 0
XS ≥0SM ≥40MD ≥80LG ≥120XL ≥1602XL ≥220
SIX BREAKPOINTS

Any style field can be overridden per breakpoint, and the thresholds themselves are editable.

COMPACT MODE

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.

MONOTONIC

A narrower terminal never keeps more tiles. That's a tested guarantee, not a hope.

FIG 4 — THE REAL THING

Same solver, driven by an actual window.

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.

03ONE ENGINE, THREE TARGETS

Design it once. The preview is not a mockup of the output — it is the output.

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.

CLAUDE CODE
TMUX
WEB PREVIEW
How it runs
Captured stdout, JSON on stdin
#() in the status format
Live in the browser
Rows
Up to 5
1 — left or right side
Unlimited
Refresh floor
1 second
tmux's status-interval
60fps
Smooth animation
One step per refresh
One step per interval
Yes
Click a tile
Opens an OSC 8 link
Runs a real command
DOM events
Colour
truecolor / 256 / 16
truecolor / 256 / 16
truecolor
The asymmetry is the interesting part: tmux can dispatch a real command on click, Claude Code opens an OSC 8 hyperlink, and the web preview has full DOM events.
04MAKE IT YOURS

Fifteen fill modes, seven border edges, five themes.

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.

15 FILL MODES

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.

IMAGES AND GIFS

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.

FIVE THEMES
16 colour is a real constraint mode for terminals without truecolor, not a stylistic choice.
DRAFTING/ BLUEPRINT/ SILKSCREEN/ PLAIN INK/ 16 COLOUR
05MAKE IT REACT

A tile can change colour, grow a border, or blink when something is wrong.

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.

A RULE ON CI.FAILING

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.

26 SIGNALS
CI
ci.failingci.passingci.running
Pull requests
pr.approvedpr.changespr.pendingpr.openreview.waiting
Git
git.conflictgit.dirtygit.cleangit.aheadgit.behind
Budget
context.abovefivehour.abovesevenday.abovecost.above
Machine
cpu.abovemem.aboveswap.abovedisk.aboveload.abovegpu.abovevram.abovebattery.below
Always
always

A tile can also stay hidden until it has something to say, and a firing rule can escalate past the hide rules.

06THE WHOLE BUILD

Forty-eight seconds, one take, no cuts.

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.

FIG 7 — SOUND OFF · 48s
07OPEN SOURCE
STARS

Free and open source. Read the renderer, file an issue, send a tile — the whole thing is on GitHub.

Star on GitHub Open the builder

Bravim-Ketan-Purohit/statusline · MIT

68 tiles across six groups
10 starter bundles
15 fill modes
5 themes
26 signals, 12 rules per tile
6 editable breakpoints
20 CLI commands
Claude Code, tmux and web output
08GET STARTED

Three steps, and one of them is optional.

STEP 01
Draw the sheet

Build the layout in the browser, then hit Copy install. The config travels as a single base64 blob.

statusline export
STEP 02
Import it

Writes the config and patches ~/.claude/settings.json — it shows you a diff rather than overwriting blindly.

statusline import <blob>
STEP 03
Add tmux

Optional. Prints the .tmux.conf snippet with the mouse binding already included.

statusline tmux-conf
09QUESTIONS
Do I need Claude Code to use it?

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.

What do the machine tiles need?

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.

Is anything expensive happening on every message?

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.

A config arrives as a pasted blob. Is that safe?

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.

My terminal has no truecolor.

Set the colour depth to ansi256 or ansi16 and the engine quantises to it. The 16 colour theme exists for exactly this.

Can I add my own tiles?

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.