AppleScript 无法直接控制显示器睡眠,但可通过 do shell script 调用 pmset displaysleepnow 命令立即关闭显示器,兼容 macOS Monterey 及更新版本;需处理权限提示并添加完整磁盘访问授权。

AppleScript 本身无法直接控制显示器进入睡眠(因为 macOS 系统级电源管理不向 AppleScript 暴露该接口),但可以通过调用系统命令 pmset 或触发屏幕关闭行为来间接实现。最可靠、无需额外工具的方式是使用 shell 命令配合 AppleScript 封装。
使用 pmset 命令立即关闭显示器
pmset 是 macOS 内置的电源管理工具,支持手动触发显示器睡眠(即关闭屏幕,但 Mac 保持运行)。AppleScript 可通过 do shell script 调用:
- 执行
pmset displaysleepnow会立即让显示器进入睡眠(黑屏),不影响系统其他状态 - 需确保当前用户有执行权限(通常默认允许)
- 注意:该命令在 macOS Monterey(12.0)及更新版本中稳定可用;早期版本(如 Catalina)可能需启用完整磁盘访问权限
替代方案:模拟“节能器”快捷键(适合无终端权限场景)
若因权限限制无法运行 pmset,可模拟按下 Control + Shift + Eject(旧款带光驱 Mac)或 Control + Shift + Power(带 Touch ID 的 MacBook)——但此组合键在较新 macOS 中已被弃用。更通用的做法是:
- 使用 AppleScript 激活「节能器」偏好设置并触发「立即睡眠」(仅限屏幕)
- 实际更稳妥的是调用
caffeinate -u -t 1配合延迟关闭,但不推荐用于即时操作 - 真正可行的模拟方式是借助
osascript -e 'tell application "System Events" to key code 144'(对应 F14 键,部分机型映射为显示器关闭),但兼容性差,不建议主用
完整可运行脚本示例
以下 AppleScript 可直接保存为 .scpt 文件,双击运行即可关闭显示器:
try
do shell script "pmset displaysleepnow"
on error errMsg
display alert "执行失败:" & errMsg buttons {"好"} default button "好"
end try
- 脚本包含基础错误捕获,便于排查权限或命令不可用问题
- 首次运行若弹出隐私提示(“Terminal 想控制此电脑”),需前往「系统设置 > 隐私与安全性 > 完整磁盘访问」中添加 Script Editor 或启动该脚本的 App
- 如需恢复显示,任意按键或触控板即可唤醒(无需重启)
进阶:定时/条件触发显示器睡眠
单纯一键关闭不够?可结合自动化工具扩展:
- 用 Automator 创建“快速操作”,绑定到快捷键(如 ⌘⌥+D),方便随时触发
- 配合 launchd 编写 plist 实现定时执行(例如:30 分钟无操作后关屏),但需额外配置后台任务
- 避免使用
sleep或shutdown类命令——它们会让整机休眠,而非仅关闭显示器


















