Automatisierung von Apple Kurzbefehlen mit Shortery

Schmuck Bild: Modernes, schwarz-weißes digitales Illustrationsdesign eines Mac Desktops. Die Darstellung zeigt fließende Linien und Zahnräder, die eine nahtlose Automatisierung symbolisieren, mit einem Fokus auf Effizienz und Technologie.

Seit macOS Monterey kön­nen Apple Kurzbefehle auch auf dem Mac aus­ge­führt wer­den. Allerdings sind die Möglichkeiten, die­se Kurzbefehle unter macOS auto­ma­tisch aus­zu­lö­sen, noch ein­ge­schränkt. Man kann sie ledig­lich manu­ell aus­füh­ren, sei es direkt in der Kurzbefehle App, im Dienste-Menü oder in der Menüleiste. Was wirk­lich fehlt, ist die Möglichkeit, einen Kurzbefehl basie­rend auf einer Aktion oder einem Event auto­ma­tisch zu star­ten. Unter iOS gibt es eine Liste von ver­schie­de­nen Events, wie etwa das Einbuchen in ein bestimm­tes WLAN, der Wechsel in den Fokus-Modus oder das Erreichen einer spe­zi­el­len Geolocation. Das ist es, was Automatisierung aus­macht – dass auf­grund eines gewis­sen Zustands ein Workflow abläuft.

Der ein­zi­ge Event, der auf dem Mac einen Workflow trig­gern kann, sind die „Ordner-Actions”. Das bedeu­tet, dass ein Workflow bei einer Änderung in einem Ordner gestar­tet wird. Im Automator kön­nen außer­dem Kalender-Events defi­niert wer­den, was ich aber noch nicht aus­pro­biert habe.

Eine zwei­te Möglichkeit zur Automatisierung sind zeit­li­che Trigger, die ich in mei­nem Artikel Periodische Ausführung von Apple Kurzbefehlen mit launchd beschrie­ben habe. macOS bie­tet dafür den Systemdienst Launchd an. Damit kann ein Skript oder Kurzbefehl peri­odisch zu einem bestimm­ten Zeitpunkt gestar­tet wer­den – sei es jede Minute oder ein­mal am Tag um Mitternacht.

Als ich nach einer Möglichkeit such­te, einen Kurzbefehl par­al­lel zum Start eines bestimm­ten Programms aus­zu­füh­ren, stieß ich auf das Tool Shortery, das genau die­se Funktionalität bie­tet. Shortery kann im Mac App Store her­un­ter­ge­la­den wer­den und bie­tet eini­ge 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 wer­den dann auch zusätz­li­che Trigger frei­ge­schal­tet:

  • Beim Wechsel vom Dunkel- in den Hell-Modus.
  • Beim Starten, Stoppen und Aufnehmen von Audio.
  • Wenn ein Termin im Kalender star­tet oder endet.
  • Wenn die Kamera an- oder aus­ge­schal­tet wird.
  • Wenn ein USB- oder Bluetooth-Gerät an- oder abge­mel­det wird.
  • Wenn der Fokus-Modus akti­viert wird.
  • Wenn sich der Inhalt in einem Ordner ändert.
  • Wenn eine Taste auf der Tastatur gedrückt wird.
  • Wenn ein Monitor ange­schlos­sen oder getrennt wird.
  • Bei Sonnenauf- oder unter­gang.
  • Periodisch.
  • Wenn sich die Wi-Fi-Verbindung ändert.

Außerdem bie­tet das Tool eine klei­ne Liste von Kurzbefehl-Aktionen an:

Zeigt die Liste der Kurzbefehl Aktionen: App Running, Dark Mode Enabled, Web Cam Active und Shortery-Fokusfilter festlegen.

Installation

Da Shortery über den App Store her­un­ter­ge­la­den wird, ist die Installation mit einem Klick auf den „Kaufen“-Button schnell erle­digt.

