Drop-in replacement for the Claude Code default status line: live context window usage with a smooth progress bar, session cost in USD, 5h / 7d rate-limit warnings, git branch with dirty / ahead / behind counts, time-on-task tracking, and the active model name (with
(1M)indicator for 1M-context variants) — all in one colorful Bash line. Ships with 82 ready-made themes — top picks (cyberpunk, hacker, dragonball, naruto, pokemon, ironman, spiderman, einstein, tesla, ferrari), classics (minimal, developer, muted, mono, hard-worker, time, zen, rainbow, anime, love, cat, christmas, space, retro, fire, ocean, weather, coffee, music, game, pirate), auto brands (porsche, mercedes, bmw, volvo, ford, chevy, jeep, cadillac, toyota, honda, nissan, hyundai, kia, byd, nio, geely), more scientists (newton, curie, darwin, hawking, galileo, feynman, turing, davinci), more anime (onepiece, ghibli), more Marvel (hulk, thor, captain-america, wolverine, deadpool, blackwidow, strange, wanda), OS themes (macos, windows, linux, ubuntu, arch, debian, fedora, kali, mint, nixos), and world religions (christianity, islam, hinduism, buddhism, judaism, sikhism, shinto) and a 26-block library to compose your own. Includes an all-in-one CLI configurator and a/statuslineslash command for Claude Code.
Languages: English · Русский · Français · Deutsch · Українська · Slovenščina · Italiano · Español · 中文 · 日本語 · 한국어 · العربية · Português · Türkçe · Bahasa Indonesia · Tiếng Việt · हिन्दी · 繁體中文 · Polski · ไทย · עברית · বাংলা · اردو
Opus 4.7 (1M) │ 🚀 12% █▌░░░░░░░░ 121.4K/1000K │ 0.42$ │ ↑0.5K ↓1.2K │ project │ ⎇ main │ 5h{1.1h}: 15% 7d{1.1d}: 4% │ 🤖 xhigh
💡 Pro tip — Context control: The fuller your context window, the less effective your conversation with Claude becomes — and the faster you burn through your 5h/7d limits. Clear or
/compactwhenever you cross 60% to keep working efficiently.
The 5h / 7d meters include a live countdown to the moment each window resets: 5h{1.1h}: 1% — the 5-hour window resets in 1.1 hours; 7d{1.1d}: 0% — the weekly window resets in 1.1 days. You always know when you're back at 0%, so you can schedule heavy work right after a reset and distribute your productivity instead of slamming into the cap mid-task. Powered by rate_limits.*.resets_at sent by Claude Code; if your build doesn't send reset timestamps, the meters gracefully fall back to plain 5h: 1%.
… ⎇ main │ 5h{1.1h}: 1% 7d{1.1d}: 0% │ 🤖 xhigh
Predictable by design — every meter counts down to its reset, so you pace your work instead of hitting the wall.
The fastest path — bundled all-in-one script with built-in CLI:
git clone https://github.com/amazopic/claude-code-statusline.git claude-code-statusline
cp claude-code-statusline/statusline-bundle.sh ~/.claude/status-line.sh
chmod +x ~/.claude/status-line.sh
~/.claude/status-line.sh use cyberpunk # or: anime, hacker, minimal, …Then add to ~/.claude/settings.json:
{ "statusLine": { "type": "command",
"command": "/Users/<you>/.claude/status-line.sh",
"refreshInterval": 30 } }💡
refreshInterval: 30re-runs the line every 30 seconds even while the session is idle — keeps the reset countdown (5h{1.1h}), the time tracker and post-reset flips live. 30 is a sensible default; 60 is battery-frugal; omit to refresh on events only (new assistant message,/compact, vim toggle).
Restart Claude Code (or run /config reload). Done.
Why touch a terminal when you have Claude Code? Paste this single prompt into your Claude Code session — Claude handles every step and asks before each command.
Install claude-code-statusline by amazopic for me. First make sure jq is installed (run `which jq`) — if missing, install it for the platform: `sudo apt-get install -y jq` (Ubuntu/Debian), `sudo dnf install -y jq` (Fedora), `brew install jq` (macOS), `sudo apk add jq` (Alpine). Then read ~/.claude/settings.json — if it has a statusLine.command pointing to an existing file (e.g. ~/.claude/status-line.sh or another path), back up that file by appending .bak (overwrite any existing .bak). Also if ~/.claude/status-line.sh already exists, back it up the same way. Then clone github.com/amazopic/claude-code-statusline, copy statusline-bundle.sh to ~/.claude/status-line.sh and make it executable, also copy commands/statusline.md to ~/.claude/commands/. Update ~/.claude/settings.json so statusLine is { type: "command", command: "<absolute path to ~/.claude/status-line.sh>", "refreshInterval": 30 }. Finally run ~/.claude/status-line.sh use developer to test the developer theme and tell me to restart Claude Code.
Just say
y(yes) at every permission prompt. Done.
Claude Code's default status line is sparse. This drop-in replacement turns the bottom status bar into an at-a-glance dashboard for every session:
- 🔋 How much context have I burned? (smooth 1.25% fractional bars)
- 💰 What is this session costing me?
- 🚦 How close am I to my rate limits?
- 🧠 What thinking level / model am I on?
- 🌿 Which git branch am I on?
All in one line, color-coded, with smart icons that signal urgency.
- 🪐 Live context bar — 10-cell progress bar with sub-cell precision (quadrant or vertical fractional glyphs)
- 🧠 Model name — with
(1M)indicator for 1M-context variants - 💸 Session cost in USD, updated every render
- ⬆️⬇️ Per-message token counters (input / output)
- 🚦 Rate limits — 5h / 7d with
⚠️ warning when > 50% - 🔄 API-mode fallback — when no rate limits are piped, shows total session tokens (
tokens: NNN K) with thin-space thousand separators - 🚀 Smart status icon — 🚀 < 40%, 🚗 40–49%,
⚠️ ≥ 50% context fill - 🎨 256-color ANSI — bright, distinct color per segment
- 🧩 Pluggable bar styles — pick
quadrant(▖▄▙█) orvertical(▏▎▍▌▋▊▉█), or roll your own in 10 lines of bash - ⚡ Lightweight — pure
bash+jq. No Node, no Python, no daemon, no telemetry
Each theme ships in two variants:
- Detailed — full feature set (model, context bar, cost, tokens, git, time, mood icon, …)
- Compact —
model · context % + bar · branchonly
Apply with ~/.claude/status-line.sh use <name> (append -compact for the compact variant).
| Theme | Vibe |
|---|---|
cyberpunk |
neon dystopia · //CTX:12% //₵RED:0.42 ▐ JACK-IN |
hacker |
phosphor-green Matrix terminal · [SYS] :: ROOT@matrix# |
dragonball |
Goku scaling: base → super-saiyan → ssj-blue → ultra instinct |
naruto |
Konoha leaf orange · chakra meter · 🌀 rasengan |
pokemon |
Pikachu yellow + pokeball red · HP bar |
ironman |
🦾 Stark red + arc-reactor gold |
spiderman |
🕷 webhead red + blue · with great context comes great cost |
einstein |
chalkboard greens · Ψ Einstein · E=mc² |
tesla |
⚡ electric purple + lightning yellow · AC ~ |
ferrari |
🐎 rosso corsa + Modena yellow |
| Theme | File / Apply |
|---|---|
| 🛠 minimal | statusline-minimal.sh · use minimal |
| 🛠 developer | statusline-developer.sh · use developer |
| 🛠 muted | use muted |
| 🛠 mono | use mono |
| 🛠 hard-worker | use hard-worker |
| 🛠 time | statusline-time.sh · use time |
| 🛠 zen | statusline-zen.sh · use zen |
| 🌈 rainbow | statusline-rainbow.sh · use rainbow |
| ✨ anime | statusline-anime.sh · use anime |
| 💖 love | statusline-love.sh · use love |
| 🐱 cat | statusline-cat.sh · use cat |
| 🎄 christmas | statusline-christmas.sh · use christmas |
| 🚀 space | statusline-space.sh · use space |
| 🕹 retro | statusline-retro.sh · use retro |
| 🔥 fire | statusline-fire.sh · use fire |
| 🌊 ocean | statusline-ocean.sh · use ocean |
| ☀ weather | statusline-weather.sh · use weather |
| ☕ coffee | statusline-coffee.sh · use coffee |
| 🎵 music | statusline-music.sh · use music |
| ⚔ game | statusline-game.sh · use game |
| 🏴☠️ pirate | statusline-pirate.sh · use pirate |
Note:
cyberpunkandhackerlive in Top picks above — they're in theexamples/folder too if you want a single-theme install.
cp examples/statusline-cyberpunk-compact.sh ~/.claude/status-line.sh
chmod +x ~/.claude/status-line.shShip in statusline-bundle.sh only — pick any with ~/.claude/status-line.sh use <name>.
| Region | Themes |
|---|---|
| 🇪🇺 Europe | porsche · mercedes · bmw · volvo |
| 🇺🇸 America | ford · chevy · jeep · cadillac |
| 🇯🇵 Japan | toyota · honda · nissan |
| 🇰🇷 Korea | hyundai · kia |
| 🇨🇳 China | byd · nio · geely |
| Theme | Vibe |
|---|---|
newton |
parchment ink, 🍎, F=ma |
curie |
radium green, ☢, half-life meter |
darwin |
naturalist green, 🐢, HMS Beagle |
hawking |
deep space violet, 🌌, t → ∞ |
galileo |
sun gold, 🔭, eppur si muove |
feynman |
chalk-on-green, 〰, ψ → ψ' |
turing |
terminal green, Ⓣ, halting bar 1/0 |
davinci |
sepia codex, ✎, Vitruvian |
onepiece · ghibli
hulk · thor · captain-america · wolverine · deadpool · blackwidow · strange · wanda
| Theme | Vibe |
|---|---|
macos |
🍎 six-color Apple rainbow on chrome-grey |
windows |
⊞ Fluent four-color tile + WINDOWS 11 cyan |
linux |
🐧 Tux black + orange beak |
ubuntu |
⊕ friend circle — orange + aubergine purple |
arch |
▲ pacman cyan · btw, I use arch |
debian |
🌀 red swirl · stable / sid / testing |
fedora |
🎩 Fedora hat blue · freedom + features |
kali |
🐉 Kali blue + offsec red · pwn-mode |
mint |
🌿 cinnamon mint green · the friendliest shell |
nixos |
❄ Nix blue snowflake · declarative, reproducible |
| Theme | Vibe |
|---|---|
christianity |
✝ wine red + Marian blue + papal gold · faith meter, € alms |
islam |
☪ Islamic green + white + gold calligraphy · taqwa, ﷼ sadaqah |
hinduism |
🕉 saffron + marigold + vermilion · dharma, ₹ seva |
buddhism |
☸ monk saffron + gold + maroon · karma, ฿ dāna |
judaism |
✡ tallit blue + white + menorah gold · mitzvah, ₪ tzedakah |
sikhism |
☬ Khalsa deep blue + saffron + white · sewa, daswandh |
shinto |
⛩ vermilion torii + shrine white + gold · kami, ¥ saisen |
~/.claude/status-line.sh use macos # detailed
~/.claude/status-line.sh use porsche-compact # compact
~/.claude/status-line.sh use einstein # any of the 82 themes worksBrowse them all in your terminal first — every variant has a
pre-rendered preview in screenshots/:
# preview a single one
cat screenshots/statusline-cyberpunk.ansi
# or browse the whole gallery (164 variants + main)
for f in screenshots/*.ansi; do
printf "\n=== %s ===\n" "$(basename "$f" .ansi)"
cat "$f"
doneSee examples/README.md for the full table with
descriptions, and screenshots/README.md for
how the previews are generated.
Don't want to use a preset? Compose a custom status line from a library
of named blocks — model, context-bar, cost, git, tokens-msg,
time-active, thinking, …
See BLOCKS.md for:
- the catalog of blocks (each one is a copy-pasteable bash snippet)
- the style packs (color palettes & separators from
classic,compact,anime,hacker,cyberpunk,zen) - a 3-step recipe to build your own line: pick a style → list blocks → paste
┌─────────────────────────────────────────────────────────┐
│ Step 1 — pick a STYLE pack (colors, separator) │
│ Step 2 — pick the BLOCKS you want (in order) │
│ Step 3 — paste shared HEADER + chosen BLOCKS + FOOTER │
└─────────────────────────────────────────────────────────┘
If you don't want to manage 40+ files, grab the single bundled
script statusline-bundle.sh — it contains
every theme + every block + a CLI configurator in one file.
cp statusline-bundle.sh ~/.claude/status-line.sh
chmod +x ~/.claude/status-line.sh
~/.claude/status-line.sh use cyberpunk # switch theme
~/.claude/status-line.sh use cyberpunk-compact # use compact variant
~/.claude/status-line.sh custom model context-bar git cost # compose from blocks
~/.claude/status-line.sh list # list themes
~/.claude/status-line.sh list blocks # list blocks
~/.claude/status-line.sh preview anime # preview without saving
~/.claude/status-line.sh show # show current config
~/.claude/status-line.sh reset # reset to defaultConfiguration is saved to ~/.claude/statusline.conf and persists
across restarts. The same file acts as both the renderer (when
called by Claude Code with JSON on stdin) and the configurator
(when you call it with arguments).
Drop commands/statusline.md into
~/.claude/commands/ to enable a /statusline slash command inside
Claude Code:
mkdir -p ~/.claude/commands
cp commands/statusline.md ~/.claude/commands/statusline.mdThen in any Claude Code session you can type:
/statusline cyberpunk
/statusline cyberpunk-compact
/statusline custom model context-bar git cost
/statusline list
/statusline preview anime
Claude will run the bundle CLI for you, report the result, and remind you to reload.
alias statusline='~/.claude/status-line.sh'Then statusline cyberpunk works from any terminal.
git clone https://github.com/amazopic/claude-code-statusline.git
cp REPO/statusline.sh ~/.claude/status-line.sh
chmod +x ~/.claude/status-line.shThen add to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "/Users/<you>/.claude/status-line.sh",
"refreshInterval": 30
}
}💡
refreshInterval: 30re-runs the line every 30 seconds even while the session is idle — keeps the reset countdown (5h{1.1h}), the time tracker and post-reset flips live. 30 is a sensible default; 60 is battery-frugal; omit to refresh on events only (new assistant message,/compact, vim toggle).
Restart Claude Code (or run /config reload).
Want Claude Code to install it safely for you? Paste this prompt:
"Install the status line from this repo as my Claude Code status line:
- If
~/.claude/status-line.shalready exists, back it up to~/.claude/status-line.sh.bak.<YYYYMMDD-HHMMSS>(pick a free-Nsuffix if a backup with that name already exists).- Copy
statusline.shfrom this repo to~/.claude/status-line.shandchmod +x.- Read
~/.claude/settings.json. If it has nostatusLinekey, add astatusLineblock pointing to the absolute path of the script and including"refreshInterval": 30. IfstatusLinealready exists and points elsewhere, back upsettings.jsonto.bak.<timestamp>first.- Smoke-test the script:
echo '{\"model\":{\"display_name\":\"Test\"},\"transcript_path\":\"\"}' | bash ~/.claude/status-line.sh- Tell me to restart Claude Code and report the backups created."
~/.claude/status-line.sh updateFetches the latest bundle from GitHub, creates a timestamped backup
(~/.claude/status-line.sh.bak.<YYYYMMDD-HHMMSS>), and preserves your
theme config (~/.claude/statusline.conf). Restart Claude Code afterwards.
Check what you have installed: ~/.claude/status-line.sh version.
Release history: CHANGELOG.md (CalVer YYYY.MM.DD; same-day re-releases append .N).
bash4+ (script uses 0-indexed arrays — do not run underzsh)jqfor JSON parsing —apt-get install jq(Debian/Ubuntu),brew install jq(macOS),dnf install jq(Fedora)curl(only needed forstatusline update; preinstalled on most systems)- A 256-color terminal (basically every modern one)
Edit constants near the top of statusline.sh:
| Variable / function | What it controls |
|---|---|
BAR_STYLE |
"quadrant" (default, 2.5% step) or "vertical" (1.25% step) |
pct_icon() |
Thresholds for 🚀 / 🚗 / |
pct_color() |
Color thresholds for percentage / bar |
| ANSI color constants | Recolor any segment (G, Y, R, B, C, M, …) |
| Capability | Default | This project |
|---|---|---|
| Active model name | ✅ | ✅ (with (1M) flag for 1M-context variants) |
| Context window % used | ❌ | ✅ live, 1.25 % precision |
| Progress bar for context | ❌ | ✅ (vertical, quadrant, rainbow, sparkline, …) |
| Session cost in USD | ❌ | ✅ updated every render |
| Per-message input/output token counters | ❌ | ✅ |
| Total session tokens (API mode fallback) | ❌ | ✅ |
| 5h / 7d rate-limit indicators with |
❌ | ✅ |
Reset countdown in limit meters (5h{1.1h}) |
❌ | ✅ |
| Git branch + dirty + ahead/behind | ❌ | ✅ |
| Time-on-task (active vs wall clock) | ❌ | ✅ |
| Thinking / effort level display | ❌ | ✅ |
| Themed presets | ❌ | ✅ 82 themes × 2 variants = 164 ready-made |
| Compose from named blocks | ❌ | ✅ 26 blocks, see BLOCKS.md |
| Built-in CLI configurator | ❌ | ✅ statusline-bundle.sh use / custom / list / preview |
Claude Code /statusline slash command |
❌ | ✅ optional, see commands/ |
| External dependencies | — | bash 4+ and jq (no Node, no Python, no daemon) |
| License | — | Source-Available (reuse-by-permission) |
Concrete scenarios where this project pays for itself:
- "How much of my 1 M context have I burned?" — see a live percent + bar before every prompt.
- "What is this Claude Code session costing me?" — running USD total, updated every render.
- "Will I hit a rate limit today?" — 5 h / 7 d indicators with
⚠️ when > 50 %. - "Am I on the right branch?" — git branch + dirty + ahead/behind in your status line.
- "How many actual hours did I spend on this feature?" — time-on-task tracker (
activevswall). - "I want my terminal to be fun." — anime, cyberpunk, hacker, retro, weather, ocean, fire and other themes.
- "I want a minimal, ASCII-only status line for screen recordings." —
zentheme. - "I want to ship a status line my whole team uses." — single bundled script + CLI configurator + slash command.
A bash-based replacement for the default status line in Claude Code (Anthropic's CLI). It turns the bottom-of-screen line into a real dashboard: model, context %, progress bar, session cost, rate limits, git status, time-on-task, and more.
You've used 1% of the 5-hour window, and {1.1h} is a live countdown — the window resets in 1.1 hours (7d{1.1d}: the weekly window resets in 1.1 days). Read from rate_limits.*.resets_at on every render. No reset timestamp in your build? The meter falls back to plain 5h: 1%.
Claude Code re-renders on events — new assistant message, /compact, permission-mode or vim-mode change (debounced at 300 ms) — so between events the line freezes. Add "refreshInterval": 30 to the statusLine block in ~/.claude/settings.json and it also re-runs on a fixed 30-second timer, keeping the countdown and time tracker ticking while idle. A render costs ~0.1 s, so 30 s is negligible; use 60 on battery or in huge repos (git status runs each render); minimum is 1.
Copy statusline-bundle.sh to ~/.claude/status-line.sh, chmod +x, then point Claude Code's ~/.claude/settings.json statusLine.command at that path. Full instructions in the Quick start and Install sections.
Yes. The script detects [1m] in the model id and 1M in the display name and adjusts the bar's denominator to 1 000 000 tokens. You'll see Opus 4.7 (1M) … 12 % █▌░░░░░░░░ 121.4K/1000K.
Any model Claude Code supports — Opus 4.7, Sonnet 4.6, Haiku 4.5, Opus 4.6, etc. The script reads model.display_name and model.id from the stdin JSON Claude Code provides; it doesn't hardcode model names.
Yes — three ways:
- Pick one of the 82 themes (164 variants total) — use
~/.claude/status-line.sh use <name>or browseexamples/for the standalone scripts. - Compose your own from named blocks — see BLOCKS.md.
- Edit color constants and bar style in
statusline.shdirectly.
No. Each render runs once per status redraw, parses the piped JSON with jq, optionally greps the latest line of the transcript, and prints. Typical render is ≤ 50 ms even with the time-tracker enabled.
jq is required — it parses the JSON Claude Code sends on stdin. Install it via brew install jq (macOS), apt install jq (Debian/Ubuntu), or choco install jq (Windows).
Yes, in any environment that runs bash 4+ and jq — Git Bash, WSL, MSYS2, Cygwin. Pure CMD/PowerShell aren't supported.
Yes on both. macOS uses BSD date, Linux uses GNU date — the time-tracker handles both transparently.
Partially. The status line is designed for Claude Code's stdin JSON format. For raw API usage, the rate-limit indicators auto-fall back to a total session tokens display (tokens: NNN K).
~/.claude/statusline.conf — a tiny shell-sourced file written by the bundle's CLI (statusline.sh use <theme> etc.). Persists across restarts.
Either remove the statusLine block from ~/.claude/settings.json, or run ~/.claude/status-line.sh reset and switch to a minimal theme that closely matches the default.
Personal, local use is free — see the Source-Available License. Any reuse, redistribution, fork, or inclusion in another project requires prior written permission from the author (Yevgeniy Achin · amazopic@gmail.com). Reasonable requests are typically granted.
The time theme reads timestamps from the JSONL transcript and reports two durations: active (sum of inter-message gaps shorter than 5 minutes) and wall (total span from first to last message). The 5-minute idle threshold is configurable.
When you publish this repo, add these topics to maximize discoverability:
claude-code · claude-code-statusline · statusline · status-bar · terminal-prompt · anthropic-claude · ai-coding · developer-tools · bash-script · terminal-customization · prompt-customization · claude-4 · opus-4 · sonnet-4 · dotfiles · terminal-dashboard · context-window-monitor · token-counter · rate-limit-monitor
Issues and PRs are welcome — but note the license:
- Reading, opening issues, submitting PRs: free.
- Forking, copying into another project, redistributing: requires prior written permission from the author.
To request reuse permission, contact: Yevgeniy Achin · ✉ amazopic@gmail.com
Reasonable requests for personal, educational, and non-commercial use are typically granted free of charge.
Source-Available License (Reuse-by-Permission)
This project's source is publicly available for reading, study, and personal use on your own machine. Any reuse — copying, redistributing, modifying, or including in another project — requires prior written permission from the author (Yevgeniy Achin · amazopic@gmail.com).
This is not an OSI-approved open-source license. It is a deliberate choice to keep distribution and derivative works under the author's control while allowing the community to read, study, and contribute.
If you spend hours staring at Claude Code, you might as well stare at a beautiful status line. Give the repo a ⭐ to help others discover it!
Made by Yevgeniy Achin · ✉ amazopic@gmail.com · for the Claude Code community.