omp packages

pi-path-bar0.1.0

A Pi extension for compact paths, folder aliases, and theme-aware Git status

codingbone Published 11 days ago MIT ~302 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi-path-bar

English | 简体中文

Pi 底栏扩展。支持简短路径、目录别名和随主题调整的 Git 状态颜色。

 ~/C/P/demo-app ( main)
 Projects/demo-app ( main +2 !1 ?3)
 demo ( main ⇡1)

功能

  • 简短、自动和完整路径显示模式。
  • 为任意文件夹设置显示别名,不改变实际路径或环境变量。
  • 随主题调整的别名颜色,以及 Tide 风格的 Git 状态标记。
  • 交互式设置菜单,自动保存配置。
  • 保留用量统计、模型信息和其他扩展的状态行。
  • 支持中文等 Unicode 目录名和别名。

安装

首次发布到 npm 后,可以从 npm 安装:

pi install npm:pi-path-bar
# 或仅在本次启动中使用:
pi -e npm:pi-path-bar

首次发布前,或需要使用 Git 来源时,从 GitHub 安装:

pi install git:github.com/johnbitcn/pi-path-bar

在已运行的 Pi 中执行 /reload,再输入 /path-bar。

仅在本次启动中使用:

pi -e git:github.com/johnbitcn/pi-path-bar

本地开发时,在项目目录执行:

pi install "$PWD"
# 或仅在本次启动中加载扩展:
pi -e ./src/index.ts

只加载一份扩展。切换安装来源前,先移除已有的本地或 Git 安装。目录图标需要 Nerd Font;也可在设置中关闭图标。

设置

执行 /path-bar。上下键选择,Enter 或空格切换设置或打开操作,Esc 退出。修改立即生效,并自动保存。扩展界面使用英文。

设置项 默认值 可选值
Path display(路径显示) Short Short、Auto、Full、Native footer
Folder icon(目录图标) On On、Off
Git status(Git 状态) On On、Off
Session name(会话名称) On On、Off
Add folder alias(添加目录别名) — 输入文件夹路径和名称
Manage folder aliases(管理目录别名) — 修改或删除别名

Native footer 恢复 Pi 原生底栏。其他显示设置会保留,但在该模式下不生效。

路径显示模式

  • **Short:**始终将中间目录缩写为首个字素,支持中文等 Unicode 名称。
  • **Auto:**宽度足够时显示完整路径,否则缩写。
  • **Full:**不缩写,超出宽度时截断。

Short 和 Auto 在宽度不足时将中间目录折叠为 …。极窄时,先省略起点与图标,再截断最后一级目录名。

主目录显示为 ~。~ 和目录别名等命名起点前显示目录图标。以 / 开头的绝对路径不显示图标。

目录别名

选择 Add folder alias,可以给任意文件夹命名。输入绝对路径或 ~/ 开头的路径。路径留空直接按 Enter,则使用当前目录。目标必须存在且为文件夹。

例如,将 ~/CloudDrive 命名为 Cloud:

 Cloud
 Cloud/P/demo-app

也可以将 ~/CloudDrive/Projects/demo-app 命名为 demo。该目录显示为  demo,其子目录显示为  demo/src。

匹配和编辑规则

  • 别名匹配该目录及其子目录,按目录边界匹配。
  • 多个别名同时匹配时,使用最长路径。父级和子级别名不会叠加。
  • 宽度允许时保留完整别名。其后的目录按所选模式处理。
  • 没有匹配时,使用 ~ 或绝对路径。
  • 保存时规范化路径并展开 ~,但不解析符号链接。
  • 路径和名称不能重复。名称不能为空、~、. 或 ..,不能包含斜杠、反斜杠、换行或控制字符。
  • 修改时,字段留空表示保留原值。Esc 取消。
  • 删除别名不会删除实际文件夹。磁盘暂时离线时,已有别名仍会保留。

仅命中的别名名称使用 Pi 主题的 mdLink 色。内置暗色主题使用较亮的蓝色,亮色主题使用较深的蓝色。自定义主题以其链接色为准。图标、子目录和会话名使用灰色;Git 信息使用状态色。切换主题后颜色同步更新。

别名只影响底栏,不改变工作目录、工具访问路径或环境变量。

Git 状态

借用 Tide 的标记形式,但使用 Pi 主题文字色,不使用背景色。扩展不会修改 fish 或 Tide。

状态 主题色 内置主题效果
初次读取或查询失败 text 默认文字色,显示 ?
工作区干净 mdLink 蓝色
有已暂存、未暂存或未跟踪变更 warning 黄色
有冲突或正在进行 Git 操作 error 红色

优先级:红色 > 黄色 > 蓝色。不在 Git 仓库时隐藏 Git 信息。目录别名颜色不受 Git 状态影响。

 demo ( main ⇣2 ⇡1 *1 ~2 +3 !4 ?5)
标记 含义
⇣N 落后上游 N 个提交
⇡N 领先上游 N 个提交
*N N 条 stash
~N N 个冲突文件,覆盖 DD AU UD UA DU AA UU
+N N 个已暂存条目
!N N 个未暂存条目
?N N 个未跟踪条目

数量为零时不显示。未跟踪目录按 Git 默认行为合并为一个条目。冲突文件不重复计入已暂存或未暂存数量。领先、落后和 stash 本身不改变颜色。没有上游时,不显示领先和落后。

显示 merge、rebase、cherry-pick、revert、bisect 等操作。可用时显示 rebase 进度。分离 HEAD 时显示 #标签 或 @提交短哈希。支持 linked worktree。

查询异步执行,并设有超时。每 5 秒刷新一次,也在工具执行完成、agent 回复完成或分支变化时刷新。关闭 Git 状态或选择 Native footer 后,停止扩展查询。

配置

配置在各项目间共用,保存到:

~/.pi/agent/pi-path-bar.json

若设置了 PI_CODING_AGENT_DIR,则使用该目录。扩展不会设置或修改此变量。

{
  "mode": "short",
  "icon": true,
  "branch": true,
  "session": true,
  "aliases": [
    { "path": "/home/example/Projects", "name": "Projects" }
  ]
}

branch 字段控制 Git 状态显示。配置在重启或 /reload 后保留。打开菜单时重新读取文件。保存使用临时文件和原子替换。其他已运行的 Pi 实例需要重新打开菜单或重新加载,才能同步修改。

新文件不存在时,会读取旧的 pi-show-dir.json。下次保存时写入新文件,并保留旧文件。配置损坏时会提示错误,不会覆盖原文件。

限制

  • Pi 的公开 API 会替换整个底栏。其他扩展也调用 setFooter() 时,最后设置的底栏生效。
  • 公开 API 不提供自动压缩开关,因此自定义底栏不显示原生 (auto) 标记。
  • 这是非官方 Pi 扩展,与 Pi 或 Tide 项目无隶属或背书关系。

开发

需要 Node.js 22.19 或更新版本。Git 状态和集成测试需要 Git。

npm install --ignore-scripts
npm test
npm run check

许可证与致谢

本项目采用 MIT 许可证。Pi 和 Tide 的版权及许可文本见第三方声明。发布包不包含宿主依赖或字体文件。

维护者可参阅 npm 发布指南,了解登录、打包检查、发布和验证流程。