Drei Schreibtische organisieren

Adrachin:

Ich möchte gerne drei Schreibtische anlegen für verschiedene Zwecke.
-Allgemeines Browsing mit Safari, Finder und Email
-Musik creation. Fenster eine DAW und ein Safari Fenster mit einem Udemi Kurs
-Development mit einem Safari Fenster mit verschiedenen Development Tabs. Ein Fenster Visual Studio Code, ein Terminal. Alle Fenster, die ich öffne sollen automatisch dieser Schreibtisch zugeordnet werden

Alle frei Schreibtisch sollen nach dem Hochfahren des Rechner wieder auf den ihnen zugewiesenen Schreibtischen geöffnet werden in dem Zustand we sie waren als der Rechner ausgeschaltet wurde.

Wie kann ich das erreichen?

LiquidGPT:

Um drei verschiedene Schreibtische für unterschiedliche Zwecke zu erstellen und sicherzustellen, dass sie nach dem Hochfahren des Rechners im selben Zustand wie zuvor geöffnet werden, kannst du mehrere Schritte unternehmen:

  1. Schreibtische erstellen und organisieren:

    • Allgemeines Browsing: Safari, Finder und Email
    • Musik Creation: DAW (z.B. Logic Pro, Ableton Live) und Safari für den Udemy Kurs
    • Development: Safari mit verschiedenen Development Tabs, Visual Studio Code und ein Terminal
  2. Fenster automatisch zuordnen:

    • AppleScript nutzen, um Fenster automatisch den jeweiligen Schreibtischen zuzuordnen.
  3. Zustand nach Hochfahren wiederherstellen:

    • macOS sorgt normalerweise dafür, dass geöffnete Anwendungen nach dem Neustart wieder geöffnet werden. Um sicherzustellen, dass sie auf den richtigen Schreibtischen geöffnet werden, kannst du Mission Control und Spaces verwenden.

Hier ist ein Beispiel, wie du dies mit AppleScript und Automator erreichen kannst:

Schritt 1: Schreibtische erstellen und organisieren

Erstelle manuell die drei Schreibtische über Mission Control.

Schritt 2: Fenster automatisch zuordnen

Erstelle ein AppleScript, das die Anwendungen auf die richtigen Schreibtische verschiebt.

AppleScript Beispiel:

-- Fenster zu den Schreibtischen verschieben
tell application "System Events"
    -- Safari auf Schreibtisch 1
    set desktopCount to count of desktops
    if desktopCount < 3 then
        error "Du benötigst mindestens drei Schreibtische!"
    end if

    tell desktop 1 of spaces
        set safariProcess to first process whose name is "Safari"
        set frontmost of safariProcess to true
        set position of safariProcess to {100, 100}
    end tell

    -- DAW auf Schreibtisch 2
    tell desktop 2 of spaces
        set dawProcess to first process whose name is "Logic Pro" -- oder "Ableton Live" je nach DAW
        set frontmost of dawProcess to true
        set position of dawProcess to {100, 100}
        set safariProcess to first process whose name is "Safari"
        set frontmost of safariProcess to true
        set position of safariProcess to {700, 100}
    end tell

    -- VSCode und Terminal auf Schreibtisch 3
    tell desktop 3 of spaces
        set vscodeProcess to first process whose name is "Visual Studio Code"
        set frontmost of vscodeProcess to true
        set position of vscodeProcess to {100, 100}

        set terminalProcess to first process whose name is "Terminal"
        set frontmost of terminalProcess to true
        set position of terminalProcess to {700, 100}

        set safariProcess to first process whose name is "Safari"
        set frontmost of safariProcess to true
        set position of safariProcess to {1300, 100}
    end tell
end tell

Schritt 3: Automatisierung beim Hochfahren

Erstelle eine Automator-Anwendung, die dieses AppleScript beim Hochfahren ausführt.

Automator Schritt-für-Schritt:

  1. Öffne Automator und erstelle eine neue Anwendung.
  2. Füge die Aktion Shell Script ausführen hinzu.
  3. Wähle AppleScript als Shell aus und füge das oben erstellte AppleScript ein.
  4. Speichere die Anwendung z.B. als WorkspaceSetup.app.
  5. Gehe zu Systemeinstellungen > Benutzer & Gruppen > Anmeldeobjekte und füge die gespeicherte WorkspaceSetup.app hinzu.

