用 keepresso CLI 从命令行让 Mac 保持唤醒
Keepresso 附带一个小巧的命令行工具,让你可以从终端、shell 脚本、Makefile 或 CI 任务里控制它,不需要伸手去点菜单栏。命令名是 keepresso,它有两种工作方式:可以和菜单栏应用通信,也可以像内置的 caffeinate 一样自己独立让 Mac 保持唤醒。
安装这个命令
如果你是用 Homebrew 安装的 Keepresso,keepresso 命令已经在你的 PATH 里了,不需要做任何事:
brew install --cask gyorgysh/keepresso/keepresso
如果你是从 DMG 安装的应用,这个工具就在应用包内部,你的 PATH 还不知道它的存在。手动链接一次:
sudo ln -s /Applications/Keepresso.app/Contents/Helpers/keepresso /usr/local/bin/keepresso
确认它已经接好:
keepresso version
控制应用
这些命令会发送给 Keepresso 应用,如果它还没运行会自动启动它。它们是菜单功能的可脚本化版本。
keepresso start # 启动一个不限时长的会话
keepresso start --for 90 # 启动一个 90 分钟的会话
keepresso start --until 18:00 # 运行到指定的时间点
keepresso stop # 结束当前会话
keepresso toggle # 开启或关闭
这样,一个长时间任务就能在开始时唤醒 Mac,结束时再让它睡眠:
keepresso start
make release
keepresso stop
读取状态
keepresso status 会告诉你当前是否有会话正在运行,它的退出码也方便在脚本里做判断分支:
0表示 Mac 正被保持唤醒1表示没有2表示应用没有运行
keepresso status && echo "awake" || echo "asleep"
加上 --json 可以得到机器可读的结果:
keepresso status --json
同样的会话状态也会被镜像写入一个文件,这样菜单栏工具、状态栏,或者小组件都可以在不启动任何东西的情况下读取它:
~/Library/Application Support/Keepresso/status.json
它包含当前状态以及 ISO 8601 格式的时间戳。
独立保持唤醒,不需要应用
有时候你根本不想牵扯到应用,只是想让这一个 shell 会话让 Mac 保持唤醒,就像 caffeinate 那样。在这种模式下,keepresso 进程本身持有电源断言,它一退出 Mac 就可以重新睡眠。
keepresso -i # 保持唤醒,直到你按下 Ctrl-C
keepresso -t 3600 # 保持唤醒指定的秒数
keepresso -w 5123 # 保持唤醒,直到进程 5123 退出
keepresso -d # 同时让显示器保持唤醒(可与上面的选项组合使用)
keepresso -u # 声明用户活动:立即唤醒显示器
最实用的用法是把保持唤醒和某个命令或 shell 的生命周期绑在一起:
keepresso -w $$ & # 只要这个 shell 还活着就保持唤醒
ffmpeg -i in.mov out.mp4 && keepresso stop
因为这些保持唤醒的行为都是真实的 macOS 电源断言,它们会出现在 pmset -g assertions 的输出中,也会出现在 Keepresso 自己的活动面板里,和其他任何让 Mac 保持唤醒的应用并列显示。
相关内容
- 通过快捷指令、Raycast 或脚本控制 Keepresso 介绍了快捷指令动作以及用于免终端自动化的
keepresso://URL scheme。 - macOS 版 caffeinate 替代品 说明了 Keepresso 和内置
caffeinate命令之间的关系。
更多「使用 Keepresso」内容