AppleScript无法直接控制macOS显示器色温,但可通过shell命令开关Night Shift、模拟快捷键(如⌥⌘N)、UI脚本操作设置界面,或借助快捷指令App实现更可靠自动化,所有方式均需提前在隐私设置中授权。

AppleScript 本身无法直接控制 macOS 显示器的色温(如 Night Shift 或 True Tone 的开关与色温强度),因为这些功能受系统私有 API 保护,不向 AppleScript 开放。但你可以通过间接方式实现自动化——调用系统命令、触发快捷键或操作系统偏好设置界面。
使用 shell 命令切换 Night Shift
macOS 提供了 defaults 和 touch 等命令行工具来修改 Night Shift 状态(需配合重启相关进程)。虽然不能精细调节色温滑块,但可开关 Night Shift 或设为“从日落到日出”等预设模式。
- 启用 Night Shift(暖色温):
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.displayNightShiftAgent.* AutoNightShiftEnabled -bool true - 禁用 Night Shift:
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.displayNightShiftAgent.* AutoNightShiftEnabled -bool false - 执行后需重启
displaynightshiftagent进程:killall -KILL displaynightshiftagent
模拟键盘快捷键快速切换
如果你已为 Night Shift 设置了快捷键(系统设置 > 键盘 > 快捷键 > 显示器 > “打开或关闭夜览”),AppleScript 可模拟按键触发:
查询苹果健康当日数据,分析身体状况是否适合锻炼,给出四档建议(重度/中度/轻度/建议休息)并附详细说明。使用 Python 处理数据。
- 确保快捷键已启用(例如默认是 ⌥⌘N)
- 脚本示例:
tell application "System Events" to key code 47 using {option down, command down}
(对应 ⌥⌘N;key code 47 是 N 键) - 注意:需在“系统设置 > 隐私与安全性 > 自动化”中允许该脚本控制“系统事件”
通过 UI 元素操作(有限但可控)
若需精确设置色温滑块(如拖动 Night Shift 色温强度),可借助 UI Scripting 操作“显示器”设置面板。稳定性较低,依赖界面元素层级和本地化语言,仅建议用于固定环境(如英文系统):
- 打开“系统设置 > 显示器 > Night Shift”
- 用 AppleScript 定位并点击/拖动滑块(需逐级遍历 AXSlider 元素)
- 示例片段(简化版,实际需更多容错):
tell application "System Settings"<br> activate<br>end tell<br>tell application "System Events"<br> tell process "System Settings"<br> click button "Display" of group 1 of scroll area 1 of window "System Settings"<br> delay 0.5<br> click row 1 of table 1 of scroll area 1 of group 1 of window "Display"<br> -- 后续定位 slider 并 set value...<br> end tell<br>end tell
更可靠替代方案:Shortcuts + AppleScript 混合
macOS 的“快捷指令”App 支持“设置夜览”动作(含开启/关闭/设定时间范围),且能接收 AppleScript 调用:
- 在“快捷指令”中新建一个快捷指令,添加“设置夜览”动作(选择“开启”或“自定义色温”)
- 保存为“NightShiftOn”等名称
- AppleScript 中运行:
do shell script "shortcuts run 'NightShiftOn'" - 此方式无需权限弹窗,兼容性更好,推荐日常使用
不复杂但容易忽略:所有涉及系统设置的操作,首次运行前务必在“系统设置 > 隐私与安全性 > 自动化”中授权对应脚本或应用访问权限。

















