Oskar Welzl: Weblog zur Homepage

Eigene Shortcuts im N9 Startmenü

Angedeutet hab ichs ja schon, jetzt aber geht's richtig los: personalisierte Shortcuts am N9 und was man damit anstellen kann. Charmanter Use Case: Die Telefonnummer eines Freundes soll direkt als „Programm“ angewählt werden können. Das Foto zur Nummer wird dabei als Programm-Icon verwendet. Als Zugabe soll die Nummer auch gewählt werden, wenn eine defnierte Geste am Touchscreen ausgeführt wird.

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.)

 
erikhuemer meinte am :
Hat irgendwie hat das was von Leichenfledderei was du mit dem "untoten" N9 anstellst. :-D 
ossi1967 antwortete am :
Untot?

Es ist doch noch ein Baby!

 
Weitere Links zu …
Nokia:
development