Optional: Hotkey zum Neustarten der Fensteranordnung

Du kannst auch ein Hotkey-Tool wie BetterTouchTool verwenden, um das Skript manuell zu starten, wenn die Fenster durcheinander geraten.

Dieser Ansatz stellt sicher, dass deine Fenster beim Hochfahren automatisch auf den richtigen Schreibtischen platziert werden. Wenn du noch Fragen oder Anpassungen benötigst, lass es mich wissen!

Adrachin:

Wie ist die extension von Apple Scripts?

LiquidGPT:

Die Dateierweiterung für AppleScripts ist .scpt für kompilierte Skripte und .applescript für unkompilierte Skripte. Hier ist ein kurzer Überblick:

  1. Unkompilierte Skripte: Diese werden normalerweise in Texteditoren geschrieben und gespeichert.

    • Dateierweiterung: .applescript
  2. Kompilierte Skripte: Diese werden in Skript-Editoren wie dem AppleScript-Editor (oder Script Editor) erstellt und gespeichert. Kompilierte Skripte sind effizienter und können direkt ausgeführt werden.

    • Dateierweiterung: .scpt

Du kannst auch AppleScript in eine Automator-Anwendung einbetten, wie im vorherigen Schritt beschrieben, was zu einer .app führt.

Hier ist ein Beispiel, wie du ein AppleScript in einer .applescript-Datei speichern und dann im Skript-Editor kompilieren kannst:

Schritt-für-Schritt Anleitung:

  1. Unkompiliertes AppleScript speichern:

    • Öffne einen Texteditor (z.B. TextEdit) und schreibe dein AppleScript.
    • Speichere die Datei mit der Erweiterung .applescript, z.B. workspaceSetup.applescript.
  2. AppleScript kompilieren:

    • Öffne den Skript-Editor (oder Script Editor).
    • Lade dein .applescript-Skript, indem du Datei > Öffnen wählst.
    • Kompiliere das Skript, indem du auf den Kompilieren-Button klickst.
    • Speichere das kompilierte Skript mit der Erweiterung .scpt, z.B. workspaceSetup.scpt.
  3. Automator-Anwendung erstellen:

    • Öffne Automator und erstelle eine neue Anwendung.
    • Füge die Aktion AppleScript ausführen hinzu.
    • Lade dein kompilierte AppleScript (workspaceSetup.scpt) in das Automator-Fenster.
    • Speichere die Automator-Anwendung als WorkspaceSetup.app.

Nun kannst du diese .app-Datei in den Anmeldeobjekten deines Systems hinzufügen, um das Skript beim Hochfahren automatisch auszuführen.

Adrachin:

Gibt es in VS Code Unterstützung für apple script?

LiquidGPT:

Ja, Visual Studio Code (VS Code) unterstützt AppleScript, aber die Unterstützung ist nicht standardmäßig integriert. Du kannst jedoch Erweiterungen und Anpassungen vornehmen, um AppleScript in VS Code zu bearbeiten und auszuführen.

Hier sind die Schritte, um AppleScript in VS Code zu nutzen:

Schritt 1: VS Code Erweiterungen installieren

  1. AppleScript Language Basics: Diese Erweiterung bietet Syntax-Highlighting und grundlegende Unterstützung für AppleScript.
    • Öffne VS Code.
    • Gehe zu den Erweiterungen (Extensions) durch Klicken auf das Symbol in der linken Seitenleiste oder durch Drücken von Ctrl+Shift+X.
    • Suche nach AppleScript Language Basics und installiere die Erweiterung.

Schritt 2: AppleScript Dateien in VS Code bearbeiten

  1. Erstellen und Bearbeiten von AppleScript Dateien:
    • Erstelle eine neue Datei in VS Code und speichere sie mit der Erweiterung .applescript oder .scpt.
    • Du solltest jetzt Syntax-Highlighting für AppleScript haben.

Schritt 3: AppleScript ausführen

