demiaochen/caffeinate-disablesleep

GitHub: demiaochen/caffeinate-disablesleep

一款 macOS 菜单栏应用,用图形界面替代 caffeinate 和 pmset 命令,支持定时唤醒、屏幕常亮及合盖不眠。

Stars: 7 | Forks: 0

# caffeinate & 禁用睡眠

the popover, clicked open from the menu bar

一款让您的 Mac 保持唤醒状态的 macOS 菜单栏小应用。 启动定时会话、保持屏幕常亮,或者让 Mac 在合盖状态下继续运行。它用几个简单的控件 替代了 `caffeinate` 和 `pmset disablesleep`。 ## 安装 从[发布版](../../releases)下载 DMG,或者使用 Homebrew 安装: ``` brew install --cask demiaochen/tap/caffeinate-disablesleep ``` 需要 macOS 14 或更高版本。 ## 使用应用 从菜单栏打开应用,然后选择 Mac 保持唤醒的时长。 选择时长会立即开启会话。选择 `∞` 可让其保持唤醒, 直到您手动停止。 the duration row, from 15m to 8h plus an infinity chip 在会话期间屏幕仍可能会关闭。如果您希望显示器保持常亮, 请开启**同时保持屏幕常亮**。 the Also keep screen on row, switched on 点击大月亮按钮可启动或停止所选会话。您也可以 右键点击菜单栏图标,无需打开面板即可进行切换。 the large moon button 按下 ⌘, 或点击版本号以打开设置。您可以在此处开启 **应用打开时自动开启**和**登录时打开应用**,管理合盖 权限,以及查找源码。 ## 合盖时保持 Mac 唤醒 普通的唤醒会话无法在合盖时阻止系统休眠。当 Mac 需要 在合盖状态下继续运行时,请开启**合盖时保持唤醒**。 the Stay awake with lid closed row 这是一项独立的系统设置。它会一直保持开启,直到您将其关闭或退出 应用,即使定时会话已结束也是如此。 macOS 会在您首次启用时要求输入管理员密码。该应用 会安装一条受限的 sudoers 规则,因此后续更改 无需再次输入密码。该规则仅允许开启和关闭 `disablesleep`。 您可以通过设置(⌘, 或点击版本号)中的**合盖权限**开关 移除该权限,或提前安装它。 合盖状态下运行的 Mac 可能会积聚热量。请确保其通风良好。 有关确切的权限和移除说明,请参阅 [SECURITY.md](SECURITY.md)。 ## 菜单栏图标的含义 图标即代表全部状态,无需打开面板即可读取。 | 图标 | 含义 | | --- | --- | | hollow moon | 空闲。当前没有任何程序阻止 Mac 休眠。 | | filled moon, struck through | 会话正在运行,且屏幕保持常亮。 | | hollow moon, struck through | 会话正在运行,但屏幕仍可休眠。 | | struck moon with a dot | 圆点表示定时器正在运行。 | | moon with an underline | 下划线表示合盖设置已开启。 | 斜线表示保持唤醒。实心月亮表示屏幕保持常亮,空心月亮则 表示不保持。圆点和下划线可叠加在两者之上显示。 ## 实现原理 唤醒会话使用与以下命令相同的 macOS 电源断言 (power assertions): ``` caffeinate -disu ``` 应用自身会保持这些断言。它不会启动单独的 `caffeinate` 进程。如果应用退出,macOS 会自动释放它们。 合盖选项会更改: ``` sudo pmset -a disablesleep 1 ``` 当您关闭该选项或正常退出时,它会将值恢复为 `0`。 面板底部的命令输出会显示当前等效的 命令。它也会同步在终端中所做的更改。 当面板关闭时,应用不使用任何轮询。它的空闲 CPU 占用为零, 并且是一个约 1 MB 的通用二进制文件。 ## 构建 ``` scripts/build.sh # compile + sign (set CODESIGN_IDENTITY) scripts/lint.sh # swift-format check (--fix to rewrite) scripts/release.sh # notarize + staple + DMG (set NOTARY_PROFILE) ``` macOS 14+。无需 Xcode 项目,无需依赖,只需纯 `swiftc`。 ## 许可证 [MIT](LICENSE) ## 赞助 如果这个应用帮您省下了一个终端标签页,您也可以让我保持清醒: [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/demiaochen)
标签:SwiftUI, 电源管理, 系统工具, 菜单栏应用, 防休眠