KOrganizer und Google Kalender

Tuesday, March 27. 2012

Dieser Artikel ist aus meiner Sicht etwas veraltet - er schildert Probleme, die ich mit der eher vermurksten KDE - Version hatte, die mit debian kommt. Squeeze wie Wheezy schleppen einen uralten Versionstand von KDE Pim mit sich herum und damit hat man nur Kummer. Irgendwann habe ich mal Arch Linux ausprobiert und - ob es nun am ohnehin viel aktuelleren Versionstand liegt oder ob KDE unter Arch auch etwas liebevollere Behandlung geniesst - da ging plötzlich, was ich auf Debian partout nicht erreichen konnte: Google Kalender, Tasks, Adressbuch einbinden.  

 

 Klickt man auf die kleine Uhr im Systray von KDE, geht ein Kalender-Popup auf, und da hätte ich gerne meine Termine markiert. Termine lege ich in einer Reihe von thematisch getrennten Kalender in einem Google-Account ab, so kann ich per Browser, Android-Phone, Thunderbird-Lightning (bzw IceOwl) darauf zugreifen. 

Damit die Termine in dem kleinen Overlay angezeigt werden, muß ich die Kalender in KOrganizer einbinden. kurz gegoogelt und die Suchergebnisse verweisen mich auf GCalDaemon (den ich schon kenne, der auch soweit läuft, der aber ein wenig umständlich einzurichten wäre und mir eher als eine Notlösung vorkommt.

Der nächste Fund verweist mich auf das Package akonadi-kde-resource-googledata, das ich mit synaptics finde und installiere und dann zu verwenden versuche. Die Synchronisation der Kontakte mit KAdressBook klappt daraufhin, aber in KOrganizer gelingt es mir nicht. Es gibt gar keine Option, statt des Hauptkalenders einen der anderen auszuwählen.

Dann finde ich den Hinweis auf ein Projekt akonadi-google, mit dem das Syncen von mehreren Kalendern und Tasks möglich sei. Die Sourcen des Projektes muss man sich laden und selbst kompilieren, als root:

mkdir -p /usr/local/src/akonadi-google-src
cd /usr/local/src/akonadi-google-src
git clone git://anongit.kde.org/akonadi-google

apt-get install cmake build-essential kdelibs5-dev kdepimlibs5-dev libqjson-dev libphonon-dev xsltproc libboost-dev
cd akonadi-google/
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr
make
make install
 
KOrganizer (neu) starten und dann kann ich meine diversen Kalender einen nach dem anderen einbinden. Einziges Manko, dass mir bislang auffiel: wiederkehrende Termine aus einem der Google-Kalender werden in KOrganizer nicht angezeigt.
Mit ein paar Tagen Laufzeit erscheint die Sache etwas wackelig: anfangs gelingt die Verbindung zu den Google-Kalendern und Terminänderungen werden ringsum synchronisiert. Aber ohne klar erkennbaren Anlass - und ohne eine entsprechende Meldung in .xsession-errors - ist die Synchronisierung nun wieder ausgestiegen. Auch ausdrückliche manuelle Synchronisierung tut es nicht - im Log steht zwar: libakonadi Akonadi::ItemSerializer::convert:     -> conversion successful
aber die geänderten Termine tauchen nicht auf.

Ähnlich verlief es mit der Synchronisation von Aufgaben. Dabei finde ich es besonders blöd, dass KOrganizer selbst gar keinen Hinweis gibt, dass etwas nicht stimmen könnte, man legt fröhlich neue Aufgaben oder termine an und bekommt sie dort auch angezeigt, KOrganizer ist scheints wirklich der Ansicht, dass die Daten bei google landen. Aber leider...

Wenn ich nun einen meiner Kalender in Manage Calendar Sources rausschmeisse und danach neu Hinzuzufügen versuche, dann sehe ich einen Hinweis auf ein Problem:
Die Auswahlliste unter "Select the Calendar you want to connect to" ist leer, ein Klick auf Refresh List schreibt mir diesen fehler in's Log: 
akonadi_googlecalendar_resource_10(1744) KGoogle::KGoogleAccessManager::nam_replyReceived: Unknown error 0 , Google replied ' "" '
Da kann (und werrde) ich noch ein wenig herumforschen, um die synchronisation zu reparieren, muss man unter Manage Calendar Sources jeden einzelnen Kalender löschen, die Authentifizierung aufhaben und wiedeer neu einrichten und danach die Kalender wieder neu anlegen.

Es gibt einen eingetragenen Bug in der thematischen Nähe, ich habe aber nichts hilfreiches darin finden können und bin auch nicht sicher, ob das, was ich sehe, wirklich das gleiche ist. Jedenfalls die dort angesprochenen erweiterten Fehler (404, 410) habe ich hier bislang nicht gesehen.

Insgesamt ist es schon ein trauriges Bild. Also, Integration und Synchronisation von verschiedenen Datenquellen ist doch das eigentliche Kernthema von PIM und der Wunsch, auf dem Smartphone Aufgabenliste und Kalendereinträge zu sehen, die ich mir auf dem Desktop eingetragen habe, ist ja nun nicht ungewöhnlich. Dass sollte ein Organizer out-of-the-Box können, und nicht nur via einer obskur zu findenen und noch nicht ganz garen lib, die man sich erstmal selbst kompilieren und dann debuggen muss.
Gefällt nicht.

So, zurück zum Anfang - wie bekomme ich meine Events jetzt in den kleinen Übersichtskalender des KDE-systray? Ein banales Shell-script lädt die Kalender über deren privat-Url herunter und benennt sie übersichtlich, damit nicht ein basic.ics den anderen überschreibt. Cronjob einrichten, der das script regelmaessig alle paar Minuten aufruft. Kontakt darf noch mal ran, ich richte für jeden Einzelkalender einen Akonadi-Kalender mit Datenquelle lokale iCal-Datei ein. FileMonitoring anhaken, readonly kann man auch anhaken, effektiv ist es das ohnehin, denn die lokalen Dateien werden ja alle paar Augenblicke überschrieben. Hässlich, geht aber. 

Caveat: 
Für jeden so eingebundenen Kalender gibt es nun ein eigenes Verzeichnis unter ~/.kde/share/apps mit einem Namen wie akonadi_ical_resource_1. Und bei jeder Aktualisierung wird dort eine Kopie der .ics angelegt. Wenn das eine Weile läuft, können das seeehr viele Dateien sein. Zu allem Überfluss schreibt bei mir auch noch /usr/bin/akonadi_nepomuk_calendar_feeder bei jeder Aktualisierung eine Unzahl gleichlautender Fehlermeldungen nach .xsession-errors:

"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "QLocalSocket::connectToServer: Invalid name"
"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/akonadi_nepomuk_calendar_feeder(12243)" Soprano: "Unsupported operation (2)": "Invalid model"
Und wenn man nicht mit regelmässigem Aufräumen oder logrotate vorbeugt, wird für dies kleine Kalendergimmick die Homepartition mit einem Wust nutzloser Daten zugepflastert...
 
update:
Es gibt von akonadi-google eine neue Version mit Bugfixen und Aussicht auf Erweiterung mit KDE 4.9:
http://www.progdan.cz/2012/04/akonadi-google-0-3-1/
http://comments.gmane.org/gmane.comp.kde.devel.pim/33255
Noch zu erproben, Dank an Julez für den Hinweis.

update 23.9.2012:
Mit 4.8.x habe ich die Einbindung von Google Kalendern nicht brauchbar gesehen, mit KDE SC 4.9.1 (Arch Linux) funzt es. Prompt und bequem.

(Page 1 of 1, totaling 1 entries)