VS Code hat keinen integrierten Support zum Ausführen von AppleScript, aber du kannst das integrierte Terminal verwenden, um AppleScript-Dateien auszuführen.

  1. Terminal öffnen:

    • Öffne das Terminal in VS Code durch Drücken von Ctrl+` oder durch Navigieren zu Terminal > Neues Terminal.
  2. AppleScript im Terminal ausführen:

    • Navigiere im Terminal zu dem Verzeichnis, in dem deine AppleScript-Datei gespeichert ist.
    • Verwende den osascript-Befehl, um das AppleScript auszuführen. Zum Beispiel:
      osascript deineDatei.applescript

Beispiel:

AppleScript Datei (workspaceSetup.applescript):

tell application "System Events"
    -- Beispielskript zum Bewegen von Fenstern
    set safariProcess to first process whose name is "Safari"
    set frontmost of safariProcess to true
    set position of safariProcess to {100, 100}
end tell

Ausführen im Terminal:

osascript workspaceSetup.applescript

Zusammenfassung:

  1. Installiere die AppleScript Language Basics Erweiterung für Syntax-Highlighting.
  2. Bearbeite deine AppleScript-Dateien in VS Code.
  3. Verwende das integrierte Terminal in VS Code, um deine AppleScript-Dateien mit dem Befehl osascript auszuführen.

Mit diesen Schritten kannst du AppleScript effektiv in VS Code bearbeiten und ausführen.

Adrachin:

Die Auswahl ist riesig. Empfehle eine geeignete Erweiterung

LiquidGPT:

Eine geeignete Erweiterung für die Unterstützung von AppleScript in Visual Studio Code ist die AppleScript-Erweiterung. Hier sind die Schritte, wie du diese Erweiterung finden und installieren kannst:

Schritt-für-Schritt Anleitung:

  1. Erweiterungen in VS Code öffnen:

    • Öffne Visual Studio Code.
    • Klicke auf das Symbol für Erweiterungen in der linken Seitenleiste oder drücke Ctrl+Shift+X, um den Erweiterungsbereich zu öffnen.
  2. Erweiterung suchen und installieren:

    • Gib im Suchfeld AppleScript ein.
    • Suche nach der Erweiterung AppleScript von idleberg. Dies ist eine der meistgenutzten und gut bewerteten Erweiterungen für AppleScript.
  3. Erweiterung installieren:

    • Klicke auf die Schaltfläche Installieren neben der Erweiterung.

AppleScript Erweiterung:

Beispiel:

[Bild entfernt]

Nutzung:

  1. Erstellen und Bearbeiten:

    • Erstelle eine neue Datei mit der Erweiterung .applescript oder .scpt.
    • Du solltest nun Syntax-Highlighting und grundlegende Unterstützung für AppleScript in VS Code haben.
  2. AppleScript ausführen:

    • Öffne das Terminal in VS Code durch Drücken von Ctrl+` oder durch Navigieren zu Terminal > Neues Terminal.
    • Verwende den osascript-Befehl, um dein AppleScript im Terminal auszuführen, z.B.:
      osascript deinSkript.applescript

Mit der AppleScript-Erweiterung von idleberg kannst du AppleScript in Visual Studio Code effizient bearbeiten und hast eine angenehme Entwicklungsumgebung für deine Skripte.

Adrachin:

Output des oben angegebenen Scripts:

➜ ~ osascript workspaceSetup.applescript
workspaceSetup.applescript:196:241: execution error: Du benötigst mindestens drei Schreibtische! (-2700)

Es sind drei Schreibtische vorhanden.

LiquidGPT:

Der Fehler, den du siehst, deutet darauf hin, dass das AppleScript die Schreibtische nicht richtig erkennt. Manchmal kann es hilfreich sein, den Code zu verfeinern oder alternative Methoden zu verwenden, um die Schreibtische zu erkennen und die Fenster zu verschieben. Hier ist eine verfeinerte Version des Skripts, die sicherstellt, dass die Schreibtische korrekt erkannt werden:

tell application "System Events"
    -- Anzahl der Schreibtische überprüfen
    tell process "Dock"
        set desktopCount to count of buttons of list 1 of list 1 of group 1
    end tell
    if desktopCount < 3 then
        error "Du benötigst mindestens drei Schreibtische!"
    end if

    -- Safari auf Schreibtisch 1
    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"1\" using {control down}'"

    -- DAW auf Schreibtisch 2
    tell application "Logic Pro" -- oder "Ableton Live" je nach DAW
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    -- VSCode und Terminal auf Schreibtisch 3
    tell application "Visual Studio Code"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Terminal"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"
end tell

Erklärung:

Ausführen des Skripts:

  1. Speichere das Skript in einer Datei, z.B. workspaceSetup.applescript.
  2. Führe das Skript im Terminal mit osascript aus:
    osascript workspaceSetup.applescript

