Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 526
lwuun Avatar asked Mar 20 '15 11:03

lwuun


3 Answers

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
like image 148
Montaldo Avatar answered Nov 12 '22 18:11

Montaldo


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()
like image 36
Mike Miklin Avatar answered Nov 12 '22 19:11

Mike Miklin


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
like image 1
Sen Wang Avatar answered Nov 12 '22 20:11

Sen Wang