Oh My Niu:Niubash 的主题与插件框架
niubash 的官方 Oh My 式插件框架与捆绑发行:插件即目录、主题即插件, shell 核心只提供加载原语。装好即得 27 款主题与一族功能插件 (git / docker / kubectl / zoxide / fzf…),随 niubash 发行做离线基线,之后独立更新与回滚。 它不是 zsh 兼容层——是 Oh My Zsh 的有用形状、bash 的身体。
github.com/unixwin/oh-my-niu ↗ 1 stars (repo-meta.json 实测 2026-10-19)
为什么是 Oh My Niu
用惯了 Oh My Zsh / fish 插件管理器 / PowerShell 提示符框架的人,期待的不是某个具体主题, 而是一套模型:列插件、挑主题、source 一行,一切就位。 原生 shell 常缺这一层;oh-my-niu 给 niubash 补上,且刻意不把框架焊死在 shell 里。
Oh My 的形状,bash 的身体
Oh My Zsh 真正好用的不是 zsh 语法,而是「插件即目录、按可预测顺序加载」的模型。oh-my-niu 把这个形状带给 niubash:列插件、source 框架、框架去加载,用户零学习成本。
shell 出原语,框架出组合
niubash 拥有加载、生命周期钩子、权限审阅、更新回滚等原语;oh-my-niu 拥有框架库、插件目录、主题与默认组合。随 shell 发行,但 bundled 不等于 built in——与第三方插件走同一套系统。
catalog 指向官方上游
niu plugin 的 bash 生态 catalog(niu plugin add oh-my-bash 即装)直指各自官方仓,不指向 oh-my-niu:上游插件一行不改即可原生运行,官方 bundle 只是选项之一。
核心特性
- 主题画廊 27 款主题(plugins/theme-* 目录与 themes/*.toml 资产层一一对应、集合一致):Oh My Zsh 经典款、Powerlevel 风 p10 四款、Oh My Posh 风配色款与官方基础款。
- 主题即插件 每款主题是一个普通插件目录(plugin.toml + theme-*.plugin.niu),与功能插件同一加载面——没有特殊的「主题系统」。
- prompt-core 提示符 API 与 segment 注册表的拥有者,默认开启;git 提示符段按 bundle 契约解析为 niubash 原生 Vcs 段(面向 niubash 1.4.1+),分支/脏星/短 SHA 进程内渲染,零 git 子进程。
- Starship 接管模式 想用 Starship?加载 starship 插件、留空 NIU_THEME,由 Starship 经标准 Bash init 路径接管 PROMPT_COMMAND/PS1/PS2/PS0。
- 功能插件族 git、docker、kubectl、npm、jj、zoxide、direnv、dotenv、fzf、last-working-dir、thefuck、path-tools、extract、common-aliases、keybindings、command-not-found、winuxcmd-core(WinuxCmd 命令补全)……
- 2.0 新一方插件 command-timer(逐命令耗时与退出码)、auto-env(按目录自动 .venv)、dirmarks(目录书签)、git-fetch-reminder(上游分叉提醒)、env-sync(经 rclone 同步 shell 配置与 WPM 包清单)。
- 别名 / 补全 / 键位资产 aliases/ 五组 TOML(common/git/docker/kubectl/npm);completions/ 174 个 TOML 补全定义(WinuxCmd 核心命令族 + git/docker/kubectl/npm/jj);keybindings/ emacs 与 vi 预设。
- 环境包(envs) 一个小 TOML 声明装哪些 wpm 包、启用哪些插件、导出哪些变量:niu env use git 一键配好原生 Git 工具链(git + delta、GIT_PAGER、git-fetch-reminder)。
安装与快速上手
bundle 随 niubash 发行(离线基线,随 niu self-update 一并推进),
启用只需 rc 三行。niu plugin 命令族管的是外部生态
(oh-my-bash、bash-it 等第三方源),与捆好的 oh-my-niu 是两条互不干扰的轨道。
入口 oh-my-niu.niu 可重入——source 两次是空操作,
全量重载加 --reload。
# ~/.niubashrc 三行启用:选插件、选主题、source 框架
NIU_PLUGINS=(prompt-core git docker zoxide)
NIU_THEME=minimal
source "$NIUBASH/oh-my-niu.niu" 日常操作
# 换主题:改 NIU_THEME 后重开终端,或当前会话全量重载
source "$NIUBASH/oh-my-niu.niu" --reload
# 捆绑基线随 niubash 版本推进
niu self-update
# 顶层健康检查(rc 块、PATH 一致性等)
niu doctor
换主题改 NIU_THEME 后重开终端即可;把配置改动写进
~/.niubashrc(source 本身不落盘,插件不经用户显式命令不改写 rc)。
验证一切正常,让牛说话:
niu_moo "Bash, native on Windows." # cowsay 风格对话泡 深入:主题画廊
画廊不是静态皮肤库——每款主题都是 plugins/theme-*/ 下的普通插件目录
(plugin.toml 元数据 + *.plugin.niu 行为),由
prompt-core 的 segment 注册表渲染;themes/*.toml 资产层
服务于 manifest 兼容与审阅。四组风格:
| 分组 | 主题 |
|---|---|
| Oh My Zsh 经典 | agnoster · avit · bira · clean · fishy · lambda · robbyrussell |
| Powerlevel 风 | p10-lean · p10-classic · p10-rainbow · p10-pure |
| Oh My Posh 风 | dracula · catppuccin-mocha · gruvbox · spaceship · tokyonight |
| 官方基础 | default · dark · light · colorful · minimal · classic · pure · compact · cyberpunk · forest · ocean |
来源:oh-my-niu README「First-Party Plugins」插件表与 plugins/、
themes/ 目录(实测计数 2026-10-24:theme-* 目录与 themes/*.toml 均为
27、集合一致;上表四组合计 27)。
目录优先模型
行为本体在 plugins/<name>/;packs/、aliases/、
completions/、prompts/、keybindings/、
themes/ 是过渡期的 manifest 兼容与审阅元数据面(当前 niubash 发行工具仍认
manifest-first 布局)。新行为先进插件目录,再暴露 TOML 元数据供审阅、托管安装、更新与回滚——
设计全文见仓内 docs/design.md(framework-first)。
catalog 指向官方上游
niu plugin 的三个内置 bash 生态源不绑 oh-my-niu——
origin 直指官方上游仓,上游资产一行不改原生运行(兼容性是被
rubash 引擎测出来的事实):
| catalog 源 | 官方 origin | 内容 |
|---|---|---|
oh-my-bash | github.com/ohmybash/oh-my-bash | bash 框架:80+ 主题、插件与别名(MIT) |
bash-it | github.com/Bash-it/bash-it | 社区别名、插件、补全与主题(MIT) |
bash-completion | github.com/scop/bash-completion | 标准 bash 补全库(GPL-2.0+,按需拉取) |
来源:niubash crates/niubash-runtime/src/plugins/descriptors.rs(ManagerDescriptor origin 字段)· HIGHLIGHTS #13。
与 niu plugin 命令族的边界
bundle 契约:api = "niubash:[email protected]"、
min_niubash = "1.0.0"(2.0 线自旧 winuxsh: 前缀迁至
niubash:;旧 min_winuxsh 字段仍被接受,改名前的
~/.oh-my-winuxsh 目录作为回退仍被发现)。发布档
oh-my-niu-<version>.zip 附 .sha256。
更新模型一句话:oh-my-niu 不是 niu plugin 的 source——
niu plugin update oh-my-niu 会报 unknown source(1.4.4 实测),
这是有意设计:捆好的框架随 niubash 版本走(niu self-update 推进基线),
update/rollback 那 spec+lockfile 机制管的是外部第三方源。
旧的 niu plugin themes/doctor/review/search 内建面也已退役
(niubash#145):主题选择就是 NIU_THEME,主题总览看上方画廊或
plugins/theme-*/ 目录,诊断走顶层 niu doctor
(CLI 全录见 CLI 参考)。
实测数字
框架类项目没有微基准——这里的数字是结构台账与仓内实测计数(2026-10-19):
| 指标 | 数值 | 来源 |
|---|---|---|
| 主题 | 27 款(theme-* 插件目录 27、themes/*.toml 27,两集合逐名一致) | 仓内 plugins/ 与 themes/ 实测计数 2026-10-19 |
| 插件目录 | 50 个(27 主题 + 23 功能插件) | 仓内 plugins/ 实测计数 2026-10-19 |
| 补全定义 | 174 个 TOML | 仓内 completions/ 实测计数 2026-10-19 |
| 索引 pack 条目 | 22 个(bundle 2.0.0,min_niubash 1.0.0) | oh-my-niu/index.toml |
| 别名包 / 环境包 | 5 组 TOML · 2 个官方 env(git / cicd) | 仓内 aliases/ · envs/ 实测计数 |
更新动态
oh-my-niu 有自身 CHANGELOG。最新 3 版(changelogs.json,抓取 2026-10-19; 完整流水见 更新日志):
- 2.0.0(日期未标)
更名 oh-my-winuxsh → oh-my-niu(对齐 niubash 1.0.0 品牌);bundle/plugin API 前缀
winuxsh:→niubash:,环境前缀改NIU_*; 新一方插件 command-timer / auto-env / dirmarks / git-fetch-reminder / env-sync; git 提示符段面向 niubash 1.4.1+ 解析为原生 Vcs 段(进程内渲染、零 git 子进程)。 - 1.0.1(2026-08-02) 首批源包(Git/Docker/kubectl/npm/zoxide/direnv/dotenv/fzf/last-working-dir/thefuck); 框架入口点、目录优先官方插件、prompt-core 与 minimal/classic/pure/compact/cyberpunk/forest/ocean 七款主题插件;运行时 smoke 脚本;确定性发布打包(zip + sha256)。
- 1.0.0(2026-07-31) 建仓为官方插件 bundle:bundle 元数据(api = winuxsh:[email protected]、 min_winuxsh 0.8.3)、别名/补全/提示符预设/键位/主题资产与作者模板、 确定性发布打包与校验和。
相关链接
站内
- Niubash 产品文档 — 宿主 shell 与 plugin 原语
- Rubash 产品文档 — 上游插件直接跑的引擎侧
- WinuxCmd 产品文档 — winuxcmd-core 补全的对象
- wpm 产品文档 — 环境包的包安装通道
- CLI 与旗标参考 — niu plugin / niu env 全录
- 文档区首页 · 更新日志
常见问题
oh-my-niu 怎么启用?
rc 三行:NIU_PLUGINS=(prompt-core git …) 选插件、NIU_THEME=… 选主题、source "$NIUBASH/oh-my-niu.niu" 加载框架。框架随 niubash 发行,入口可重入(source 两次是空操作,--reload 全量重载)。
oh-my-niu 怎么换主题?
改 NIU_THEME 后重开终端即可;当前会话可 source "$NIUBASH/oh-my-niu.niu" --reload 热重载。27 款主题每一款都是普通插件目录,没有特殊的「主题系统」。
能跑 oh-my-bash 的主题和插件吗?
能——niu plugin add oh-my-bash(catalog 直指官方上游仓),上游资产一行不改原生运行;oh-my-niu 与外部源互不干扰,可并存。
oh-my-niu 怎么更新?
捆绑基线随 niu self-update 推进。它不是 niu plugin source——niu plugin update oh-my-niu 报 unknown source(niubash 1.4.4 实测),spec+lockfile 机制管的是外部第三方源。
免费吗?支持哪些平台?
全部开源免费。niubash 提供 Windows x64 / arm64 原生安装包(winget:Unixwin.Niubash);引擎 rubash 另有 Linux(gnu/musl)、macOS、Android 与 OpenHarmony 五平台的 CI 门禁构建。