pi-nebula
One chrome extension + one theme for pi: persistent startup panel, status bar, metrics bar, editor shell, tool rows — base16 nebula palette.
Package details
Install pi-nebula from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-nebula- Package
pi-nebula- Version
0.2.1- Published
- Oct 1, 2026
- Downloads
- 138/mo · 138/wk
- Author
- unsual
- License
- MIT
- Types
- extension, theme
- Size
- 49.8 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"image": "https://raw.githubusercontent.com/wduo87391/pi-nebula/master/docs/preview.png",
"themes": [
"./themes"
],
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-nebula
把 pi 的终端界面收拢成一个扩展 + 一套主题。
取代五个纯界面包——pi-powerline-footer、@pi-kaush/pi-welcome-screen、@andy8647/pi-toolbox、@monotykamary/pi-tps、@ifi/oh-pi-themes——由本包独自接管全部 chrome 槽位,所有 UI 配置收进 settings.json 的单个 nebula 键。
配色是 base16「nebula」(蓝紫青冷调深色),与桌面 stylix 方案同源,静态写在 themes/nebula.json 里。

安装
pi install git:github.com/wduo87391/pi-nebula@<commit>
ref 是钉住的 tag 或 commit,pi update --extensions 不会把它漂到新版本(docs/packages.md:90)。
装完在 settings.json 里启用主题:
{ "theme": "nebula" }
接管了哪些槽位
| 槽位 | 实现 | 位置 |
|---|---|---|
| 启动面板 | ctx.ui.setHeader() |
屏幕顶部,常驻,位于对话与状态条之上 |
| 状态条 | ctx.ui.setWidget("nebula-status") |
编辑器上方 |
| 底部 footer | ctx.ui.setFooter() |
渲染为空——只用来抓 footerData(git 分支)供状态条使用 |
| metrics bar | ctx.ui.setWidget("nebula-metrics", …, { placement: "belowEditor" }) |
编辑器下方 |
| 编辑器壳 | class NebulaEditor extends CustomEditor |
与状态条、metrics 共用同一个 INDENT |
| 工具行 | pi.registerTool() 覆盖 7 个内置工具,execute 委托回原定义 |
行内 |
设计上的自上而下顺序是:启动面板 · 状态条 · 编辑器 · metrics bar。
配置
{
"nebula": {
"welcome": "header"
}
}
| 值 | 效果 |
|---|---|
header(默认) |
常驻面板,钉在屏幕顶部 |
overlay |
居中浮窗,一次性,按键即消失 |
off |
不画启动面板 |
settings.json 的项目级配置(<cwd>/.pi/settings.json)覆盖用户级。
命令
/nebula-off—— 本次会话恢复 pi 内置的 header / footer / widget / editor
要求
- Nerd Font(必需,非可选)—— 状态条/工具行图标用的是 Nerd Font 私有区码位(
` `等)。未安装 Nerd Font 的终端会把这些码位渲染为豆腐块或乱码;没有降级 fallback,不想装字体请勿使用本包 - 真彩色终端 —— 颜色以 raw truecolor ANSI 输出(
COLORTERM=truecolor) - 终端宽度会变,本包不写死任何列数;一律走 pi 自己的
visibleWidth()/truncateToWidth()
已知边界
- pi 内置的 user / assistant / thinking 消息渲染器无法替换(二进制里硬编码,
ExtensionAPI上没有注册点)。因此消息流里的 chevron 前缀、右对齐时间戳、贯穿 tool 组的竖轨这类 chrome 做不到,不是没做。输出区能改的部分只有themes/nebula.json的 53 个 token。 - 状态条里的 provider 只能显示 provider id(如
r4coder),不是真实厂商名——pi 未暴露该字段。
开发
# 语法自查(报 ERR_MODULE_NOT_FOUND 是正常的,pi 内部由 jiti 解析)
node --experimental-strip-types extensions/nebula.ts
本地以路径方式安装(packages 里写目录路径)会让每次编辑直接影响运行中的 pi;改用上面的 git:...@<commit> 形式可以把开发目录与运行实例隔开。
许可
MIT
