A small, fast status bar
for your terminal.
statline renders a composable, themeable status bar for your shell prompt, tmux, neovim or any script that reads stdout. Zero runtime deps, single static binary, sub-millisecond redraw.
Why statline
A few things it does well, and a few things it deliberately doesn't.
Fast by default
Sub-millisecond redraw on a cold cache. Bounded render time even with expensive segments (git, kube, AWS) via per-segment timeouts and async refresh.
Composable segments
Build your bar from small, declarative segments: git, k8s, py, rust, node, aws, battery, time. Writing a new one is a 20-line function.
Truly cross-shell
First-class support for bash, zsh, fish, nushell and PowerShell. Same config, same behaviour. No shell-specific forks, no prompt rewrites.
Themeable
Theme files are TOML. Ship your own palette, pick from presets (tokyonight, gruvbox, solar, ascii) or render to plain text for CI logs.
Safe by design
No arbitrary shell-out unless you ask. Explicit allowlist for external commands. Timeouts on every probe. Won't hang your prompt, ever.
Batteries included
Ships preconfigured for tmux, neovim and common shells out of the box. One line in ~/.bashrc, done.
What it looks like
A typical bar with a dev-ish segment set. Everything you see is one config file.
Shell prompt
~/src/projects/statline main ●2 ↑1 go 1.23.4 ⎈ prod-eu 14:02:51
$ _
Minimal statline.toml
# ~/.config/statline/statline.toml
theme = "tokyonight"
separator = " "
[[segment]]
type = "cwd"
truncate = 3
[[segment]]
type = "git"
format = "{branch} {dirty} {ahead}"
[[segment]]
type = "kube"
context = "short"
ttl = "10s"
[[segment]]
type = "time"
format = "15:04:05"
Install
Pre-built binaries for linux, macos, windows and freebsd (amd64, arm64, armv7).
| Platform | Command |
|---|---|
| Shell installer | curl -fsSL statline.sh/install | sh |
| Homebrew | brew install statline |
| Debian / Ubuntu | apt install statline (see repo setup) |
| Arch | pacman -S statline |
| Cargo | cargo install statline |
| Go | go install go.statline.sh/cmd/statline@latest |
| Windows | scoop install statline |
Design notes
statline prefers boring over clever. The render loop is a single pass over a []Segment, each
segment fills a fixed-width buffer, the result is flushed in one write. Expensive probes (git, kube,
cloud auth) run on a background goroutine behind a TTL cache; if a probe misses its timeout the bar
falls back to the last known value rather than stalling your prompt.
The config is intentionally small. There is no scripting language, no hooks, no plugin system loaded at startup — everything is a segment type compiled into the binary. If you want something custom, write a 20-line segment and open a PR.
Read more in the docs or jump straight to getting started.