macOS 上运行的 Pelmet:菜单栏编辑器展示 Visible、Hidden 和 Always Hidden 分区及真实应用图标预览。

Pelmet:为 macOS 27 菜单栏重写而生的原生菜单栏管理工具

Pelmet 会把你暂时用不到的菜单栏图标收起来,需要时再还给你——而且用的是 macOS 27 本来就有的机制。它做了什么、怎么装、短板在哪、GPL-3.0 允许你拿代码做什么,都在这里。

要点摘要
  • Pelmet 是面向 macOS 27 的原生 GPL-3.0 菜单栏管理工具,提供 Visible / Hidden / Always Hidden 三个分区、拖拽式布局编辑器,以及可配置的悬停、点击、动画与自动隐藏行为。
  • 它直接驱动 macOS 27 自带的图标隐藏机制,而不是模仿它,所以隐藏效果看起来就是系统原生的。但该机制位于 Apple 的私有框架中,因此 Pelmet 在运行时解析,并在失败时优雅降级。
  • 可用 Homebrew 或已公证的 DMG 安装。辅助功能权限为必需,屏幕录制为可选,且没有账号、没有统计分析、没有服务器。
  • 门槛偏高(仅 macOS 27),项目也才一个月大;但它免费、代码可读,且当前版本已经在处理真实存在的菜单栏边界问题。

菜单栏已经悄悄变成储物间了。Pelmet 押的是相反的一注:只留下你真正会瞟上两眼的那几个图标,其余的收进一个折角箭头后面,等指针靠近时再原样交还。它是由个人开发者做的原生 macOS 应用,采用 GPL-3.0 许可;而且比较少见的是,它是专门为 Apple 在 macOS 27 里重写的菜单栏而写的,而不是针对现有那批菜单栏工具所面对的那一套。

仓库创建于 2026 年 8 月,此后推进得很快:当前版本是 0.2.40,日期为 2026 年 9 月 20 日。它公开表示受 Ice 启发——那是一款长期存在的开源菜单栏管理工具——但两者不共享任何代码:macOS 27 的菜单栏并不延续旧架构,所以 Pelmet 针对新架构从零重写。它唯一的第三方依赖是用于应用内更新的 Sparkle。

它能做什么

一切都建立在三个分区和一条规则上:Visible 始终留在菜单栏;Hidden 在悬停或点击后回来;Always Hidden 只在你主动要求时出现——双击或按住 Option 点击折角箭头。新图标会落入你指定的分区,之后要挪动图标,既可以在布局编辑器里拖拽,也可以在菜单栏里按住 Command 直接把图标拖过折角箭头,完全不用打开窗口。

编辑器是让这套概念变得直观的关键:它显示的是真实的应用图标预览而不是名字,支持拖拽排序,并且就是菜单栏里那三个分区的同一份呈现。它对自己碰不了的东西也很坦诚:macOS 保护的那几个项目(时钟、控制中心)在编辑器里以锁定状态画出,而不是假装能藏起来;凡是被 macOS 归为一组的项目,会得到一个说明性的标记,而不是一个根本拖不动的把手。

系统图标同样在管辖范围内:声音、电池等等和其他图标行为一致。macOS 只能成对隐藏的 Siri 与 Time Machine,则由 Pelmet 自带的替代项目提供,让两者可以独立摆放。显示行为可以细调——0.1 到 0.5 秒延迟的悬停、点击菜单栏空白处、双击唤出始终隐藏区,或者直接点折角箭头本身。动画可选 Instant、Smooth、Fade,结束方式也可以选:按设定延迟(从立即到 5 秒)自动收回,或在你点击别处的瞬间收回。

还有一些细节补全了整体。按显示器区分的策略可以让一块屏幕始终展示全部、另一块保持收起,指针所在的那块屏幕说了算。分隔符是行为像图标一样的视觉分割线,透明度可调。Pelmet 也能充当启动器:为任意应用建一个 Pelmet 图标,点击即打开,并且和其他图标一样可以隐藏——这是官方记录的做法,用于解决那些自身图标无法隐藏的应用。它还不会和任何服务器通信:没有账号、没有统计分析、没有服务器。唯一会建立的连接只是检查自身更新。

如何安装

门槛不低,而且写得很直白:需要 macOS 27(Golden Gate)及以上。请先从 GitHub Releases 下载已公证的 DMG,这是主要安装路径;Homebrew 只是可选替代方案。更早的 macOS 使用另一套菜单栏架构,不在 Pelmet 的目标范围内,因此没有兼容版本。

