高级
MacBook 合盖休眠终端方案
这页记录的是一个基于终端的高级方案,用来在 Mac App Store 版 Rouse 之外手动处理 MacBook 合盖休眠。
这是一个终端层面的方案,不是 macOS 官方支持的 API,也不是 Mac App Store 版 Rouse 的功能。它会修改系统级电源设置,并且需要管理员权限。具体表现可能因 Mac 机型和 macOS 版本而不同。
Mac App Store 版不能把它做成功能,因为这条路线依赖管理员权限下的 pmset 系统电源修改,超出了商店版应用的正常沙盒边界。
快捷命令
把下面这段 function 加到你的 ~/.zshrc 或其他 shell 配置里:
rouse() {
case "$1" in
on)
sudo pmset -a disablesleep 1
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
off)
sudo pmset -a disablesleep 0
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
status)
pmset -g | awk '/^[[:space:]]*SleepDisabled[[:space:]]/ { print "SleepDisabled =", $2 }'
;;
*)
echo "usage: rouse {on|off|status}"
return 1
;;
esac
}
重新加载 shell 之后,就可以用 rouse on、rouse off 和 rouse status。
它实际做了什么
rouse on会执行sudo pmset -a disablesleep 1。rouse off会用sudo pmset -a disablesleep 0恢复正常睡眠。rouse status会用更易读的格式打印当前的SleepDisabled状态。- 这里主要针对的是 MacBook 的合盖休眠,不是泛用的桌面版睡眠开关。
因为 disablesleep=1 会同时阻止空闲睡眠和合盖睡眠,所以 Mac 在桌面闲置时也会保持唤醒。用完后请尽快执行 rouse off。
边界
- 这是高级终端方案,不是正式产品功能。
- 它影响的是整个系统的睡眠行为,不只是合盖睡眠。
- 它和 Mac App Store 版 Rouse 是分开的。
- Mac App Store 版不能把这条路径作为受支持功能内置进去。
- 该设置重启后仍保留。如果忘了执行
rouse off,你的 Mac 在重启后仍会持续跳过空闲睡眠。 - 用完之后,最好尽快执行
rouse off。
如何移除
- 如果当前仍显示
SleepDisabled = 1,先执行rouse off;如果你已经删掉了 function,也可以直接运行sudo pmset -a disablesleep 0。 - 从
~/.zshrc或你使用的 shell 配置里删掉rouse(),然后重新加载 shell。
关于本页
Mac App Store 版 Rouse 专注在 App Sandbox 允许的范围内。本页面为熟悉系统电源设置修改的进阶用户提供终端层面的方案说明。本页的 rouse shell function 只是放在你 shell profile 里的独立 helper,不是 Mac App Store 版 Rouse 的命令行接口。