使用键盘快捷键创建新空间


10

我知道您可以通过单击“任务控制”来执行此操作,并且“键盘”中没有可用的快捷方式。

是否有任何方法可以通过使用第三方程序或Applescript来做到这一点?

在此处输入图片说明

在此处输入图片说明


对我的工作流程很有帮助的问题。我也想知道你的桌面背景!
Qcom

1
高兴你喜欢的问题:)这里是壁纸的链接somethingpeach.com/wp-content/uploads/2014/06/...
乔纳森·德威特

Answers:


1

更新:此方法至少在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)


谢谢,这很好。您认为可以制作第二个删除空格的脚本吗?
乔纳森·德·湿

@Jonathan,从程序上来说,添加桌面有点费劲,因为可以单击带有“添加桌面”的AXDescription的AXButton,但是在带有AXTitle的Mission Control下可以单击AXButton,例如“ “桌面2”,尽管它有一个闭合元素(按钮左上角的斧头圆),但是它的寻址方式与没有“移除桌面”按钮的方式相同。因此,我真的不知道以编程方式删除一个简单的方法,抱歉。
user3439894 '16

这就说得通了。感谢您抽出宝贵的时间来向我解释
乔纳森·德威特

我已经在macOS(10.12.1)中进行了尝试,但没有任何运气。它会在0.5秒内打开任务控制,但未按下“新建桌面”按钮。
domi91c

2
@ user3439894是的,我只是发表评论,以防有人对MacOS有答案。我没有考虑过创建一个单独的问题。我是不是该?谢谢,谢谢您的帮助。
domi91c

2

好的,使用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

已检查的答案对我不起作用,但是这个答案对=)
Brian Schermerhorn

1

是的,那是可行的。问题是,如果尚未将活动应用程序(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的“系统偏好设置”>“键盘”>“快捷方式”>“服务”>“常规”中添加键盘快捷方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.