Ich wollte schon länger ein besseres Adressbuch in mutt, aber auch das ganze mit meinem Handy in sync halten, da ich dort oft neue Kontakte eintrage. Nachdem ich es endlich geschafft habe, die Kontakte von meinem 6220 auf mein 6230i zu übertragen, habe ich in Anlauf genommen, die Kontake nun über Bluetooth zu syncen. Bisher hätte ich das über Infrarot machen müssen und dass war mir zu aufwendig und hat oft nicht getan. Nun mit Bluetooth sieht die Welt viel besser aus und (x)gnokii läuft auch Stabil.
Mithilfe von libopensync und dem GUI multisync0.90 bzw. dem CLI msynctool werden die Kontakte des Handys in einen Ordner gesynct. Dort liegen sie dann als VCARD. lbdb durchsucht diese Dateien und übergibt sie mutt.
Fangen wir mit der Konfiguration von gnokii an:
$ cat .gnokiirc
[global]
port=00:12:D2:E5:1D:8D
model=6230
connection=bluetooth
use_locking = no
Durch aufrufen von xgnokii kann man überprüfen, ob diese Einstellungen richtig sind. Sollte dies der Fall sein, kann man multisync konfigurieren, dazu ruft man multisync0.90 auf, erstellt eine neue Gruppe, vergibt einen sinnvollen Namen. Man fügt die Module file-sync und gnokii-sync hinzu. Bei file-sync gibt man den Pfad an, in den man die Kontakte speichern möchte, bei gnokii-sync die ensprechenden Angaben von vorhin. Ein erster sync sollte die entsprechenden VCARDs erstellen.
Nun muss man mutt beibringen, diese auch zu nutzen. Das erledigt
lbdb für uns.
$ cat .lbdb/lbdbrc
METHODS="m_inmail m_vcf"
VCF_FILES="$HOME/.contacts/gnokii-contact-ME-*"
MUTT_DIRECTORY="$HOME/.mutt"
MUTTALIAS_FILES=".muttrc muttrc aliases"
SORT_OUTPUT="name"
Damit sucht lbdbq nach allen Kontakten in .contacts und nach mutt aliasen und sortiert diesen output nach Namen.
Wenn man nun mutt beibringt lbdbq zu fragen, wie Adressen lauten, ist alles perfekt:
:set query_command="$HOME/bin/lbdbq %s"
Wenn da nicht die .cache Dateien wären, die lbdbq anlegt und dann später selbst drüber stolpert. Also muss man sich einen kleinen wrapper bauen, der diese .cache Dateien wieder entfernt, nachdem lbdbq aufgerufen wurde:
#!/bin/sh
lbdbq $*
cd $HOME/.contacts/
rm *.cache
Wenn man nun diesen Wrapper aufruft, statt lbdbq, sollte es wirklich funktionieren.
Ich weiß, es ist nicht schön gelöst, aber es funktioniert zumindest.
Damit nun das Handy schön synct, habe ich noch das script synccell gebaut, welches synct und den output an git übergibt, das nochmal alle Dateien verwaltet:
$ cat bin/synccell
#!/bin/sh
cd $HOME/.contacts/
SYNCOUTPUT=$(msynctool --sync 'file - gnokii 6230i (over BT)')
git add *
git commit -a -m "Automatic commit after sync: $(date -R)
${SYNCOUTPUT}"
Nun muss man nur noch synccell aufrufen und der Rest funktioniert von selber.