@juanibiapina/pi-powerbar
Pi extension that renders a persistent powerline status bar with left/right segments updated via events
Package details
Install @juanibiapina/pi-powerbar from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@juanibiapina/pi-powerbar- Package
@juanibiapina/pi-powerbar- Version
0.9.1- Published
- Apr 25, 2026
- Downloads
- 2,066/mo · 771/wk
- Author
- juanibiapina
- License
- MIT
- Types
- extension
- Size
- 80.5 KB
- Dependencies
- 2 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./dist",
"node_modules/@marckrenn/pi-sub-core/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-powerbar
A pi extension that renders a persistent powerline-style status bar with left-aligned and right-aligned segments.
Any other pi extension can update segments by emitting a single powerbar:update event — no imports or dependencies required.
Install
pi install npm:@juanibiapina/pi-powerbar
⚠️ Load Order:
pi-powerbarmust appear afterpi-extension-settingsand before any segment-emitting extensions in yourpackagesarray in~/.pi/settings.json. It registers settings at load time (requiringpi-extension-settingsto already be loaded), and segment emitters send events thatpi-powerbarmust be ready to receive.
Usage
The powerbar renders a widget with two sides, like tmux:

Producing segments
Any extension can register and update a segment. First, register the segment so it appears in the settings menu:
pi.events.emit("powerbar:register-segment", {
id: "git-branch",
label: "Git Branch",
});
Then update it with data:
pi.events.emit("powerbar:update", {
id: "git-branch",
text: "main",
icon: "⎇",
color: "accent",
});
Segments can include a progress bar with an optional block count hint:
pi.events.emit("powerbar:update", {
id: "context-usage",
text: "",
suffix: "30%",
bar: 30, // progress value 0–100
barSegments: 10, // optional: number of discrete blocks in blocks mode
color: "muted",
});
To remove a segment:
pi.events.emit("powerbar:update", {
id: "git-branch",
text: undefined,
});
Built-in segments
| Segment ID | Description |
|---|---|
git-branch |
Current git branch (refreshes after bash commands) |
tokens |
Cumulative input/output tokens and session cost (e.g. ↑9 ↓270 $0.11) |
context-usage |
Context window usage as a progress bar with percentage |
provider |
Current LLM provider name (e.g. anthropic, openai) |
model |
Current model name and thinking level |
sub-hourly |
Hourly subscription usage from pi-sub-core |
sub-weekly |
Weekly subscription usage from pi-sub-core |
Configuration
Settings are managed through pi-extension-settings and can be changed via the /extension-settings command in pi.
| Setting | Description | Default |
|---|---|---|
| Left segments | Segments shown on the left side (ordered multi-select menu) | git-branch,tokens,context-usage |
| Right segments | Segments shown on the right side (ordered multi-select menu) | provider,model,sub-hourly,sub-weekly |
| Separator | String drawn between segments on the same side | │ |
| Placement | Where the powerbar appears (belowEditor or aboveEditor) |
belowEditor |
| Bar style | Visual style of progress bars (continuous or blocks) |
blocks |
| Bar width | Width of progress bars in characters (4–24) | 10 |
The left and right segment settings open an interactive menu where you can toggle segments on/off and reorder them with Shift+↑/↓. All segments registered via powerbar:register-segment appear as options. Segments not listed in either side are ignored.
Development
npm install
npm run check # lint + typecheck
npm run build # compile to dist/
npm run dev # watch mode
License
MIT