# Download the latest notarized DMG:
open https://github.com/fif7y/pelmet/releases

# Move Pelmet.app to /Applications, then grant Accessibility on first launch.

首次启动时它只请求一项权限:辅助功能,这是必需的,因为 Pelmet 靠它读取菜单栏项目的位置,也靠它在不全部展开的情况下点击被隐藏的项目。屏幕录制是可选且可跳过的,只服务于 Instant、Smooth 和 Fade 这三种动画风格——它们用两张菜单栏静止图叠在 macOS 自身的显示/隐藏动画之上播放。不会录制或保留任何内容;不授权的话,图标就按 macOS 原本的方式显示动画。应用经过 Apple 公证并启用了强化运行时,但有意未启用沙盒——管理菜单栏需要 App Store 沙盒所禁止的 API,所以它是一款直接下载的应用。

如何使用

日常使用几乎没有学习成本。拖进 Hidden 的图标会消失,悬停时回来;折角箭头展开始终隐藏的那一组;剩下的交给快捷键。真正值得调好的是收回规则,因为它决定了菜单栏是显得从容还是烦躁:较短的悬停延迟,加上点击别处后立即收回,是多数人最终停留的设置。

内置替代项目值得单独一提,因为它们解决的是一个真实副作用,而不是在堆功能。当隐藏生效时,macOS 会临时移除自己的一些扩展项目,因此 Pelmet 为媒体控制、AirDrop、摄像头与麦克风指示灯、倒计时器、专注模式、快速切换用户和快捷指令项目提供了替代品——这些项目能在隐藏状态下继续存在。媒体控制、Time Machine 和专注模式可设为「激活时显示」或「始终显示」,按住 Command 把它们拖出菜单栏即可关闭。

外观也在覆盖范围内:六种菜单栏图标样式(折角箭头、箭头、眼睛、圆点、网格、面板),或者干脆关掉图标,用快捷键或右键打开设置。界面提供十种语言——英语、德语、法语、西班牙语、意大利语、葡萄牙语(巴西)、日语、简体中文、韩语和俄语——跟随系统语言,或在设置里手动指定。翻译目前是机器起草的,项目明确欢迎通过仓库里的生成脚本提交修正。

截图演示

README 更偏向用图说话:一段展示收起与回归的菜单栏动画、一段把图标从 Always Hidden 拖回 Hidden 的编辑器动画,以及行为面板和通用面板的静态截图。仓库把它们和主视觉图一起放在 docs/assets 下。没有演示视频,所以在你安装之前,这些动画就是最接近真实动效的东西。

底层是怎么实现的

技术上最有意思的决定是:Pelmet 不与系统对抗。macOS 27 的菜单栏本身就能隐藏项目——这是系统「考试锁定模式」背后的机制——而 Pelmet 直接驱动这套机制。它声明一份「哪些应当保持可见」的配置,由 macOS 自己隐藏其余项目并重新排布菜单栏。这就是为什么隐藏看起来不像外挂上去的:那就是系统自身的行为,被调用了起来。

要注意的地方它没有粉饰,而是写进了文档。这个隐藏 API 位于 Apple 的私有框架 MenuBarClientCore 中。它没有文档、没有保证,所以一次 macOS 更新就可能改变或移除它。Pelmet 在运行时解析它,并优雅降级:万一该 API 消失,应用会报告「隐藏不可用」,而不是把你的菜单栏弄坏。其余部分——项目位置、点击、预览——走的是公开 API:辅助功能和 ScreenCaptureKit。

驱动私有 API 带来两个后果,而且两个都对用户有利。应用不需要辅助进程,也不需要 Dock 图标,所以不会有多余的东西常驻。其次,失败的表现形式是「某项功能停止工作」,而不是「整个系统停止工作」——对于一个常驻在你无法绕开的那一条屏幕区域的工具来说,这是正确的取舍。

代码是怎么组织的

引擎被拆成两个本地 Swift 包,而不是一个 target:PelmetCore 承载分区模型和收回状态机,PelmetEngine 负责菜单栏收敛。两者各带一套测试,可以单独运行——对于必须跨 macOS 版本存活下来的逻辑来说,这是合理的形态。

