如何在Mac上创建新工作区时运行脚本?

时间:2018-03-14 03:01:57

标签: macos applescript hammerspoon

我想在自动创建工作区时为我的工作区添加便利贴,但我不知道创建新空间时的事件是什么?

我可以使用AppleScript或Hammerspoon吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,没有原生键盘快捷键可以创建新的桌面 Mission Control Stickies 都没有 AppleScript字典,并且他们的流程has scripting terminology 属性已设置到false。因此, UI Scripting 解决方案虽然可能不太有利,但我只知道使用 vanilla AppleScript

以下 macOS High Sierra 键盘快捷键 macOS 默认值下进行了测试公开任务控制,这是控制箭头 ^↑)。此设置位于:

系统偏好设置> 键盘> 快捷方式> 任务控制> [√]任务控制 ^↑

以下示例 AppleScript 代码假设前述设置为true且已启用:

创建一个新桌面并将焦点设置为:

tell application "System Events"
    key code 126 using control down -- # Control-Up Arrow 
    delay 0.25
    tell group 2 of group 1 of group 1 of application process "Dock"
        click (every UI element whose description is "add desktop")
        delay 0.25
        click last UI element of list 1
    end tell
end tell
  • 请注意,可能需要针对您的系统和/或其他delay 命令调整delay 命令 可能需要也可能不需要。根据需要调整和/或添加/删除delay 命令

这很容易。 Stickies的问题在于,使用它创建的注释无法固定到特定的桌面,因此您可以在新桌面上以编程方式创建新注释,但它不会留在那里,下次打开Stickies时,所有注释将在活动桌面上打开Stickies。那么,在新创建的桌面上创建新笔记真的有什么意义吗?我的直言不说!

也就是说,以下示例 AppleScript 代码会完成这些步骤并且仅包括在内,因为它是您问题的一部分,但是在我看来,这是不切实际的,是徒劳的。

创建一个新桌面,将焦点设置到它,并创建一个新的Stickies笔记:

if running of application "Stickies" then
    tell application "Stickies" to quit
    delay 0.5
end if
tell application "System Events"
    key code 126 using control down -- # Control-Up Arrow 
    delay 0.25
    tell group 2 of group 1 of group 1 of application process "Dock"
        click (every UI element whose description is "add desktop")
        delay 0.25
        click last UI element of list 1
    end tell
    tell application "Stickies" to activate
    delay 1
    keystroke "n" using command down
    delay 0.25
    keystroke "This is a new Stickies note on a new Desktop."
end tell 
  • 请注意,可能需要针对您的系统和/或其他delay 命令调整delay 命令 可能需要也可能不需要。根据需要调整和/或添加/删除delay 命令

注意: 示例 AppleScript 代码就是这样,并且不使用任何错误处理并且仅用于显示完成任务的多种方式之一。用户有责任根据需要添加/使用适当的错误处理。请注意,使用<{1>} 命令作为错误处理程序非常方便 UI脚本