'Automator + Applescript how to: new Desktop (open Calendar and Reminders in it)
The title is what I'm trying to achieve.
In Automator, I've tried to simply record the actions of opening a new desktop, and then opening the apps in it -- but I get the
The action 'Watch Me Do' encountered an error. Check the actionʼs properties and try running the workflow again
Furthermore, if I do it in this way, the action that is recorded is "Click the Desktop 4 button".
Similarly, I googled and found Applescripts that create specific Desktops (e.g. Desktop 3) but I always have a different amount of Desktops open. So I want the Workflow to simply make a new Desktop regardless of the amount I have open already. Moreover, many of the Applescripts I do find are geared towards Mavericks which still had Spaces and I've got Yosemite.
I can figure out how to make the script open Calendar and Reminders, so the main issue is how to have it open or create a new Desktop.
Solution 1:[1]
Took a while but I came up with this. Works on Mavericks.
on run {input, parameters}
my openNewSpace()
my launchApplication("Reminders")
my launchApplication("Calendar")
end run
on openNewSpace()
tell application "System Events"
--mission control starten
do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
tell process "Dock"
set countSpaces to count buttons of list 1 of group 1
--new space
click button 1 of group 1
--switch to new space
repeat until (count buttons of list 1 of group 1) = (countSpaces + 1)
end repeat
click button (countSpaces + 1) of list 1 of group 1
end tell
end tell
end openNewSpace
on launchApplication(app_name)
tell application app_name
launch
end tell
end launchApplication
Solution 2:[2]
Works fine on macOS Mojave (10.14.3)
AppleScript:
tell application "System Events"
tell application "Mission Control" to launch
tell group 2 of group 1 of group 1 of process "Dock"
click (every button whose value of attribute "AXDescription" is "add desktop")
tell list 1
set countSpaces to count of buttons
delay 0.5
click button (countSpaces)
end tell
end tell
delay 0.5
tell application "Calendar" to launch
tell application "Reminders" to launch
end tell
JXA:
Application("Mission Control").launch()
var proc = Application("System Events").processes['Dock']
var group = proc.groups[0].groups[0].groups[1]
var bs = group.buttons.whose({ description: "add desktop"})
Application("System Events").click(bs[0])
delay(0.5)
var li = group.lists[0]
Application("System Events").click(li.buttons[li.buttons.length - 1])
delay(0.5)
Application("Calendar").activate()
Application("Reminders").activate()
Solution 3:[3]
This works on my macOS Mojave 10.14.4
If you using other languages you need to replace "add desktop" to your system language.
AppleScript?
tell application "System Events"
tell application "Mission Control" to launch
tell group 2 of group 1 of group 1 of process "Dock"
click (every button whose value of attribute "AXDescription" is "????")
tell list 1
set countSpaces to count of buttons
delay 0.5
click button (countSpaces)
end tell
end tell
Solution 4:[4]
macOS Monterey 12:
tell application "System Events"
--mission control starten
tell application "Mission Control" to launch
delay 0.25
tell process "Dock"
set countSpaces to count buttons of list 1 of group 2 of group 1 of group 1
--new space
click button 1 of group 2 of group 1 of group 1
--switch to new space
repeat until (count buttons of list 1 of group 2 of group 1 of group 1) = (countSpaces + 1)
end repeat
click button (countSpaces + 1) of list 1 of group 2 of group 1 of group 1
end tell
delay 0.25
tell application "Calendar" to launch
tell application "Reminders" to launch
end tell
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Montaldo |
| Solution 2 | |
| Solution 3 | Artemis |
| Solution 4 | iHTCboy |
