【免费下载链接】Shelly-ALPM
Pacman alternative for ArchLinux, designed with you in mind.
Shelly 是一个专为 Arch Linux 打造的现代化、用户友好的包管理器(pacman 替代方案)。这份 Shelly 贡献指南将带你走完 3 条参与路径:本地化翻译、社区协作与从零构建开发环境,无论你是否会写代码,都能快速上手为 Shelly 做贡献。
项目速览:Shelly 是什么?
Shelly 是 Arch Linux 上的下一代包管理工具,提供 GUI 与 CLI 双形态,核心特性包括:
- 🖥️图形界面(shelly-ui):基于 GTK4 的 Wayland 原生体验
- 💻现代 CLI(shelly):面向自动化与脚本,如
shelly -Is firefox --needed - 📦AUR 支持:内置 PKGBUILD 构建与安全审查流程
- 🧩可选 Flatpak / AppImage 管理:与原生包共存
项目以 Zig 为主语言,按组件拆分在独立目录中,完整架构说明见 CONTRIBUTING.md。
本地化贡献:把 Shelly 翻译成你的语言
本地化是门槛最低、价值最高的贡献方式。Shelly 的 UI 已覆盖 17 种语言(含简体中文),托盘通知服务覆盖 13 种语言。
找到语言文件(po 目录)
两个组件各自维护独立的 gettext 翻译目录:
| 组件 | 目录 |
|---|---|
| GTK 图形界面 | Shelly.Ui.Gtk/po/ |
| 托盘通知服务 | Shelly.Notifications.Zig/po/ |
每个<语言>.po文件就是翻译目录,例如 Shelly.Ui.Gtk/po/zh_CN.po,基本结构如下:
msgid "Enable AUR?" msgstr "启用 AUR?"用 update-translations.sh 更新与合并
每个组件都提供了本地化维护脚本,可一键提取字符串、合并已有翻译并清理过期条目:
cd Shelly.Ui.Gtk ./update-translations.sh # 提取 + 合并所有已有 .po ./update-translations.sh --new es # 为新语言创建 po/es.po托盘服务同理,脚本位于 Shelly.Notifications.Zig/update-translations.sh:
cd Shelly.Notifications.Zig ./update-translations.sh --new xx --compile # 新建语言并编译 .mo脚本会自动运行msgfmt --statistics报告每种语言的翻译完成率,方便你挑选待翻译条目。
翻译 .desktop 菜单项
应用菜单的文案不在 po 目录中,而是写在桌面条目文件里:
- com.shellyorg.shelly.desktop
- com.shellyorg.shelly-notifications.desktop
在英文行旁添加Name[xx]=、Comment[xx]=、Keywords[xx]=即可(xx为语言代码)。注意:Keywords 中保留英文关键词,保证两种语言下搜索都能命中。提交前用desktop-file-validate校验两个.desktop文件。
验证并编译 .mo 文件
- 构建并启动应用
- 确认 UI 元素均已翻译、无意外回退到英文
- 托盘服务可用
--compile将.po编译为.mo,再通过LANG=<lang>.UTF-8 TEXTDOMAINDIR=$(pwd)/build/locale ./zig-out/bin/shelly-notifications本地验证
验证通过后提交 Pull Request 即可。
开发者入门:从零构建 Shelly
环境准备
- Arch Linux(或 Arch 系发行版)
- zig 0.16.0(构建核心组件)
- vala、libalpm(由 pacman 提供)
- gettext(本地化工具链)
克隆仓库并构建
git clone https://gitcode.com/gh_mirrors/sh/Shelly-ALPM.git cd Shelly-ALPM各组件可独立构建与测试:
(cd Shelly.Flatpak.Backend && zig build) (cd Shelly.Http && zig build) (cd Shelly.PackageManager && zig build) (cd Shelly.Cli.Zig && zig build) (cd Shelly.Ui.Gtk && zig build)一键验证可选 Flatpak 后端边界、CLI 与核心冒烟测试:
scripts/test-flatpak-separation.sh运行测试
(cd Shelly.PackageManager && zig build test) (cd Shelly.Cli.Zig && zig build test) (cd Shelly.Flatpak.Backend && zig build test abi-test integration-test)了解项目结构:各组件如何协作
理解架构是深度贡献的前提。Shelly 由若干相互协作的项目组成:
| 组件 | 职责 |
|---|---|
| Shelly.Ui.Gtk | GTK4 图形前端 |
| Shelly.Cli.Zig | 终端命令行工具,UI 通过它执行特权操作 |
| Shelly.PackageManager | 核心库:libalpm/RLPM/AUR/AppImage 与 Flatpak 中立门面 |
| Shelly.Flatpak.Backend | 可选的 ABI 版本化 Flatpak 后端共享库 |
| Shelly.Notifications.Zig | 托盘服务与更新通知 |
| Shelly.Http | 独立 HTTP 客户端与兼容 TLS 实现 |
关键规则:UI 绝不直接调用 PackageManager 库,所有安装、移除、升级操作都经由 CLI 完成。Flatpak 相关贡献的 ABI 版本升级与所有权规则详见 docs/flatpak-backend-abi.md;libalpm 与 RLPM 双后端切换指南见 docs/native-package-backends.md。
提交前的检查清单
- ✅ 新特性在对应测试项目中补充测试
- ✅ 遵循各组件既有代码风格
- ✅ 功能变更时同步更新文档
- ✅ 使用清晰、可描述的提交信息
- ✅ 涉及 Flatpak 变更时运行
scripts/check-flatpak-separation.sh - ✅ 手动验证项可参考 MANUAL_TESTING.md 的检查清单
- ✅ 修改 PKGBUILD 后为
PKGBUILD、PKGBUILD-bin、PKGBUILD-git运行updpkgsums(见 PKGBUILD-git)
安全与社区协作
- 报告安全漏洞请遵循 SECURITY.md 的流程
- 有开发问题可提交 issue;本地构建细节参考各目录 README 与
docs/下专题文档(如 docs/isolated-builds.md、docs/shellybuild.conf.md)
💡新手建议路径:先挑一个
po/目录翻译 5 条字符串提交第一个 PR,再逐步尝试构建与测试,最终深入Shelly.PackageManager核心逻辑——这就是完整的社区贡献成长路线。
【免费下载链接】Shelly-ALPM
Pacman alternative for ArchLinux, designed with you in mind.
相关推荐
dockersh核心功能详解:10个关键配置选项让您完全掌控容器环境
dockersh核心功能详解:10个关键配置选项让您完全掌控容器环境 dockersh是一款能够将用户置于独立Docker容器中的shell工具,通过灵活的配置
运维SmartTubeLegacy社区贡献指南:如何参与项目开发与本地化
SmartTubeLegacy社区贡献指南:如何参与项目开发与本地化 SmartTubeLegacy是一款专为智能电视和机顶盒设计的YouTube客户端应用,支
如何高效使用Terax文件浏览器?模糊搜索、键盘导航与拖拽实战教程
如何高效使用Terax文件浏览器?模糊搜索、键盘导航与拖拽实战教程 Terax 是一款仅 7MB 的轻量级终端优先 AI 原生开发环境,而它的 文件浏览器 是日
开发工具AI 应用代码编辑器
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考