Shell-Befehle auf Obsidian-Seiten ausführen — Teil 1

Dekoration: Stable Diffusion bw-line Art eines Computer Screens mit CLI.

Auf die Möglichkeit, Shell-Befehle auf Obsidian-Seiten aus­zu­füh­ren, bin ich zum ers­ten Mal gesto­ßen, als ich auf der Suche nach einem Template war, um mit Obsidian ein Reisetagebuch zu füh­ren. In einem der gefun­de­nen Templates wur­de ein Terminalbefehl mit dem Plugin Templater auf­ge­ru­fen um des­sen Ausgabe in die Seite ein­zu­fü­gen. Diese Vorgehensweise möch­te ich hier am Beispiel des Einfügens von Wetterdaten erläu­tern. In einem wei­te­ren Blogeintrag wer­de ich dann auf eine etwas kom­ple­xe­re Methode ein­ge­hen, die noch mehr Möglichkeiten bie­tet.

Aktuelle Wetterdaten in eine Tagebuchseite einbinden

Um aktu­el­le Wetterdaten ein­bin­den zu kön­nen, wird natür­lich ein Service benö­tigt, der die­se Daten zur Verfügung stellt. Eine ein­fa­che und kos­ten­lo­se Möglichkeit ist der Dienst wttr.in, der per Curl auf­ge­ru­fen wird. Dieser Service wird in der Regel auf den Tips&Tricks-Seiten für Terminalbefehle auf­ge­führt, die man unbe­dingt aus­pro­bie­ren soll­te. Im Terminal lie­fert ein ein­fa­cher Aufruf einen detail­lier­ten Wetterbericht für den Ort, den der Dienst anhand der IP-Adresse ermit­telt hat.

Aufruf von "curl wttr.com" im Terminal. Ergebnis ist der ausführliche Wetterbericht für den aktuellen Ort.
Aufruf von „curl wttr.com” im Terminal

Für mein Beispiel brau­che ich aber kei­ne Wettervorhersage, son­dern nur ein paar aktu­el­le Wetterdaten:

Aufruf von "curl wttr.com/?format=4" im Terminal. Ergebnis ist eine Zeile mit den aktuellen Wetterdaten am aktuellen Ort.
Aufruf von „curl wttr.com/?format=4” im Terminal

Um die­sen String nun bei der Erstellung in die Tagebuchseite ein­zu­fü­gen, wird das Plugin Templater benö­tigt. Dieses muss instal­liert und akti­viert sein, außer­dem müs­sen fol­gen­de Einstellungen akti­viert wer­den:

  1. „Trigger Templater on new file crea­ti­on”
  2. „User Command Functions”
  3. Die „Shell bina­ry loca­ti­on” soll­te z.B. auf dem Mac auf /bin/zsh gesetzt wer­den
  4. Das aus­zu­füh­ren­de Kommando: curl 'wttr.in/?format=4' wird als User Function “wet­ter” defi­niert wer­den.
Definition der User Function "wetter" im Einstellungsdialog vom Templater Plugin
Definition der User Function „wet­ter” im Einstellungsdialog vom Templater Plugin

Die ent­spre­chen­de Vorlage für die “Daily Notes” muss nun noch um den fol­gen­den Eintrag ergänzt wer­den:

---
tags: [daily]
---
<% tp.user.weather() %>

# Tasks 
- [ ]

# Notes

Dieses Template wird dann in den Einstellungen der Täglichen Notizen als Template defi­niert. Wenn dann eine Tägliche Notiz über die Obsidian-Befehlseingabe oder durch einen Klick im Kalender (dazu wird das Calender Plugin benö­tigt) erstellt wird, sieht das Ergebnis wie folgt aus:

Neue Tägliche Notiz mit den aktuellen Wetter Daten am aktuellen Ort.
Neue Tägliche Notiz mit den aktu­el­len Wetter Daten am aktu­el­len Ort.

Eine wei­te­re Möglichkeit, die aktu­el­len Wetterdaten ein­zu­fü­gen, kann über ein ein­fa­ches Template erfol­gen. Im Template-Ordner wird ein Template z.B. mit dem Namen “wet­ter” ange­legt und nur mit dem Eintrag: <% tp.user.weather() %> ver­se­hen. In den Template Einstellungen wird unter dem Punkt “Template Hotkeys” das Template ein­ge­tra­gen. Ein Hotkey kann, muss aber nicht defi­niert wer­den.

Definition eines weiteren Template Aufrufes im Templater Plugin
Definition eines wei­te­ren Template Aufrufes im Templater Plugin

Über die Obsidian-Befehlspalette und den Befehl “Templater: Insert Template-Ordner/wetter.md” oder durch Auslösen des defi­nier­ten Hotkeys kann nun in jede Notiz an der Cursorposition das aktu­el­le Wetter ein­ge­fügt wer­den.

Anstelle des Aufrufs der Wetterdaten kön­nen auch belie­bi­ge ande­re Shell-Befehle oder Skripte auf­ge­ru­fen wer­den. So ist es auch mög­lich, den Tagebucheintrag mit einem Zitat aus dem belieb­ten Linux-Tool for­tu­ne zu ergän­zen. Auf dem Mac habe ich dazu for­tu­ne mit dem Paketmanager brew instal­liert. Da das von brew instal­lier­te Kommando nicht im Standardverzeichnis liegt, muss aller­dings im Templater der voll­stän­di­ge Pfad ange­ge­ben wer­den:

Definition der User Function "zitat" für den Aufruf der Shell Anwendung "fortune"
Definition der User Function „zitat”

Das Ergebnis ist eine Tagebuchnotiz, die bei jedem Aufruf ein neu­es, mehr oder weni­ger erhel­len­des Zitat erzeugt:

Neue Tägliche Notiz mit den aktuellen Wetterdaten und einem von "fortune" generierten Zitat
Neue Tägliche Notiz mit den aktu­el­len Wetterdaten und einem von „for­tu­ne” gene­rier­ten Zitat

Es muss aber nicht immer Text sein. Wie in der obi­gen Abbildung zu sehen ist, habe ich auch den User Command say hin­zu­ge­fügt. In die Vorlage für die täg­li­chen Notizen ein­ge­fügt, wird man beim Erstellen einer neu­en Notiz mit einem freund­li­chen gespro­che­nen “Guten Morgen” begrüßt. Mehr über den say Befehl kann man in mei­nem Artikel “Hey Mac, say some­thing” nach­le­sen.

Nachtrag:

Mit dem fol­gen­den Eintrag in den User Functions wird die Darstellung des Wetters etwas über­sicht­li­cher incl. Übersetzung:

curl wttr.in\?format="%l:+%c+%t+fühlt+sich+an+wie+%f\nSonnenaufgang:+%S\nSonnenuntergang:++%s\nMond:++++%m\n"
Bruchsal, Germany: ☀️   +19°C fühlt sich an wie +19°C
Sonnenaufgang: 06:37:22
Sonnenuntergang:  20:14:56
Mond:    🌔

Mit einem vor­ge­ge­be­nen Ort:

curl wttr.in/Flensburg\?format="%l:+%c+%t+fühlt+sich+an+wie+%f\nSonnenaufgang:+%S\nSonnenuntergang:++%s\nMond:++++%m\n"
Flensburg: ☀️   +19°C fühlt sich an wie +19°C
Sonnenaufgang: 06:36:45
Sonnenuntergang:  20:14:39
Mond:    🌔

Soweit der ers­te Teil. Anmerkungen, Korrekturen und Kritik wie immer ger­ne in den Kommentaren.

Schreibe einen Kommentar

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