Dieses verfeinerte Skript sollte sicherstellen, dass die Schreibtische korrekt erkannt werden und die Fenster wie gewünscht verschoben werden.

Adrachin:

~ osascript workspaceSetup.applescript
workspaceSetup.applescript:128:175: execution error: „System Events“ hat einen Fehler erhalten: „group 1 of process “Dock”“ kann nicht gelesen werden. Ungültiger Index. (-1719)

LiquidGPT:

Der Fehler “Ungültiger Index” deutet darauf hin, dass das AppleScript Schwierigkeiten hat, die Elemente im Dock zu finden. Die Struktur des Dock-Prozesses kann je nach macOS-Version variieren. Wir können versuchen, die Schreibtische über eine andere Methode zu ermitteln und die Fenster zu verschieben.

Hier ist eine verfeinerte Version des Skripts, die die Schreibtische auf eine zuverlässigere Weise erkennt:

Verfeinertes AppleScript:

tell application "System Events"
    -- Anzahl der Schreibtische überprüfen
    set desktopCount to count of desktops of mission control
    if desktopCount < 3 then
        error "Du benötigst mindestens drei Schreibtische!"
    end if

    -- Safari auf Schreibtisch 1 verschieben
    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"1\" using {control down}'"

    -- DAW auf Schreibtisch 2 verschieben
    tell application "Logic Pro" -- oder "Ableton Live" je nach DAW
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    -- VSCode und Terminal auf Schreibtisch 3 verschieben
    tell application "Visual Studio Code"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Terminal"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"
end tell

Erklärung:

Ausführen des Skripts:

  1. Speichere das Skript in einer Datei, z.B. workspaceSetup.applescript.
  2. Führe das Skript im Terminal mit osascript aus:
    osascript workspaceSetup.applescript

Dieses Skript sollte nun zuverlässiger funktionieren und die Fenster wie gewünscht auf die entsprechenden Schreibtische verschieben.

Adrachin:

~ osascript workspaceSetup.applescript
workspaceSetup.applescript:129:136: script error: Zeilenende, etc. erwartet, aber Programmkonstante oder „considering“ gefunden. (-2741)
➜ ~

LiquidGPT:

Der Fehler “Zeilenende, etc. erwartet” deutet auf ein Syntaxproblem im Skript hin. Es scheint, dass in der Zeile oder Umgebung ein Syntaxfehler vorliegt. Hier ist eine überarbeitete Version des Skripts mit zusätzlichen Kommentaren und Korrekturen:

Überarbeitetes AppleScript:

tell application "System Events"
    -- Anzahl der Schreibtische überprüfen
    set desktopCount to count of desktops of mission control
    if desktopCount < 3 then
        error "Du benötigst mindestens drei Schreibtische!"
    end if
end tell

-- Safari auf Schreibtisch 1 verschieben
tell application "Safari"
    activate
end tell
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"1\" using {control down}'"

-- DAW auf Schreibtisch 2 verschieben
tell application "Logic Pro" -- oder "Ableton Live" je nach DAW
    activate
end tell
delay 0.5
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

tell application "Safari"
    activate
end tell
delay 0.5
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

-- VSCode und Terminal auf Schreibtisch 3 verschieben
tell application "Visual Studio Code"
    activate
end tell
delay 0.5
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

tell application "Terminal"
    activate
end tell
delay 0.5
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

tell application "Safari"
    activate
end tell
delay 0.5
do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

Erklärung:

Ausführen des Skripts:

  1. Speichere das Skript in einer Datei, z.B. workspaceSetup.applescript.
  2. Führe das Skript im Terminal mit osascript aus:
    osascript workspaceSetup.applescript

Dieses Skript sollte nun zuverlässiger funktionieren und die Fenster wie gewünscht auf die entsprechenden Schreibtische verschieben.

Adrachin:

Bitte füge einige Debug Ausgaben hinzu damit man erkennen kann wo der Fehler liegt.

LiquidGPT:

Natürlich, ich füge einige Debug-Ausgaben hinzu, damit du erkennen kannst, wo das Skript möglicherweise fehlschlägt. Hier ist die überarbeitete Version des AppleScripts mit zusätzlichen Debug-Ausgaben:

Überarbeitetes AppleScript mit Debug-Ausgaben:

-- Debug Funktion
on logMessage(message)
    do shell script "echo " & quoted form of message & " >> ~/applescript_debug.log"
end logMessage

