centminmod/claude-plugins/tree/master/plugins/desktop-statusline

一个 Claude Code 插件,在 Claude Desktop app 的 Code 标签页中于提示符上方绘制状态栏,显示文件夹、git 分支和状态、会话时长、提示次数与费用、上下文仪表、5 小时和每周用量上限及重置倒计时、上一轮统计、相对于 prompt-cache TTL 的闲置时间、压缩次数和运行中的代理。
centminmod/claude-plugins/tree/master/plugins/desktop-statusline

desktop-statusline 读取 CLI statusLine 脚本在 Claude Code 中会使用的同一份会话资料,并在 CLI statusLine 脚本不会运行的桌面 Code 标签页中绘制。它显示当前位置(文件夹、git 分支、worktree 标记、领先/落后提交数、未提交文件数),右侧显示会话时长、提示次数和费用;还显示上下文窗口仪表、带重置倒计时的 5 小时和每周计划用量上限,以及上一轮详情(时长、模型、缓存命中率、闲置时间,超过 prompt-cache TTL 时显示缓存已冷却警告,压缩次数和压缩前后 token)。最多三个运行中的子代理各占一行,随后显示“还有 +N 个代理在运行”;每个上限窗口达到 80% 和 95% 时各弹出一次提示。它只适用于桌面端:终端会话中什么也不绘制,也跳过 git 调用,不影响 CLI statusLine。它唯一运行的程式是 git,在会话文件夹中执行两个固定的唯读命令(git status --porcelain=v2 --branch 和 git rev-parse --git-dir --git-common-dir),超时为 5 秒;不发出网络请求,也不写入文件。通过 /plugin marketplace add centminmod/claude-plugins 再执行 /plugin install desktop-statusline@centminmod 安装。需要 Claude Code v2.1.287 或更高版本以及更新的桌面应用。一个设置 cache_ttl(默认 1h,也可设为 5m)控制状态栏何时标记提示缓存已冷却。MIT 授权。
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add centminmod/claude-plugins claude plugin install desktop-statusline
A Claude Code mod that puts a status band above the prompt in the Claude Desktop app's Code tab.
The Claude Code CLI has a statusLine setting that runs a script and prints
its output under the prompt. The desktop Code tab never runs that script, so
desktop sessions show none of it. This mod reads the same session data from
inside Claude Code and draws it in the desktop app instead.

statusLine keeps working as before.git, in the session's
folder.Four lines on a normal window. On a narrow window the two limit meters stack, which makes five.
Each running subagent gets a row of its own, up to three, followed by a
+N more agents running line.
Meters turn amber at 80% and red at 95%. A cache hit rate under 50% shows as a
warning, and so does an idle time past the prompt-cache TTL, marked
(cache cold). A toast pops up when a usage limit crosses 80% and again at
95%, once per limit window.
Mods need Claude Code v2.1.287 or later. The desktop app ships its own copy of Claude Code, so keep the app updated too.
Run these inside the Claude Code terminal CLI (claude in your shell):
/plugin marketplace add centminmod/claude-plugins
/plugin install desktop-statusline@centminmod
Then start a new session in the desktop app's Code tab. The band appears once the session has data to show, usually right away.
One setting, cache_ttl, sets how long your session can sit idle before the
band marks the prompt cache cold. Claude Code asks for it when you enable the
plugin, and you can change it later in /plugin or /config. Enter 1h or
5m; any other value counts as 1h.
Claude Code's prompt caching docs give these defaults for the main conversation:
| Account | Default TTL | Set cache_ttl to |
| :- | :- | :- |
| Claude subscription, within plan usage | 1 hour | 1h, the default |
| API key, cloud provider, or a subscription drawing on usage credits | 5 minutes | 5m |
A promptCacheTtl setting or the CLAUDE_CODE_PROMPT_CACHE_TTL environment
variable overrides those defaults, so match whatever you set there. The docs
don't split Pro from Max. If you're not sure which TTL you get, run this and
look at usage.cache_creation in the output:
claude -p "hello" --output-format json
One-hour cache writes count under ephemeral_1h_input_tokens, five-minute
writes under ephemeral_5m_input_tokens.
Claude Code stores your answer in ~/.claude/settings.json:
{
"pluginConfigs": {
"desktop-statusline@centminmod": {
"options": { "cache_ttl": "5m" }
}
}
}
See Cache lifetime for which TTL your sessions get.
The band refreshes when the session starts, when the desktop app attaches, after every turn, when a plan limit's percentage changes, two seconds after Claude starts a subagent, and every 60 seconds.
Programs it runs. Only git, with two fixed read-only commands, in the
session's folder and with a 5-second timeout:
git status --porcelain=v2 --branch, for the branch, commits ahead or
behind upstream, and the uncommitted file countgit rev-parse --git-dir --git-common-dir, to tell a worktree from the main
checkoutNeither command contacts a remote, and the mod runs them only in desktop sessions. It starts no other program.
What it reads. Through Claude Code's mods API, it reads the session's usage (context size, cost, and the 5-hour and weekly plan limits), the session's folder, the number of prompts, the start time, and the type and short task description of each running subagent. From each finished turn it reads the duration, the model, and the token counts used for the cache hit rate. After a compaction it reads the token counts before and after. It doesn't read prompt or response text, files, environment variables, or credentials. The plan limits come from Claude Code, not from your login.
What it sends. Nothing. It makes no network calls and writes no files.
What it reads goes only into the band above the prompt and the usage-limit
toasts, and into the session's $.state, which ends with the session.
The one URL in the code, http://www.w3.org/2000/svg, is the standard SVG
namespace in the meter bars' xmlns attribute. It labels the markup as SVG
and is never fetched. The token counts next to it are the context and
compaction sizes the band displays, not API keys or login tokens.
What its hooks change. Nothing. The session.compact hook waits for the
compaction to finish, records the before and after token counts, and returns
the result unchanged. The tool.call hook for the Agent tool schedules a band
refresh two seconds later and passes the call through unchanged.
Before installing a mod, you can list what it hooks and calls without running it. Clone this repo and run:
claude plugin validate plugins/desktop-statusline
For this mod the report lists:
session.start, session.attach for the desktop,
session.measure, turn.complete, tool.call for the Agent tool only,
session.compact, and ui.render for the AbovePrompt band.$.process.run for git status --porcelain=v2 --branch
and git rev-parse --git-dir --git-common-dir.It keeps its values in the session's $.state and writes no files.
cache_ttl says.claude -p, or cloud sessions.
Mods only draw in the terminal and the desktop Code tab, and this one only
draws in the desktop.Disable it from the Installed tab in /plugin, or uninstall it from your
shell:
claude plugin uninstall desktop-statusline@centminmod
MIT. See LICENSE.