Obwohl die App laut Impressum in Deutschland ent­wi­ckelt wird, ist die Benutzeroberfläche nur in Englisch ver­füg­bar.

Der Fensteraufbau ist ein­fach: Auf der lin­ken Seite befin­det sich ein Listenpanel, in dem alle defi­nier­ten Trigger auf­ge­führt sind. In der Titelleiste kann rechts zwi­schen der Einstellungs- und der Trigger-Ansicht gewech­selt wer­den, die dann im rech­ten Bereich ange­zeigt wird.

Der Setting Bildschirm, wird im Text im einzelnen erklärt.

Einstellungen

Folgende Optionen kön­nen in den Settings ein­ge­stellt wer­den:

  • Start at Login: Wenn man Shortery ernst­haft ver­wen­den möch­te, soll­te die­se Option akti­viert sein, da sonst der Trigger beim nächs­ten Start nicht aus­ge­führt wird.
  • Show Menubar Item: Mit die­ser Option kann man über den Menu-Eintrag das Einstellungsfenster öff­nen. Shortery wird nicht im Dock ange­zeigt. Ist die­se Option deak­ti­viert, muss Shortery im Programme-Ordner oder über Spotlight gestar­tet wer­den, um Einstellungen zu machen, auch wenn Shortery wei­ter­hin im Hintergrund läuft.
  • Prevent Sleeping: Damit Shortery im Hintergrund aktiv blei­ben und auf die Ereignisse des Systems oder der Programme reagie­ren kann, soll­te der Mac nicht schla­fen. Wenn die­se Option akti­viert ist, wird das Einschlafen des Macs ver­hin­dert, sodass Shortery wei­ter­hin die Trigger aus­lö­sen kann.

Der nächs­te Button, der hier grau erscheint, da ich mich noch in der 7‑Tage-Testversion befin­de, star­tet das jähr­li­che Abo für 9,99 €, dem eine 7‑tägige kos­ten­lo­se Testphase vor­an­ge­stellt wird.

Im unte­ren Bereich fin­den sich noch Hinweise und Links, außer­dem ein Bereich, der für ein even­tu­el­les Debugging benö­tigt wird.

Ein erster Trigger

Ich befürch­te, dass ich dazu ten­die­re, die Begriffe Event und Trigger syn­onym zu ver­wen­den. Daher vor­weg eine klei­ne 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 sol­che Aktionen meist mit zwei oder mehr Events ver­bun­den. Ich erin­ne­re mich an Diskussionen mit Entwicklern, ob man auf das mou­se­down- oder mous­e­up-Event eine Aktion aus­füh­ren soll­te (Antwort: mous­e­up, aber nur, wenn die Koordinaten des Mauszeigers inner­halb des Buttons lie­gen).
  • Trigger reagiert auf ein Event und löst dann eine oder meh­re­re Aktionen aus.

So wird ein Doppelklick auf ein Programmsymbol im System einen Trigger aus­lö­sen, der die Anwendung star­tet. Dadurch feu­ert die Anwendung wie­der­um einen Launch-Application Event. Diesen möch­te ich für das fol­gen­de Beispiel abfan­gen, um beim Starten von Obsidian einen Kurzbefehl zu star­ten, der ein Backup von mei­ner Vault auf mein NAS erstellt. In mei­nem Artikel Regelmäßige Backups von Mac-Ordnern mit rsync und launchd auf ein Synology NAS erläu­te­re ich im Detail, wie ein ent­spre­chen­des Backup-Skript aus­sieht und in einer App gekap­selt wird, um Berechtigungsprobleme zu umge­hen.

Die Trigger-Ansicht,. wird im Detail im Text erklärt

Als Trigger-Typ ver­wen­de ich in die­sem Fall „Application“, denn der Trigger soll den Kurzbefehl star­ten, wenn Obsidian gestar­tet wird.