try
    tell application "System Events"
        -- Anzahl der Schreibtische überprüfen
        set desktopCount to count of desktops of mission control
        logMessage("Anzahl der Schreibtische: " & desktopCount)
        if desktopCount < 3 then
            error "Du benötigst mindestens drei Schreibtische!"
        end if
    end tell

    -- Safari auf Schreibtisch 1 verschieben
    logMessage("Verschiebe Safari auf Schreibtisch 1")
    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"1\" using {control down}'"

    -- DAW auf Schreibtisch 2 verschieben
    logMessage("Verschiebe DAW auf Schreibtisch 2")
    tell application "Logic Pro" -- oder "Ableton Live" je nach DAW
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    -- VSCode und Terminal auf Schreibtisch 3 verschieben
    logMessage("Verschiebe VSCode und Terminal auf Schreibtisch 3")
    tell application "Visual Studio Code"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Terminal"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    logMessage("Skript erfolgreich abgeschlossen")
on error errMsg number errNum
    logMessage("Fehler: " & errMsg & " Nummer: " & errNum)
end try

Erklärung:

Ausführen des Skripts:

  1. Speichere das Skript in einer Datei, z.B. workspaceSetup.applescript.
  2. Führe das Skript im Terminal mit osascript aus:
    osascript workspaceSetup.applescript

Debug-Logdatei:

Nach dem Ausführen des Skripts kannst du die Log-Datei ~/applescript_debug.log überprüfen, um die Debug-Ausgaben zu sehen und zu verstehen, wo das Skript möglicherweise fehlschlägt. Die Datei kann mit einem beliebigen Texteditor geöffnet werden, z.B.:

cat ~/applescript_debug.log

Diese Debug-Ausgaben sollten dir helfen, den Fehler zu lokalisieren und das Skript entsprechend anzupassen.

Adrachin:

wohin wird debug.log geschrieben?

LiquidGPT:

Die Debug-Logdatei wird in das Home-Verzeichnis des aktuellen Benutzers geschrieben und heißt applescript_debug.log. Das Home-Verzeichnis ist typischerweise /Users/<dein-benutzername>/.

Hier ist die vollständige Pfadangabe zur Logdatei:

/Users/<dein-benutzername>/applescript_debug.log

Um die Debug-Logdatei zu überprüfen, kannst du die folgenden Schritte ausführen:

Schritt 1: Terminal öffnen

Schritt 2: Inhalt der Logdatei anzeigen

Schritt 3: Logdatei in einem Texteditor öffnen

Hier ist nochmal das angepasste AppleScript mit der genauen Pfadangabe zur Logdatei:

Überarbeitetes AppleScript mit Debug-Ausgaben:

-- Debug Funktion
on logMessage(message)
    do shell script "echo " & quoted form of message & " >> ~/applescript_debug.log"
end logMessage

try
    tell application "System Events"
        -- Anzahl der Schreibtische überprüfen
        set desktopCount to count of desktops of mission control
        logMessage("Anzahl der Schreibtische: " & desktopCount)
        if desktopCount < 3 then
            error "Du benötigst mindestens drei Schreibtische!"
        end if
    end tell

    -- Safari auf Schreibtisch 1 verschieben
    logMessage("Verschiebe Safari auf Schreibtisch 1")
    tell application "Safari"
        activate
    end tell
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"1\" using {control down}'"

    -- DAW auf Schreibtisch 2 verschieben
    logMessage("Verschiebe DAW auf Schreibtisch 2")
    tell application "Logic Pro" -- oder "Ableton Live" je nach DAW
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"2\" using {control down}'"

    -- VSCode und Terminal auf Schreibtisch 3 verschieben
    logMessage("Verschiebe VSCode und Terminal auf Schreibtisch 3")
    tell application "Visual Studio Code"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Terminal"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    tell application "Safari"
        activate
    end tell
    delay 0.5
    do shell script "osascript -e 'tell application \"System Events\" to keystroke \"3\" using {control down}'"

    logMessage("Skript erfolgreich abgeschlossen")
on error errMsg number errNum
    logMessage("Fehler: " & errMsg & " Nummer: " & errNum)
end try

Wenn du das Skript ausführst, wird die Logdatei applescript_debug.log im Home-Verzeichnis erstellt und enthält Debug-Informationen, die dir helfen, den Ablauf des Skripts zu verfolgen und eventuelle Fehler zu identifizieren.