Seit macOS Monterey können Apple Kurzbefehle auch auf dem Mac ausgeführt werden. Allerdings sind die Möglichkeiten, diese Kurzbefehle unter macOS automatisch auszulösen, noch eingeschränkt. Man kann sie lediglich manuell ausführen, sei es direkt in der Kurzbefehle App, im Dienste-Menü oder in der Menüleiste. Was wirklich fehlt, ist die Möglichkeit, einen Kurzbefehl basierend auf einer Aktion oder einem Event automatisch zu starten. Unter iOS gibt es eine Liste von verschiedenen Events, wie etwa das Einbuchen in ein bestimmtes WLAN, der Wechsel in den Fokus-Modus oder das Erreichen einer speziellen Geolocation. Das ist es, was Automatisierung ausmacht – dass aufgrund eines gewissen Zustands ein Workflow abläuft.
Der einzige Event, der auf dem Mac einen Workflow triggern kann, sind die „Ordner-Actions”. Das bedeutet, dass ein Workflow bei einer Änderung in einem Ordner gestartet wird. Im Automator können außerdem Kalender-Events definiert werden, was ich aber noch nicht ausprobiert habe.
Eine zweite Möglichkeit zur Automatisierung sind zeitliche Trigger, die ich in meinem Artikel Periodische Ausführung von Apple Kurzbefehlen mit launchd beschrieben habe. macOS bietet dafür den Systemdienst Launchd an. Damit kann ein Skript oder Kurzbefehl periodisch zu einem bestimmten Zeitpunkt gestartet werden – sei es jede Minute oder einmal am Tag um Mitternacht.
Als ich nach einer Möglichkeit suchte, einen Kurzbefehl parallel zum Start eines bestimmten Programms auszuführen, stieß ich auf das Tool Shortery, das genau diese Funktionalität bietet. Shortery kann im Mac App Store heruntergeladen werden und bietet einige Trigger ohne In-App-Käufe:
- Beim Starten, Beenden, Aktivieren und Deaktivieren einer Anwendung
- Beim Login & Logout
- Beim Wakeup & Sleep
Für 9,99 € im Jahr werden dann auch zusätzliche Trigger freigeschaltet:
- Beim Wechsel vom Dunkel- in den Hell-Modus.
- Beim Starten, Stoppen und Aufnehmen von Audio.
- Wenn ein Termin im Kalender startet oder endet.
- Wenn die Kamera an- oder ausgeschaltet wird.
- Wenn ein USB- oder Bluetooth-Gerät an- oder abgemeldet wird.
- Wenn der Fokus-Modus aktiviert wird.
- Wenn sich der Inhalt in einem Ordner ändert.
- Wenn eine Taste auf der Tastatur gedrückt wird.
- Wenn ein Monitor angeschlossen oder getrennt wird.
- Bei Sonnenauf- oder untergang.
- Periodisch.
- Wenn sich die Wi-Fi-Verbindung ändert.
Außerdem bietet das Tool eine kleine Liste von Kurzbefehl-Aktionen an:
Installation
Da Shortery über den App Store heruntergeladen wird, ist die Installation mit einem Klick auf den „Kaufen“-Button schnell erledigt.
Obwohl die App laut Impressum in Deutschland entwickelt wird, ist die Benutzeroberfläche nur in Englisch verfügbar.
Der Fensteraufbau ist einfach: Auf der linken Seite befindet sich ein Listenpanel, in dem alle definierten Trigger aufgeführt sind. In der Titelleiste kann rechts zwischen der Einstellungs- und der Trigger-Ansicht gewechselt werden, die dann im rechten Bereich angezeigt wird.
Einstellungen
Folgende Optionen können in den Settings eingestellt werden:
- Start at Login: Wenn man Shortery ernsthaft verwenden möchte, sollte diese Option aktiviert sein, da sonst der Trigger beim nächsten Start nicht ausgeführt wird.
- Show Menubar Item: Mit dieser Option kann man über den Menu-Eintrag das Einstellungsfenster öffnen. Shortery wird nicht im Dock angezeigt. Ist diese Option deaktiviert, muss Shortery im Programme-Ordner oder über Spotlight gestartet werden, um Einstellungen zu machen, auch wenn Shortery weiterhin im Hintergrund läuft.
- Prevent Sleeping: Damit Shortery im Hintergrund aktiv bleiben und auf die Ereignisse des Systems oder der Programme reagieren kann, sollte der Mac nicht schlafen. Wenn diese Option aktiviert ist, wird das Einschlafen des Macs verhindert, sodass Shortery weiterhin die Trigger auslösen kann.
Der nächste Button, der hier grau erscheint, da ich mich noch in der 7‑Tage-Testversion befinde, startet das jährliche Abo für 9,99 €, dem eine 7‑tägige kostenlose Testphase vorangestellt wird.
Im unteren Bereich finden sich noch Hinweise und Links, außerdem ein Bereich, der für ein eventuelles Debugging benötigt wird.
Ein erster Trigger
Ich befürchte, dass ich dazu tendiere, die Begriffe Event und Trigger synonym zu verwenden. Daher vorweg eine kleine Definition:
- Event ist ein Ereignis oder eine Änderung eines Zustands, wie z.B. das Klicken eines Buttons, das Anmelden an ein System, eine Systemwarnung, das Einloggen an einen WLAN-Router usw. Interessanterweise sind solche Aktionen meist mit zwei oder mehr Events verbunden. Ich erinnere mich an Diskussionen mit Entwicklern, ob man auf das mousedown- oder mouseup-Event eine Aktion ausführen sollte (Antwort: mouseup, aber nur, wenn die Koordinaten des Mauszeigers innerhalb des Buttons liegen).
- Trigger reagiert auf ein Event und löst dann eine oder mehrere Aktionen aus.
So wird ein Doppelklick auf ein Programmsymbol im System einen Trigger auslösen, der die Anwendung startet. Dadurch feuert die Anwendung wiederum einen Launch-Application Event. Diesen möchte ich für das folgende Beispiel abfangen, um beim Starten von Obsidian einen Kurzbefehl zu starten, der ein Backup von meiner Vault auf mein NAS erstellt. In meinem Artikel Regelmäßige Backups von Mac-Ordnern mit rsync und launchd auf ein Synology NAS erläutere ich im Detail, wie ein entsprechendes Backup-Skript aussieht und in einer App gekapselt wird, um Berechtigungsprobleme zu umgehen.
Als Trigger-Typ verwende ich in diesem Fall „Application“, denn der Trigger soll den Kurzbefehl starten, wenn Obsidian gestartet wird.
Der Name sollte sprechend sein, damit man den Trigger leicht in der Liste wiederfinden und unterscheiden kann. Im Dropdown-Menü unter Shortcuts wird der Kurzbefehl ausgewählt, in meinem Fall „Obsidian Backup“, der nur das als Anwendung gekapselte Backup-Skript (s.o.) aufruft.
Falls der Kurzbefehl nicht in der Liste erscheint, kann ein Neustart des Macs oder ein Klick auf den Button „Reload Shortcut List“ helfen.
Die Option „Enable Trigger“ spricht für sich selbst, denke ich.
Da ich den Trigger nur aktiv haben möchte, wenn ich Obsidian starte, kann die Option „Run When Mac is Locked“ deaktiviert bleiben.
Der Bereich „Input Strings“ ist interessant, wenn man einen Kurzbefehl schreiben möchte, der von unterschiedlichen Triggern verwendet werden soll. Wenn die Option „Use the app’s bundle ID…“ aktiviert ist, wird neben dem Event auch die Bundle-ID, welche die Anwendung identifiziert, an den Kurzbefehl übergeben, der dann darauf reagieren kann. Ich frage mich allerdings, warum nicht der richtige App-Name verwendet werden kann – als unbedarfter Anwender muss ich zunächst die Bundle-ID herausbekommen.
Im Dropdown-Menü wird das Programm ausgewählt, auf das der Trigger reagieren soll. Um ein Programm auszuwählen, muss dieses allerdings aktiv laufen. Es werden im Dropdown-Menü auch viele weitere aktive Prozesse und Hintergrundprozesse aufgelistet, wie z.B. jeder aktive Safari-Tab oder die bei mir im Hintergrund laufende Alfred-App. Das macht für mich im Moment eigentlich keinen Sinn und ist eher verwirrend.
Als letztes muss dann der Event angegeben werden, auf den reagiert werden soll. Für den Trigger-Typ Application sind das immer:
- Launched – wenn die Anwendung gestartet wird.
- Quit – wenn sie beendet wird.
- Activated – wenn die Anwendung wieder in den Vordergrund geholt wird, nachdem vorher eine andere Anwendung den Fokus hatte.
- Deactivated – wenn eine andere Anwendung aktiviert wird.
Damit sind alle Einstellungen getätigt, und nach dem Speichern ist der Trigger aktiv. Er wird in diesem Beispiel immer ausgelöst, wenn Obsidian gestartet wird.
Damit erscheint der Trigger auch in der Liste im linken Panel.
Hier wird dann auch der Zeitpunkt der letzten Ausführung angezeigt. Wenn sich der Mauszeiger über der Zeile befindet, werden außerdem noch drei Buttons angezeigt: von links nach rechts — den Trigger ausführen, ihn kopieren und löschen.
Ich denke, damit sind die Grundlagen von Shortery erklärt. Da ich eigentlich nur den Trigger beim Starten benötige, werde ich wahrscheinlich kein längeres Abo abschließen. Aber zumindest als kleine Anerkennung für den Entwickler, lasse ich die 7 Tage verstreichen und entrichte einmalig eine Jahresgebühr von 9,99 €.
Wie immer freue ich mich über Kritik, Lob, Ideen und alles, was ihr in den Kommentaren mitteilen möchtet.
Schreibe einen Kommentar