git clone https://github.com/fif7y/pelmet.git
cd pelmet
xcodegen
xcodebuild -project Pelmet.xcodeproj -scheme Pelmet -configuration Release build

swift test --package-path Packages/PelmetCore
swift test --package-path Packages/PelmetEngine

本地化的规则不常见但合理:Pelmet/Resources/Localizable.xcstrings 里的 UI 字符串由 scripts/gen-xcstrings.py 中的翻译表生成,作者的指示是「改脚本、重新运行、两个文件一起提交」。英文 key 必须与代码里的字面量完全一致。这比在编辑器里直接改字符串更刻板,换来的是十种语言的翻译集中在一处、便于审阅,而不会在多个文件之间各自漂移。从源码构建需要带 macOS 27 SDK 的 Xcode 以及 xcodegen。

短板在哪

先说门槛,因为它比同类工具都高:只支持 macOS 27。所有停留在 macOS 26 或更早版本的 Mac 都被排除在外,对还在落后一两个版本的系统上工作的人来说,这是硬性障碍而不是轻微不便。这一点没有被藏着——它就是 README 里的第一个徽章——但这确实意味着 Pelmet 还不是一个可以推荐给整个团队的工具。

第二个顾虑是私有 API。失败路径被设计得尽量温和,但如果 Apple 改动了 MenuBarClientCore,隐藏功能就会直接失效,而且没有官方支持的退路。这是产品层面的结构性风险,而不是一个会被修掉的 bug;在你把它变成日常习惯之前,这一点值得知道。

然后是些更小的缺口。翻译是机器起草的。项目还很年轻——2026 年 8 月创建,仍处在 0.2.x——当前版本的更新日志是一串正在被修掉的菜单栏边界情况,包括:被 macOS 收进自己那个溢出折角后面的图标、属于系统代理而非应用本身的图标,以及摄像头与麦克风指示灯在下次展开时会自己挪回原位。这些是该修的东西,同时也说明这个应用还处在什么阶段。

许可:你能做什么

Pelmet 采用 GNU 通用公共许可证第 3 版,© 2026 Gabriel Faucon。GPL-3.0 和大多数 Mac 工具采用的那种宽松许可正好相反:它是强著佐权许可,而「互惠」不是附加条件,而是它的全部要点。

你能做的事其实很宽。为任何目的运行它,包括在工作里用;阅读并研究源码;私下修改而不发布任何东西;再分发它——无论是否修改过——只要整体仍然保持在 GPL-3.0 之下。你还可以就副本和支持服务收费。你不能做的是把分发出去的衍生版本变成闭源产品:一旦你分发某个分支,就必须以同样的许可附带完整源代码,保留原有声明,并注明修改内容。

对 Mac 用户来说,实际含义很简单:安装 Pelmet 不花钱,并且赋予你和任何 GPL 程序一样的自由,因为你运行的那份副本属于你。对开发者来说,实际含义是:这不是一个可以搬进专有应用的代码库——你分发的分支必须是开源的。唯一一个依赖 Sparkle 采用类 MIT 许可,因此那部分可以和任何东西兼容。这些都不授予 Apple 的商标:Pelmet 是独立项目,与 Apple 无隶属关系,也未获 Apple 认可。

值不值得装

如果你在用 macOS 27,而菜单栏已经悄悄塞满,那答案是明确的「值得」。它免费、没有账号、没有统计分析;隐藏用的是系统自身的机制而不是聪明的模仿;而且它是 GPL-3.0,代码随你读。如果你还在 macOS 26 或更早版本,答案会自己浮出来。如果你希望菜单栏管理工具是一个已经定型的稳定平台,那就再等几个版本——这个项目才一个月大,还在收拾那些有意思的边界情况。

项目概况

许可证
GPL-3.0
平台
macOS 27(Golden Gate)及以上
开发语言
Swift(SwiftUI + AppKit)
查看版本
v0.2.40(2026-09-20)

安装

# Download the latest notarized DMG:
open https://github.com/fif7y/pelmet/releases

# Move Pelmet.app to /Applications, then grant Accessibility on first launch.

许可说明

GPL-3.0 是强著佐权(copyleft)许可。你可以为任何目的运行 Pelmet,可以研读、修改、再分发甚至出售它;但你分发的任何衍生版本都必须继续采用 GPL-3.0,并附带完整源代码、保留原有声明、注明修改内容。它不提供任何担保,也不授予商标使用权。