Mac Cli: Desktop Notification

generic cli

Ich habe eine Möglichkeit gesucht, um bei bestimmten Ereignissen eine Meldung zu generieren, die mich darauf aufmerksam macht. Am besten geeignet halte ich dafür die Desktop Mitteilungen.

Da ich die meiste Zeit in der Console arbeite, benötige ich also ein Programm welches sich aus der Console steuern läßt. Für Mac gibt es dafür terminal-notifier. Die eigentliche Motivation war, das Parsen von Log Dateien und bei bestimmten Pattern eine Nachricht zu erzeugen. Dazu vielleicht in einem anderen Artikel mehr.

Hier werde ich kurz die Idee anhand eines Tee Timers beschreiben.

Erstmal terminal-notifier über brew installieren.

$ brew install terminal-notifier

Dann benötigen wir ein Bash Script, welches eine Sleep Anweisung gefolgt von einer Notification im Hintergrund ausführt.

#!/bin/bash

icon=~/Pictures/icons/alarm_clock.png
arg="-sender com.apple.Terminal -sound Purr -appIcon $icon"
text=$2
waittime=$1
                                      
notify() {
    terminal-notifier $arg -title 'Timer' -message "$*"
}
if [[ -z $1 ]]; then
    echo "usage: sleep message"
    exit 0
fi

if [[ -z $2 ]]; then
    text="Timer abgelaufen"
fi

if [[ "$1" =~ [\d+m] ]]; then
    waittime=$(echo ${waittime%m})
    waittime=$(echo "$waittime*60" | bc)
fi

(sleep $waittime; notify "$text")&

Gestartet wird das Script mit zwei Argumenten, einer Zeitangabe und einem Text der in der Notification angezeigt werden soll.

$ ./timer.sh 8m 'Tee ist fertig'