GeekTool – Mehr als nur eine Spielerei?

Seit einigen Wochen befindet sich GeekTool fest in den Top 10 der kostenlosen Apps im Mac App Store. Wer sich die App jedoch lädt wird vielleicht am Anfang enttäuscht, denn so ganz von alleine, tut die App wirklich nicht viel. GeekTool ist also für Geeks, denen es nichts ausmacht, sich in die Materie ein wenig einzulesen.

Das Beispiel, dass ich Euch hier zeigen möchte wird dabei nicht viel wirklich nützliches tun. Es wird Euch das Datum, die Uhrzeit und ein Wetter-Icon auf den Bildschirm zaubern. Dabei ist das wirklich nur das gängige Anfänger-Beispiel, aber da es leicht umzusetzen ist, hoffe ich, dass es Euch nützlich erscheinen sein wird. Im Ende muss man sich allerdings fragen, wie nützlich dieses Beispiel denn wirklich ist, denn eigentlich kann das Dashboard doch schöner ;)

Datum & Uhrzeit

Das Datum und die Uhrzeit werden in GeekTool einfach über sein Shell-Geeklet erzeugt. Dazu ziehst Du einfach das Shell-Icon aus GeekTool auf Deinen Desktop. Neben dem Platzhalter scheint nun auch ein kleines Info-Fenster, mittels dem Du dann loslegen kannst.

Du klickst also den Platzhalter auf Deinem Desktop an und schaust dann, das Info-Fenster näher durch. Hier kannst Du jegliche Magie von GeekTool ausführen lassen.

 

Wissen sollte man, dass der Tag, der Monat, das eigentliche Datum, und Uhrzeit bei mir einzelne Shell-Einträge sind, ich also nicht einen einzigen großen Datums-Block habe, sondern viele verschiedene Objekte. Aber was gibt man nun ein? Dazu kann ich Euch nur einen Artikel bei mactricksandtips.com empfehlen, so das alles durchgegangen wird. Hier jedoch die wichtigsten Möglichkeiten aus diesem Artikel:

[crayon-5b7b77992e132712417195/]

Dann gilt es noch ein paar besondere Einstellungen zu treffen. Wie oft soll sich der Wert aktualisieren? Für die Uhrzeit bietet es sich z.B. an diesen jede Sekunde aktualisieren zu lassen, damit diese auch immer stimmt. Bei anderen Einträgen, wie z.B. dem Tag (Montag) könnte man das auch nur alle paar Minuten machen lassen. Der Wert wird im Feld „Refresh every“ in Sekunden angegeben.

Und ein weiterer wichtiger Punkt ist es, dass man angibt, ob die Werte übersetzt werden sollen. In meinem Beispiel habe ich explizit ausgewählt, dass ich die Werte nicht übersetzt haben möchte, und so steht bei mir Monday anstelle von Montag, aber das ist keine Limitierung von GeekTool, sondern meine Auswahl. Wenn man also der Wert „Set lokale environment“ beibehält, zeigt das System, Montag und ansonsten halt Monday.

Bitte beachtet auch, dass man den Font und die Ausrichtung des Textes angeben kann. Es sind diese Einstellungen, die das Tool so interessant machen und Ihr solltet Euch diese entsprechend gut anschauen.

Wetter

Eine stetig aktualisierte Wettervorhersage hinzubekommen hingegen ist viel schwieriger. Zum Glück gibt es im Internet Leute, die viel intelligenter sind als ich und die haben passende Scripte zur Verfügung gestellt. Mir hat z.B. ein YouTube Video und der dort angebotene Script-Download sehr geholfen. Was ich Euch also jetzt zeige ist also noch nicht mal annähernd meine Arbeit.

Als erstes müssen wir ein Shell-Geeklet hinterlegen, welches die Aufgabe hat, die aktuelle Wetter-Grafik von Yahoo Weather zu laden und dieses in ein Temp-Verzeichnis abspeichert. Diese Grafik rufen wir dann über ein Image-Geeklet auf.

Fangen wir mit dem Code an

