StayAwake 是一个轻量级 macOS 常亮工具,用来在系统闲置时保持屏幕、系统和网络连接处于可用状态。它适合需要保持 SSH、下载任务、后台任务或屏幕展示持续运行的场景。
- 通过 macOS 电源管理 assertion 保持显示器不熄屏。
- 保持系统不进入 idle sleep,让 SSH、网络连接和后台进程继续在线。
- 可选择阻止屏保启动。
- 可选择允许屏保正常启动,同时保持屏幕、系统和网络活跃。
- 手动熄屏时会暂停显示器 assertion,避免屏保把屏幕重新唤醒。
- 使用
UserDefaults保存设置。 - 通过内网 Sparkle appcast 检查、下载和安装更新。
- 提供脚本打包为独立
.app。
系统闲置超过设定阈值后,StayAwake 会周期性声明用户活动并重置 idle 计时器,从而阻止屏保启动并保持屏幕可见。
适合不希望屏幕内容被屏保遮挡的场景。
屏保会按系统设置正常启动,但 StayAwake 会持有电源管理 assertion,让显示器不熄屏、系统不 idle sleep、网络和 SSH 连接保持活跃。
适合希望屏保遮住画面,同时又要让远程连接、下载或后台任务继续运行的场景。
- macOS 13 或更新版本
- Swift 5.9 或更新版本
如果「阻止屏保」模式无法重置 idle 状态,可以在系统设置里给 StayAwake 开启辅助功能权限:
系统设置 > 隐私与安全性 > 辅助功能
构建 Swift 包:
swift build构建 release 版本:
swift build -c release通过 Swift Package Manager 运行:
swift run StayAwake在另一台内网 Mac 上首次安装:
curl -fsSL https://edwiv.byted.org/macapps/certs/install-trust.sh | bash
curl -fsSL https://edwiv.byted.org/macapps/apps/stayawake/install.sh | bash打开 StayAwake 设置页,在「软件更新」中保持「自动检查更新」和 「自动下载并安装更新」开启。
完整流程见 内网分发文档。
在项目目录生成 StayAwake.app:
./build.sh打开打包后的 app:
open StayAwake.appStayAwake/:SwiftUI 界面与电源管理逻辑。Package.swift:Swift Package 配置。build.sh:release 构建和.app打包脚本。AppIcon.icns、AppIcon.iconset/:应用图标资源。
生成的 .app、.dmg 和 .build/ 构建产物不会进入 Git 仓库。需要时在本地重新运行 ./build.sh 即可。