AppleScript无法直接控制macOS显示器色温,但可通过shell命令开关Night Shift、模拟快捷键(如⌥⌘N)、UI脚本操作设置界面,或借助快捷指令App实现更可靠自动化,所有方式均需提前在隐私设置中授权。
AppleScript 本身无法直接控制 macOS 显示器的色温(如 Night Shift 或 True Tone 的开关与色温强度),因为这些功能受系统私有 API 保护,不向 AppleScript 开放。但你可以通过间接方式实现自动化——调用系统命令、触发快捷键或操作系统偏好设置界面。
macOS 提供了 defaults 和 touch 等命令行工具来修改 Night Shift 状态(需配合重启相关进程)。虽然不能精细调节色温滑块,但可开关 Night Shift 或设为“从日落到日出”等预设模式。
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.displayNightShiftAgent.* AutoNightShiftEnabled -bool true
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.displayNightShiftAgent.* AutoNightShiftEnabled -bool false
displaynightshiftagent 进程:killall -KILL displaynightshiftagent
如果你已为 Night Shift 设置了快捷键(系统设置 > 键盘 > 快捷键 > 显示器 > “打开或关闭夜览”),AppleScript 可模拟按键触发:
tell application "System Events" to key code 47 using {option down, command down}
(对应 ⌥⌘N;key code 47 是 N 键)
若需精确设置色温滑块(如拖动 Night Shift 色温强度),可借助 UI Scripting 操作“显示器”设置面板。稳定性较低,依赖界面元素层级和本地化语言,仅建议用于固定环境(如英文系统):
tell application "System Settings"
activate
end tell
tell application "System Events"
tell process "System Settings"
click button "Display" of group 1 of scroll area 1 of window "System Settings"
delay 0.5
click row 1 of table 1 of scroll area 1 of group 1 of window "Display"
-- 后续定位 slider 并 set value...
end tell
end tell
macOS 的“快捷指令”App 支持“设置夜览”动作(含开启/关闭/设定时间范围),且能接收 AppleScript 调用:
do shell script "shortcuts run 'NightShiftOn'"
不复杂但容易忽略:所有涉及系统设置的操作,首次运行前务必在“系统设置 > 隐私与安全性 > 自动化”中授权对应脚本或应用访问权限。