Answers:
更新:此方法至少在OS X 10.11和更低版本的OS X 10.11中有效(未在比OS X 10.8更早的版本上对其进行测试),但由于Apple对Mission Control进行了重大更改,因此该方法不再按macOS 10.12中的代码工作。
要以编程方式在Mission Control中添加桌面,可以将以下代码分别用作AppleScript或BASH脚本,并与Automator Service结合使用,分别使用Run AppleScript或Run Shell Script,以及在“键盘”的“系统偏好设置”中分配给该服务的键序列捷径。
AppleScript代码:
do shell script "open -a 'Mission Control'"
delay 0.5
tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"
delay 0.5
tell application "System Events" to key code 53
BASH脚本代码:
#!/bin/bash
open -a 'Mission Control'
osascript -e 'delay 0.5' \
-e 'tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"' \
-e 'delay 0.5' \
-e 'tell application "System Events" to key code 53'
打开Automator并选择Service。
设置:服务在任何应用程序中均未收到任何输入
添加“ 运行AppleScript”或“运行Shell脚本 操作”。
为目标Action添加适当的代码。
将服务另存为,例如:添加新桌面
在“ 系统偏好设置”中为“ 服务”分配键盘快捷键。
注意:如果您选择在Service中的任何应用程序之上,则必须分配一个系统或Finder中未使用的键序列。
我用以下命令进行了测试:⌃⌥⌘D(Control-Option-Command-D)
好的,使用Automator录音,我可以在另一个答案中使用AppleScript的修订版。
将“第1组的第1组”替换为“第1组的第1组的第2组”:
on run {input, parameters}
do shell script "open -a 'Mission Control'"
delay 0.5
tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 2 of group 1 of group 1 of process "Dock"
delay 0.5
tell application "System Events" to key code 53
return input
end run
是的,那是可行的。问题是,如果尚未将活动应用程序(Finder,textedit等)添加到“安全性和隐私辅助功能”窗格中,则user3439894的解决方案最终会引发错误。
要解决此问题,我们需要两个工作流,即将user3439894的服务与更新的组列表作为Automator应用程序使用,以及另一个要启动它的Automator服务。
Automator应用程序(另存为/ News作为“新桌面”。)
在运行时{input,parameters}
做shell脚本“ open -a'Mission Control'”
延迟0.5
告诉应用程序“系统事件”单击(进程“ Dock”的组1的组1的组2的每个按钮(属性“ AXDescription”的值为“添加桌面”的每个按钮)
延迟0.5
告诉应用程序“系统事件”到键码53
返回输入
结束运行
然后,我们只需要使用“启动应用程序”操作将第二个工作流作为服务创建,并将其保存为“ New_Desktop”
最后步骤是将“ New Desktop.App”添加到“系统偏好设置”>“安全和隐私”>“辅助功能”
然后在New_Desktop.workflow的“系统偏好设置”>“键盘”>“快捷方式”>“服务”>“常规”中添加键盘快捷方式。