curl –silent „http://weather.yahoo.com/germany/hesse/otzberg-12835228/“ | grep „forecast-icon“ | sed „s/.*background\\:url(\\’\\(.*\\)\\‘)\\;\\ _background.*/\\1/“ | xargs curl –silent -o /tmp/otzweather.png\

In diesem Code müsst Ihr zwei Dinge tun. Als erstes müsst Ihr die Yahoo Weather URL für Eure Stadt (rot) ersetzen und dem Bild einen Namen geben (lila), der für Euch Sinn macht. Also zu http://weather.yahoo.com gehen und nach Eurer Stadt suchen und dann einfach den Link aus dem Adressezeile Eures Browser kopieren. Ganz einfach.

Somit habt Ihr jetzt also ein Shell-Geeklet, dass leer bleibt, und ein Image-Geeklet, dass das so gespeicherte Bild aufruft. Für beide solltet Ihr vernünftige Lade-Zeiten hinterlegen. Ich mache das z.B. nur alle 600 Sekunden. Für das Image-Geeklet ist noch wichtig, dass Ihr file:// vor die URL gebt, so dass in meinem Fall daraus file:///tmpt/otzweather.png wurde.

Unter der Uhrzeit habe ich allerdings auch noch einen kurzen Hinweis auf den aktuellen Wetter-Status „Cloudy, 14 C“ steht da für mich. Auch das ist kein Hexenwerk.

Das Script für das Shell-Geeklet lautet:

curl –silent „http://xml.weather.yahoo.com/forecastrss?p=GMXX1569&u=c“ | grep -E ‚(Current Conditions:|C<BR)‘ | sed -e ’s/Current Conditions://‘ -e ’s/<br \/>//‘ -e ’s/<b>//‘ -e ’s/<\/b>//‘ -e ’s/<BR \/>//‘ -e ’s/<description>//‘ -e ’s/<\/description>//‘

Jetzt braucht Ihr also die XML URL für Eure Stadt und auch das ist ganz einfach. Einfach bei Yahoo Weather in der Adresszeile Eures Browsers auf das RSS Icon klicken und dann die URL des RSS Feeds zum Teil kopieren. Bei mir lautete die URL für das Berliner-Beispiel so z.B. weather.yahooapis.com/forecastrss?p=GMXX1273&u=f und was man hier kopieren will ist also der Wert für die Variable p, also GMXX1273 und das oben ersetzen.

Auch das ist kein Hexenwerk und schon hat man alle Elemente aus meinem Beispiel erstellt und auf dem Bildschirm irgendwie positioniert und muss nun nur noch maximal das ganze ein wenig schöner machen.

Wie gesagt, nichts von all dem ist wirklich meine Arbeit und trotzdem hoffe ich, dass Ihr es als nützlichen Einstieg empfinden werdet!

Claus Wolf

Seit 1994 im Netz unterwegs und seit 2004 eingefleischter Mac-Nutzer. 21.5" iMac - 2.9GHz Intel Core i5, 16GB RAM, 1TB Fusion Drive HDD / 128GB iPhone 7 / 128GB iPad 9,7" (2017) / 15" MacBook Pro (Mitte 2014) in der Firma...

3 Antworten

  1. Steeeve sagt:

    Servus!
    Toll wäre, wenn man nur die Temperatur aus

    abgreifen könnte – hast du zufällig eine Idee wie das funktioniert?

    Grüße
    Steeeve

  2. Steeeve sagt:

    So, Lösung für die Temperatur auch irgendwo im Netz gefunden. Die ist zwar nicht so wie erhofft, aber funktioniert:

    curl –silent „http://xml.weather.yahoo.com/forecastrss?p=AUXX0010&u=c“ | grep -E ‚(Current Conditions:|C<BR)' | sed -e 's/Current Conditions://' -e 's///‘ -e ’s///‘ -e ’s///‘ -e ’s///‘ -e ’s///‘ -e ’s///‘ | tail -n1 | awk ‚{ print $(NF-1) „°C“ }‘

    AUXX0010 Muss dann wie im Artikel beschrieben, ersetzt werden.

  3. Phil sagt:

    Hier das Ganze mir Video-Anleitung:

Schreibe einen Kommentar

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.