Skip to main content

Customizable statusline formatter for Claude Code CLI

Project description

ccstatusline-py

A Python/uv port of ccstatusline — customizable statusline for Claude Code CLI. No Node.js required.

Installation

Install from PyPI with uv (recommended) — puts a ccstatusline binary on your PATH:

uv tool install ccstatusline-py

Or run it ad-hoc without installing:

uvx --from ccstatusline-py ccstatusline

To install the latest unreleased version directly from GitHub:

uv tool install --python 3.11 git+https://github.com/MChromiak/cc_statusline_py.git

Claude Code integration

Add to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "ccstatusline",
    "padding": 0
  }
}

(If you didn't uv tool install and want to run on demand, use "command": "uvx --from ccstatusline-py ccstatusline" instead.)

Configuration

Run interactively to configure visually:

ccstatusline

(If you didn't uv tool install, use uvx --from ccstatusline-py ccstatusline instead.)

Config is saved to ~/.config/ccstatusline-py/settings.toml. Existing configs from the original ccstatusline (JSON) or from earlier ccstatusline_py/ (underscore) installs are migrated automatically on first run.

Customising widget labels

Every widget supports an optional prefix field that controls the icon/label shown before its value:

[[lines]]
widgets = [
  { type = "session_cost", prefix = "$ " },     # custom prefix
  { type = "git_branch",   prefix = "" },        # no prefix
  { type = "model" },                            # widget default
]

To turn the built-in icons off everywhere, set minimalist_mode = true at the top level or color_level = "none".

Examples

Each example below is a complete ~/.config/ccstatusline-py/settings.toml. Available widget types include model, cwd, git_branch, git_status, context_pct, context_bar, session_cost, session_duration, tokens_used, burn_rate, block_reset_timer, separator, and more.

1. Minimal — model name and git branch

color_level = "none"
minimalist_mode = true

[powerline]
enabled = false

[[lines]]
widgets = [
  { type = "model", padding = 0 },
  { type = "separator", padding = 1 },
  { type = "git_branch", padding = 0 },
]

Renders as:

claude-sonnet-4-5  │  main

2. Powerline — model, branch, context bar, cost

color_level = "truecolor"

[powerline]
enabled = true
separator = ""
left_cap = ""
right_cap = ""

[[lines]]
widgets = [
  { type = "model",        fg = "#ffffff", bg = "#005f87", padding = 1 },
  { type = "git_branch",   fg = "#1e1e2e", bg = "#a6e3a1", padding = 1 },
  { type = "context_bar",  fg = "#1e1e2e", bg = "#f9e2af", padding = 1 },
  { type = "session_cost", fg = "#1e1e2e", bg = "#f5c2e7", padding = 1 },
]

Renders coloured powerline-style segments:

 claude-sonnet-4-5  main  ████░░░░░░  $0.0234

(With a Nerd Font, the segment caps are rendered as connected arrows.)

Every data-bearing widget ships a built-in Nerd Font icon plus a short label (e.g. Model: …, Branch: …, Cost: …), so the rendered output is closer to Model: claude-sonnet-4-5 Branch: main Ctx ████░░░░░░ Cost: $0.0234. Defaults are hidden automatically when minimalist_mode = true or color_level = "none". See "Customising widget labels" below to override or disable per widget.

3. Two-line — overview line + project line

color_level = "256"

[powerline]
enabled = false

[[lines]]
widgets = [
  { type = "model",        fg = "#5fafff", padding = 0 },
  { type = "separator",    padding = 1 },
  { type = "context_pct",  fg = "#ffaf00", padding = 0 },
  { type = "separator",    padding = 1 },
  { type = "session_cost", fg = "#aaffaa", padding = 0 },
]

[[lines]]
widgets = [
  { type = "cwd",        fg = "#888888", padding = 0 },
  { type = "separator",  padding = 1 },
  { type = "git_branch", fg = "#ff87d7", padding = 0 },
  { type = "git_status", fg = "#ffaf00", padding = 1 },
]

Renders two lines:

claude-sonnet-4-5  │  42.5%  │  $0.0234
~/projects/myapp  │  main ✔

Requirements

  • Python 3.11+
  • uv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccstatusline_py-0.1.2.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccstatusline_py-0.1.2-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file ccstatusline_py-0.1.2.tar.gz.

File metadata

  • Download URL: ccstatusline_py-0.1.2.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ccstatusline_py-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ff2b914531801db1593234179c2b3eff5d5b102ca78182dcc1ff6708af394c2e
MD5 ed435558ce0646f526caaf1e91b94e3d
BLAKE2b-256 99871d2611b52376c1db844f6964e570102f998178285f0d9cabef69690bc486

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccstatusline_py-0.1.2.tar.gz:

Publisher: publish.yml on MChromiak/cc_statusline_py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ccstatusline_py-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ccstatusline_py-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ba8cf103a91ec1ef077c41ad2545084d6db70a6ccd202adf2349d56c1828d002
MD5 7a7451f92e0dc91bfb668d25c2d10320
BLAKE2b-256 d47db223ee2d7e99f24f74a3de393c91f2a7af8750a2798ae1ef48779b952914

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccstatusline_py-0.1.2-py3-none-any.whl:

Publisher: publish.yml on MChromiak/cc_statusline_py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page