Automator工作流实现QuickShade.app运行状态切换求助
解决Automator+AppleScript实现QuickShade状态切换的问题
完整可运行脚本
以下是满足需求的完整AppleScript代码,包含对话框交互、可靠的应用状态检测与切换逻辑:
on run {input, parameters} -- 弹出包含Cancel/Toggle选项的对话框 set dialogResult to display dialog "Toggle QuickShade" buttons {"Cancel", "Toggle"} default button "Toggle" -- 仅在用户点击Toggle时执行后续操作 if button returned of dialogResult is "Toggle" then set appName to "QuickShade" -- 检测应用是否正在运行 tell application "System Events" set isRunning to exists process appName end tell if isRunning then -- 退出运行中的应用 tell application appName to quit -- 短延迟确保进程完全退出,避免状态检测混乱 delay 1 else -- 启动未运行的应用 tell application appName to activate end if end if return input end run
针对你之前问题的修复说明
- 缺失对话框逻辑:你之前的脚本未实现需求中的Cancel/Toggle弹窗,上述代码通过
display dialog补全了该交互,且仅响应用户的Toggle操作。 - 应用状态检测问题:
- 替换了你之前繁琐的计数检测方式,改用
exists process appName更简洁可靠; - 你之前的脚本未将
<app name>替换为实际的"QuickShade",这是无法识别目标应用的核心原因。
- 替换了你之前繁琐的计数检测方式,改用
- input/parameters参数说明:这是Automator工作流的标准入口参数,
input接收工作流上一步的传递数据,parameters是脚本的自定义配置参数,此场景下无需使用,保留即可不影响执行。 - 避免重复切换崩溃:添加
delay 1确保应用完全退出后再结束脚本,避免短时间重复触发导致的状态检测错误。
Automator工作流配置步骤
- 打开Automator,新建快速操作(Quick Action);
- 在左侧资源库中拖入运行AppleScript组件,替换为上述脚本;
- 顶部设置:「工作流收到」选择「没有输入」,「位于」选择「Touch Bar」;
- 保存工作流(如命名为“Toggle QuickShade”),即可在Touch Bar中看到对应按钮。
权限注意事项
- 前往系统设置 > 隐私与安全性 > 辅助功能,勾选Automator及Script Editor(若用脚本编辑器测试);
- 若仍无法控制QuickShade,检查系统设置 > 隐私与安全性 > 输入监控,同样勾选相关应用。
内容的提问来源于stack exchange,提问作者Alexander-Marckus Edwards
相关产品推荐
相关产品推荐

