跳转到内容
Wham.sh

macOS 菜单栏应用

合上盖子。 Mac 依然醒着。

只需点击菜单栏上的一个开关,就能让 Mac 真正保持唤醒,哪怕合上盖子也一样。

下载 Mac 版

免费。macOS 11 或更高版本。支持 Apple 芯片和 Intel。

试一试

菜单栏里的一个开关。

这就是整个应用。Mac 保持唤醒时是太阳,可以休眠时是月亮,切换时都会响起一小段提示音。来,点一下试试。

声音开启:这就是真正的提示音,一段由浏览器播放的 8 位琶音。

用途

为耗时任务而生。

启动任务,合上盖子,转身离开。任何你不想干等的任务,都会一直运行到完成。

原理

三个步骤,关键在第三步。

  1. 1下载并打开 Wham

    把它拖进“应用程序”文件夹并打开。它会待在菜单栏里,就在时钟旁边。

  2. 2点击开关

    太阳出现,提示音响起。第一次使用时,macOS 会要求你输入一次密码。

  3. 3合上盖子

    Mac 会继续运行:Claude Code 完成任务,导出跑到最后一帧,下载跑到 100%。

大多数防休眠应用只是请求 macOS 保持唤醒,而合上盖子后 macOS 会直接无视这个请求。所以 Wham 索性自己关掉休眠功能,任务结束后再帮你打开。

小巧

你会忘了它在运行。

Wham 只做一件事:每两秒读取一次内核标志位。开启期间,它还会关注 macOS 发出的电池、发热和盖子状态。其余时间它什么都不做,CI 还会严格把关这个资源预算。

作为参照:KeepingYouAwake 在磁盘上占用 7.6 MB,而 Amphetamine 在加上辅助应用之前,下载包就有 6.7 MB。测试机型为 MacBook Air,系统版本 macOS 26.6;详情见 docs/compatibility.md。

对比

大多数防休眠应用,一到合盖就失效。

盖子打开时让 Mac 保持唤醒很容易。一旦合上,macOS 就会无视那种礼貌的请求。以下是那些知名应用在使用电池、未接外接显示器时,如何应对合盖这件事。

App Store 应用靠自己做不到这一点,诚实的开发者也会直说:Lungo 表示“合上盖子后,它无法阻止电脑休眠,这是 Mac App Store 的限制”。 来源

FAQ

问得好。

不需要。下载并打开 Wham,一切都在菜单栏里完成:点一下让 Mac 保持唤醒,再点一下让它恢复休眠。这页底部的命令,只是留给喜欢敲命令的人。

安全。关闭休眠功能需要管理员权限:第一次点击时,macOS 会要求你输入一次密码,这样 Wham 以后就能直接切换休眠设置,不用再问。这是它唯一被允许做的事。这个应用经过开发者签名和 Apple 公证,每一行代码都在 GitHub 上公开。

可以。右键点击开关,选择“Turn On For” 1、2、4 或 8 小时:菜单会显示到期时间,之后 Mac 就会恢复正常休眠。在终端里,可以用 wham on 2h,或者在命令前加上 wham run,让 Mac 只在命令运行期间保持唤醒。

Wham 不会让它“烤熟”:一旦 macOS 判定 Mac 严重过热,Wham 就会关闭并让它休眠。不过,在合上的包里高负荷运转的笔记本无处散热,Wham 更适合用在桌面、扩展座和架子这类通风良好的地方。出门前记得关掉它,合上盖子时 Mac 就会像往常一样休眠。

Wham 本身几乎不耗电。但保持唤醒的 Mac,无论合盖与否,耗电方式都和平时一样。所以用电池供电时,电量到 10% 时 Wham 会自动放手:Mac 会带着保存好的工作内容休眠,而不是耗到关机。要跑长时间任务,记得插上电源。

和平常一样会锁。如果没有接其他显示器,合上盖子几秒后 Wham 会关闭内建屏幕,Mac 则按你的“锁定屏幕”设置锁屏。如果接了外接显示器,Wham 不会去动任何屏幕。

不需要。那些是 macOS 自己的“闭盖模式”所要求的条件,Wham 一个都不需要。哪怕是一台什么都没接的笔记本,合上盖子后依然保持唤醒。

休眠功能会恢复。无论你是从菜单退出(右键点击开关)、用脚本退出,还是注销账户,退出的同时设置就会被关闭。而如果 Wham 没有正常退出就消失了,比如崩溃或被强制退出,它的看门狗机制会在一秒内把休眠功能还回来。

从菜单退出 Wham,休眠功能会随之恢复,然后把 Wham 从“应用程序”文件夹拖进废纸篓。如果要连密码规则一起彻底清理,可以用 开发者 下面那条一行命令的卸载脚本。

App Store 应用都运行在沙盒里,沙盒应用没办法修改 Mac 的休眠设置。想做到的那些,最后也只能请求 macOS 保持唤醒,而这恰恰是合盖后就失效的做法。

安装

和下载版本一样经过签名的应用,还附带 wham 命令。再次运行即可更新。

curl -fsSL wham.sh | sh
brew install gwendall/tap/wham
npx wham.sh

想先看看?读一下 install.sh:它会下载最新版本,校验签名,放进“应用程序”文件夹并打开。

wham 命令

wham on
on: your Mac stays awake, even with the lid closed
wham on 2h
on until 4:30 PM: your Mac stays awake, even with the lid closed
wham status
on until 4:30 PM: your Mac stays awake, even with the lid closed
wham off
off: your Mac sleeps as usual
wham run make
# make 运行期间保持唤醒,结束后恢复原状

卸载

curl -fsSL wham.sh/uninstall | sh

它会退出 Wham 并恢复休眠功能,然后移除应用本身、wham 命令、相关设置,以及下面的 sudoers 规则。如果用 Homebrew:brew uninstall --zap wham。读一下 uninstall.sh。

# /private/etc/sudoers.d/wham,用户 ID 501(也就是你)
#501 ALL=(root) NOPASSWD: /usr/bin/pmset -a disablesleep 0, /usr/bin/pmset -a disablesleep 1