Der Name soll­te spre­chend sein, damit man den Trigger leicht in der Liste wie­der­fin­den und unter­schei­den kann. Im Dropdown-Menü unter Shortcuts wird der Kurzbefehl aus­ge­wählt, in mei­nem Fall „Obsidian Backup“, der nur das als Anwendung gekap­sel­te Backup-Skript (s.o.) auf­ruft.

Falls der Kurzbefehl nicht in der Liste erscheint, kann ein Neustart des Macs oder ein Klick auf den Button „Reload Shortcut List“ hel­fen.

Die Option „Enable Trigger“ spricht für sich selbst, den­ke ich.

Da ich den Trigger nur aktiv haben möch­te, wenn ich Obsidian star­te, kann die Option „Run When Mac is Locked“ deak­ti­viert blei­ben.

Der Bereich „Input Strings“ ist inter­es­sant, wenn man einen Kurzbefehl schrei­ben möch­te, der von unter­schied­li­chen Triggern ver­wen­det wer­den soll. Wenn die Option „Use the app’s bund­le ID…“ akti­viert ist, wird neben dem Event auch die Bundle-ID, wel­che die Anwendung iden­ti­fi­ziert, an den Kurzbefehl über­ge­ben, der dann dar­auf reagie­ren kann. Ich fra­ge mich aller­dings, war­um nicht der rich­ti­ge App-Name ver­wen­det wer­den kann – als unbe­darf­ter Anwender muss ich zunächst die Bundle-ID her­aus­be­kom­men.

Im Dropdown-Menü wird das Programm aus­ge­wählt, auf das der Trigger reagie­ren soll. Um ein Programm aus­zu­wäh­len, muss die­ses aller­dings aktiv lau­fen. Es wer­den im Dropdown-Menü auch vie­le wei­te­re akti­ve Prozesse und Hintergrundprozesse auf­ge­lis­tet, wie z.B. jeder akti­ve Safari-Tab oder die bei mir im Hintergrund lau­fen­de Alfred-App. Das macht für mich im Moment eigent­lich kei­nen Sinn und ist eher ver­wir­rend.

Als letz­tes muss dann der Event ange­ge­ben wer­den, auf den reagiert wer­den soll. Für den Trigger-Typ Application sind das immer:

  • Launched – wenn die Anwendung gestar­tet wird.
  • Quit – wenn sie been­det wird.
  • Activated – wenn die Anwendung wie­der in den Vordergrund geholt wird, nach­dem vor­her eine ande­re Anwendung den Fokus hat­te.
  • Deactivated – wenn eine ande­re Anwendung akti­viert wird.
Der erster Trigger, wird im Text erklärt.

Damit sind alle Einstellungen getä­tigt, und nach dem Speichern ist der Trigger aktiv. Er wird in die­sem Beispiel immer aus­ge­löst, wenn Obsidian gestar­tet wird.

Damit erscheint der Trigger auch in der Liste im lin­ken Panel.

Der Tigger in der Listansicht. Erklärung im Text.

Hier wird dann auch der Zeitpunkt der letz­ten Ausführung ange­zeigt. Wenn sich der Mauszeiger über der Zeile befin­det, wer­den außer­dem noch drei Buttons ange­zeigt: von links nach rechts — den Trigger aus­füh­ren, ihn kopie­ren und löschen.

Ich den­ke, damit sind die Grundlagen von Shortery erklärt. Da ich eigent­lich nur den Trigger beim Starten benö­ti­ge, wer­de ich wahr­schein­lich kein län­ge­res Abo abschlie­ßen. Aber zumin­dest als klei­ne Anerkennung für den Entwickler, las­se ich die 7 Tage ver­strei­chen und ent­rich­te ein­ma­lig eine Jahresgebühr von 9,99 €.

Wie immer freue ich mich über Kritik, Lob, Ideen und alles, was ihr in den Kommentaren mit­tei­len möch­tet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert