@babarot/c-c-statusline
v0.3.0
Published
A Deno-powered status line for Claude Code CLI showing model, context usage, rate limits, and more
Downloads
30
Maintainers
Readme
c-c-statusline
A Deno-powered status line for Claude Code CLI.
Shows model info, context usage, rate limits, git status, session duration, and more — right in your terminal.

Install
Downloads a precompiled binary from GitHub Releases. No runtime dependencies needed.
# curl
curl -fsSL https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.sh | bash
# npx
npx @babarot/c-c-statusline
# deno
deno run -A https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.tsConfigure
Config file (recommended)
Generate ~/.claude/statusline.yaml with defaults:
# After install
~/.claude/c-c-statusline --init-configOr during install:
# curl
curl -fsSL https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.sh | bash -s -- --init-config
# npx
npx @babarot/c-c-statusline --init-config
# deno
deno run -A https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.ts --init-configThen edit to your liking:
# ~/.claude/statusline.yaml
theme: tokyo-night-storm
# Layout: controls which items appear on each line and their order.
# Items not listed here are hidden. Remove an item to hide it.
lines:
- [model, context, git, duration, effort, vim, update]
- [usage]
# Per-item options
items:
context:
format: 'ctx {used}/{total} ({pct}%)'
git:
path-style: short
# symbols:
# stash: "-"
# untracked: "?"
vim:
mode: auto
usage:
bar-style: block
time-style: relativesettings.json stays clean — no flags in the command:
// ~/.claude/settings.json
{
"statusLine": {
"type": "command",
"command": "\"$HOME/.claude/c-c-statusline\""
}
}CLI flags
CLI flags override config file values. Pass flags during install to bake them into settings.json:
# curl
curl -fsSL https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.sh \
| bash -s -- --bar-style block --path-style short --theme tokyo-night
# npx
npx @babarot/c-c-statusline --bar-style block --path-style short --theme tokyo-night
# deno
deno run -A https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.ts \
--bar-style block --path-style short --theme tokyo-nightThis writes the flags directly into the command:
// ~/.claude/settings.json
{
"statusLine": {
"type": "command",
"command": "\"$HOME/.claude/c-c-statusline\" --bar-style block --path-style short --theme tokyo-night"
}
}Layout
The lines config controls which items appear and in what order. Each array is a display line:
lines:
- [model, context, git, duration, effort, vim, update] # line 1
- [usage] # line 2+Available items: model, context, git, duration, effort, vim, update, usage
- Items are rendered left-to-right within each line, separated by
│ - Remove an item from
linesto hide it - Reorder items to change display order
- If
linesis omitted, the default layout above is used
Examples:
# Minimal: only git and usage
lines:
- [git, effort]
- [usage]
# Everything on one line (no rate limit bars)
lines:
- [model, context, git, duration, effort, vim, update, usage]
# Custom order
lines:
- [git, context, model]
- [usage]Options
Options are organized per-item under the items section, plus a global theme:
| Scope | Option | Values | Default | Description |
|---|---|---|---|---|
| global | theme | See Themes | default | Color theme |
| items.usage | bar-style | dot, block, fill | dot | Progress bar style |
| items.usage | time-style | absolute, relative | absolute | Reset time format |
| items.git | path-style | parent, full, short, basename | parent | Directory display style |
| items.git | symbols | Map | See below | Override git status symbols |
| items.context | format | Format string | ctx {used}/{total} ({pct}%) | Context display format |
| items.vim | mode | auto, always | auto | Vim mode indicator behavior |
Legacy support: The flat
optionsformat (e.g.options.bar-style) still works for backward compatibility. CLI flags (e.g.--bar-style) also continue to work and override config file values.
bar-style
| Input | Output |
|---|---|
| --bar-style dot | ●●●●○○○○○○ |
| --bar-style block | ▰▰▰▰▱▱▱▱▱▱ |
| --bar-style fill | ████░░░░░░ |
path-style
For /Users/you/src/github.com/you/project:
| Input | Output |
|---|---|
| --path-style parent | you/project |
| --path-style full | ~/src/github.com/you/project |
| --path-style short | ~/s/g/you/project |
| --path-style basename | project |
time-style
| Input | Output |
|---|---|
| --time-style absolute | 8:00pm, Mar 12, 2:00pm |
| --time-style relative | 1h 30m left, 2d 5h left |
ctx-format
Use {used}, {total}, {pct}, {compact} placeholders.
| Placeholder | Description |
|---|---|
| {used} | Tokens used (e.g. 28k) |
| {total} | Context window size (e.g. 200k) |
| {pct} | Usage percentage (e.g. 14) |
| {compact} | Remaining % until auto-compact (based on 80% usable threshold) |
| Input | Output |
|---|---|
| --ctx-format 'ctx {used}/{total} ({pct}%)' | ctx 28k/200k (14%) |
| --ctx-format '{pct}% ({used}/{total})' | 14% (28k/200k) |
| --ctx-format '{pct}% compact:{compact}%' | 14% compact:83% |
| --ctx-format '{used} of {total}' | 28k of 200k |
model-name
To hide the model name, remove model from lines:
lines:
- [context, git, duration, effort, vim, update] # no "model"
- [usage]Legacy:
--model-name offandoptions.model-name: "off"still work.
vim-mode
Shows the current Vim mode when Claude Code's Vim keybinding is enabled.
| Value | Behavior |
|---|---|
| auto | Show only in NORMAL mode (hides in INSERT to reduce noise) |
| always | Show in all modes (NORMAL, INSERT, etc.) |
To hide the vim indicator entirely, remove vim from lines. To control its behavior:
# ~/.claude/statusline.yaml
items:
vim:
mode: autoMode colors: NORMAL uses the theme's primary color, INSERT uses success (green).
Legacy:
--vim-mode offandoptions.vim-mode: "off"still work.
Themes
Built-in color themes using 24-bit True Color (RGB). Each theme defines 8 semantic color roles (primary, secondary, success, warning, caution, danger, muted, accent).
| Theme | Description |
|---|---|
| default | Original palette |
| tokyo-night | Tokyo Night Dark |
| tokyo-night-storm | Tokyo Night Storm |
| tokyo-night-light | Tokyo Night Light |
| catppuccin-mocha | Catppuccin Mocha |
| dracula | Dracula |
| solarized-dark | Solarized Dark |
| gruvbox-dark | Gruvbox Dark |
| nord | Nord |
| one-dark | One Dark |
| github-dark | GitHub Dark |
| kanagawa | Kanagawa |
| rose-pine | Rosé Pine |
Git symbols
Override any git status symbol. In the config file, use a map; with CLI flags, use key=val,... format.
| Key | Default | Description |
|---|---|---|
| unstaged | * | Unstaged changes |
| staged | + | Staged changes |
| stash | $ | Stash entries exist |
| untracked | % | Untracked files |
| ahead | ↑ | Ahead of upstream |
| behind | ↓ | Behind upstream |
| Input | Output |
|---|---|
| --git-symbols "stash=-,untracked=?" | (main *+ -?) |
| --git-symbols "unstaged=~,staged=+,stash=-,untracked=?,ahead=+,behind=-" | (main ~+ -? +1-2) |
Config file:
items:
git:
symbols:
stash: "-"
untracked: "?"Legacy:
options.git-symbolsalso still works.
What it shows
Line 1 (default): Model name, context usage (tokens + %), directory, git status, session duration, effort level, vim mode, update notification
Lines 2+ (default): Rate limit usage (current 5-hour window, weekly, extra credits when active)
All items can be reordered, shown, or hidden via the lines config.
Git status
Inspired by git-prompt.sh. Displays branch name and rich status indicators:
(main *+$% ↑1↓2|REBASE 3/5)| Symbol | Meaning |
|---|---|
| * | Unstaged changes |
| + | Staged changes |
| $ | Stash entries exist |
| % | Untracked files |
| ↑N | N commits ahead of upstream |
| ↓N | N commits behind upstream |
| \|REBASE | Rebase in progress (with step/total) |
| \|MERGING | Merge in progress |
| \|CHERRY-PICKING | Cherry-pick in progress |
| \|REVERTING | Revert in progress |
| \|BISECTING | Bisect in progress |
| \|AM | git am in progress |
Detached HEAD is shown in red with a tag or short SHA.
Uninstall
# curl
curl -fsSL https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.sh | bash -s -- --uninstall
# npx
npx @babarot/c-c-statusline --uninstall
# deno
deno run -A https://raw.githubusercontent.com/babarot/c-c-statusline/main/bin/install.ts --uninstallLicense
MIT
