Eigene Shortcuts im N9 Startmenü
Simple: contactLaunch
Vorab: Wers einfach nur simpel haben will, ohne zu wissen, was er tut: contactLaunch ist ein guter Start. Das Programm listet alle Personen aus dem Telefonbuch auf und erlaubt es, einzelne Einträge ins Programm-Menü zu übertragen. Nachteil: Das Antippen des Symbols führt zur Kontakt-Karte mit allen Nummern, nicht direkt auf eine bestimmte Rufnummer. Außerdem landen die Fotos der Personen nicht im N9-typischen Squircle-Look in der Liste, sondern als ganz gewöhnliche Quadrate. Auch mit Gestensteuerung tut sich hier zunächst nichts. Wen das alles nicht stört, der ist mit dem € 0,90-Programm gut bedient.
Der Trick mit dem Link
Im Ergebnis ähnlich wie contactLaunch, aber zu Fuß erstellt und daher mit dem größeren Lerneffekt: die Link-Methode. Man lernt ja immer am besten, wenn man sich fertige Beispiele ansieht. Daher sehen wir uns an, was Nokia macht, wenn das N9 vom Browser aus ein Lesezeichen im Programm-Menü ablegt:
So ein Lesezeichen findet sich im Ordner /home/user/.local/share/applications/ und hat einen Dateinamen, der mit „browser-“ beginnt und mit „.desktop“ endet. (Der Rest ist eine zufällige Zeichenkette, die keinen Rückschluß auf den Inhalt des Lesezeichens zuläßt.) Wenn man diese *.desktop-Datei in einem normalen Texteditor öffnet, sieht man:
[Desktop Entry] Encoding=UTF-8 Type=Link Name=Oskar URL=https://oskar.twoday.net/ Icon=/home/user/.grob/l/1ec5e39376dfe03e9283bfd2506860f7-0.png
Dabei ist „Name=“ die Zeile, die angibt, was unter dem Icon stehen soll. „Icon=“ bestimmt, welches Symbol für den Link angezeigt wird - wieder ein seltsamer Dateiname, den der Browser beim Erzeugen des Lesezeichens angegeben hat. „URL=“ scheint klar: Diese Adresse wird aufgerufen, wenn man drauftippt. Nur: In dieser Zeile können nicht nur Adressen stehen, die mit „http:“ beginnen und daher ins WWW führen. Hier beschreibt Nokia, welche Typen sonst noch zulässig sind und wie das N9 damit umgeht. Unter anderem findet man die Möglichkeit, statt „http:“ einfach „tel:“ mit einer Telefonnummer zu schreiben. Das N9 zeigt dann eine Kontaktkarte an (ähnlich also wie bei contactLaunch), aus der man den Telefonanruf starten kann.
Ein zu diesem Zweck angepaßter *.desktop-Eintrag könnte so aussehen:
[Desktop Entry] Encoding=UTF-8 Type=Link Name=A1 Serviceteam URL=tel:0800664100 Icon=/home/user/.local/share/pixmaps/a1logo.png
Aufmerksame Nasen haben hier bemerkt: Ich habe auch die Zeile für das Icon angepaßt. Wichtig zu wissen ist: Es kann dort jedes Bild verwendet werden. Wer aber extra ein hübsches Icon erzeugt hat (z.B. mit meinem Iconmaker *g*) und es sauber ablegen möchte, dem sei der Pfad /home/user/.local/share/pixmaps/ dafür ans Herz gelegt. Den Ordner pixmaps unterhalb von /home/user/.local/share/ muß man zwar erst manuell anlegen, aber irgendwie paßts dann am besten: Nokia hat ja weder die Ordner-Struktur mit Namen wie „~/.local/share/“ noch das Format der *.desktop-Files selbst erfunden. Das alles sind gut eingeführte Spezifikationen, denen mittlerweile fast alle GNU/Linux-Systeme folgen. Ein Unterordner pixmaps für eigene Icons paßt da gut rein.
Per Link-Methode erreicht man im Grunde also das gleiche wie mit contactLaunch - nur der Aufwand ist wesentlich höher. Wird dieser Aufwand auch irgendwann belohnt? Eh klar. ;)
Die Krönung: ein Script
Schon hier hab ich beschrieben, wie man das Telefon-UI mit einer bestimmten Nummer aufrufen kann. Genau das ist es, was ich will: einmal von einem Icon im Programm-Menü aus, einmal per Gestensteuerung. Außerdem nicht auf eine Nummer beschränkt, sondern auf mehrere.
Wie immer, wenn man die gleiche Funktion mehrfach ansteuern möchte, schreibt man ein Script. In meinem Fall sieht das so aus:
#! /bin/sh /usr/bin/qdbus com.nokia.telephony.callhistory /callhistory com.nokia.telephony.callhistory.dialer "$1" exit
Abgelegt wird dieses Script unter dem Namen callnumber.sh im Ordner /home/user/.local/bin (auch „bin“ muß man zuerst erstellen). Danach mit chmod u+x ausführbar machen und ausprobieren:
Die Eingabe von „./callnumber.sh 0800664100“ direkt im oben genannten Verzeichnis sollte die Telefontastatur das N9 auf den Bildschirm bringen. Die Nummer 0800664100 müßte bereits „eingetippt“ sein, sodaß man nach einem Kontrollblick nur mehr auf den grünen Hörer tappsen muß. So weit, so gut. Jetzt aber ins Programm-Menü damit
Am besten kopiert man das zuvor verwendete *.desktop-File und gibt ihm einen neuen Namen, z.B. „dialA1.desktop“. Eigentlich ist der Name egal, die Endung „.desktop“ ist wichtig. Danach ändert man die neue Datei wie folgt ab:
[Desktop Entry] Version=1.0 Type=Application Name=A1 Serviceteam Comment=Contact Exec=/home/user/.local/bin/callnumber.sh 0800664100 Icon=/home/user/.local/share/pixmaps/a1logo.png
Viel geändert hat sich gar nicht. Wichtig ist: Statt „Type=Link“ steht jetzt „Type=Application“ dort. Folgerichtig gibt es auch keine „URL=“-Angabe mehr für ein Link-Ziel. Diese Zeile wird ersetzt durch die Angabe des Programms, das gestartet werden soll. Die entsprechende Zeile beginnt mit „Exec=“. Easy.
Gestensteuerung
Eigentlich wäre der Zauber jetzt zu Ende, wenn da nicht noch die Gestensteuerung zu implementieren wäre. Zu diesem Zweck brauchts das Programm MyMoves aus dem Nokia Store. Leider kann MyMoves eigentlich nur wirklich installierte Programme steuern; selbst gebastelte Scripts übersieht es beim Auflisten der möglichen Aktionen. Macht aber nichts. Wo ein Konfigurationsfile ist, ist ein Workaround:
MyMoves starten und die Geste auswählen, mit der man die Telefonnummer wählen möchte. Dieser Geste dann irgendein Programm zuordnen, das man nicht per Geste starten will. (Es wird gleich klar warum.) Danach: MyMoves schließen und vergessen. ;)
Das Herz der Gestensteuerung ist die Datei /home/user/.config/mymoves.conf, die sich gottseidank ebenfalls mit einem ganz einfachen Texteditor bearbeiten läßt. Sobald man sie geöffnet hat, sucht man die Zeile mit dem Programmnamen, den man zuvor mit der gewünschten Geste verknüpft hat. Ich habe der Geste „mit zwei Fingern von links unten nach rechts oben“ den Notizblock zugeordnet. Also finde ich in mymoves.conf:
d12###Notes###/usr/bin/invoker --wait-term --delay=10 --type=m /usr/bin/notes -showWindow %U
Ab hier heißt es wieder: Aus bestehenden Vorlagen lernen. „Notes“ ist offenbar nur die Bezeichnung, die im UI zur Geste angezeigt wird. Alles nach dem letzten ###-Block ist das Kommando, das ausgeführt wird. Na dann! Die Zeile wird geändert auf:
d12###A1 Serviceteam###/home/user/.local/bin/callnumber.sh 0800664100
Konfigurationsdatei speichern, MyMoves neu starten - und schon ermöglicht die magische Geste den gewünschten Anruf, egal wo am N9 man sich gerade befindet.
Die schlechte Nachricht zum Schluß
Zwar zeigt das N9 die neu erstellten *.desktop-Files genau so an, wie es das nach der Spezifikation tun sollte. Sicherheitshalber läßt es aber (zumindest bei den meisten der hier gezeigten Varianten) das Löschen der Icons direkt in der Launcher-Ansicht nicht zu. Offenbar hat Maemo/Harmattan hier Angst, daß ein echtes Programm nicht mehr funktioniert, weil man irrtümlich sein Icon löscht. Das heißt: Wenn man ein solches Icon wieder los werden will, gibt es keinen anderen Weg, als die dazugehörige *.desktop-Datei aus /home/user/.local/share/applications/ zu löschen. (Achtung: Das Löschen der Grafik-Datei, die zur Darstellung des icons verwendet wird, bringt gar nichts. In diesem Fall zeichnet das N9 einfach ein einfärbig grünes Icon hin.)
Nokia: