Verwenden von Applescript zum Erstellen von Bereichen und Starten von Apps

Das Endziel dessen, was ich vorhabe, ist also Folgendes:

Wenn ich bei der Arbeit bin, verwende ich einen externen Monitor mit meinem MBP. Ich habe einen konsistenten Satz von Bereichen und Apps, die ich jeden Tag einrichte. Ich möchte ein Applescript oder eine Kombination aus Applescript und Automator-Anwendung erstellen, die nach dem Start die erforderliche Anzahl von Bereichen auf jedem Monitor erstellt und dann die entsprechenden Apps in jedem Bereich öffnet.

Ich weiß nicht, ob dies am besten vollständig in Applescript oder wie gesagt mit einer Kombination aus Applescript zum Erstellen der Leerzeichen und dem Automator zum Öffnen der meisten Anwendungen und Browserfenster, die ich verwende, erreicht wird.

keine Antwort, aber es gibt eine Fülle von Applescript/Spaces-Routinen unter macscripter.net/viewtopic.php?id=23453
@Tetsujin, IIRC Diese Skripte funktionieren seit OS X 10.8 nicht mehr. FWIW Spaces und / oder Mission Control sind nicht wirklich skriptfreundlich, es ist ein echter Hit oder Miss, je nachdem, was man versucht zu tun.

Antworten (2)

So fügen Sie jedem Monitor/Display einen Desktop Space hinzu:

do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/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
do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control 1"

Man kann den Code ändern, um weitere Desktops hinzuzufügen.

So wechseln Sie zu einer bestimmten Desktop-/Vollbild-App in einer Dual-Display-Einstellung, z. B. Desktop 3:

do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
delay 0.5
try
    tell application "System Events" to click (first button whose value of attribute "AXDescription" is "exit to Desktop 3") of list 1 of group 1 of process "Dock"
on error
    tell application "System Events" to click (first button whose value of attribute "AXDescription" is "exit to Desktop 3") of list 2 of group 1 of process "Dock"

end try

Es gibt Diskussionen darüber, eine App mit Skript in den Vollbildmodus zu versetzen.

Klicken Sie in Big Sur im UI-Element „Leertaste“ auf die Schaltfläche „Desktop hinzufügen“ (nicht sicher, wann sich dies geändert hat).

Führen Sie das Shell-Skript "open -a 'Mission Control'" aus
Verzögerung 0,5
Sagen Sie der Anwendung "Systemereignisse" ¬
    klicken (jede Schaltfläche, deren Wert des Attributs „AXDescription“ „Desktop hinzufügen“ ist) ¬
        des UI-Elements „Leertaste“ des UI-Elements 1 der Gruppe 1 des Prozesses „Dock“
Verzögerung 0,5
Führen Sie das Shell-Skript "open -a 'Mission Control'" aus
Jetzt möchte ich ein Leerzeichen löschen. Ich habe n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript und apple.stackexchange.com/questions/40436/… durchgelesen . Ich bin zuversichtlich, dass ich dies in Kombination mit dem, was Sie mir beigebracht haben, verwenden kann, um herauszufinden, wie man auf die Schaltfläche „X“ für den Bereich klickt, in dem ich mich gerade befinde. Ich werde diese Antwort ergänzen, wenn ich herausfinde, wie es geht TU das. Ich muss die Beschreibung anstelle der Gruppennummer verwenden, um dies zu erreichen. Ich kann noch nicht herausfinden, wie man an Eigennamen kommt.
Dies sollte wahrscheinlich in den Chat verschoben werden ... aber ich versuche, das zu verwenden, was ich gelernt habe, um den UI-Elementbaum zu durchqueren, und habe keinen Erfolg. Syntax error: Can’t get "exit to Desktop 3" of UI element 1 of UI element "Spaces Bar" of UI element 1 of group 1. Access not allowed.... Ich bin mir ziemlich sicher, dass ich hier richtig bin. Ich bin eine Ebene tiefer in der Accessibility Inspector, und ich habe eine Menge verschiedener Dinge ausprobiert. Gut möglich, dass ich das Richtige noch nicht ausprobiert habe, auch möglich, dass die Aussage "Zugriff nicht erlaubt" bedeutet, was sie sagt. Werde es weiter versuchen, bevor ich um weitere Hilfe bitte.
Dies ist nur eine ästhetische Sache, aber Sie können "Shell-Skript ausführen" mit dem AppleScript-nativeren tell application "Mission Control" to launch. Ich denke , damit können Sie das auch delayzuverlässig eliminieren, da Ihr Skript die Kontrolle nicht zurückerhält, bis auf das Ereignis reagiert wurde, während das Shell-Skript sofort zurückkehrt.