Taxbird is finally dead

Since libgeier and Taxbird both have found a successor in Geierlein and the latter is rather usable already, I had a hard time the last days contemplating whether to drop those old projects or not.

After all especially Taxbird would require a lot of work sooner than later. It’s currently based on Gtk2 and Guile 1.8 which both are quite dated right now. This is porting to newer versions and much testing is due.

Furthermore I’d like to omit the annual stress of building packages for various distros, telling people how to compile the code, etc.pp Geierlein is by far easier to install. It’s written in JavaScript and hence does not require to do compiling. Just unzip the archive provided on the homepage and point Mozilla Firefox to it. The application should just be up and running.

To put it short, libgeier & Taxbird are now dead. I’m not going to update it any further. Besides I’ve removed the old homepage of the project and replaced with a pointer towards the Geierlein project.

Geierlein has a new homepage

My recent project Geierlein just got a new, standalone homepage. For the last weeks there solely was a single page in the Taxbird blog dedicated to it. Since I consider Geierlein the successor of Taxbird, I felt it was way too hidden there.

The new page pulls it more into the light. I’ve kept it very short, just stating the key features, showing a single screenshot and always visible download links.

Since I wanted to host the page on Github, I gave Jekyll a try. Jekyll is a simple static site generator written in Ruby. It allows to write the page content in markdown syntax (among others). This content is then rendered to HTML and put into provided templates.

Github automatically does the rendering once the markdown code is pushed into the repository.

DBus vs. Schlange

Eigentlich war ja von Anfang an klar, dass es nicht bei dem Lauschangriff auf DBus mittels C-Code bleibt, das Crosskompilieren ist schlichtweg einfach zu lästig im Umgang mit dem N900.  Nach nur wenigen Stunden der Rätselei (zugegeben, ich kann nicht wirklich gut Python, aber die Auswirkung hierauf dürfte eher marginal sein) wie das Python-DBus Modul im Innersten wohl funktioniert, hier jetzt die Lösung wie man die Desktop-Benachrichtigungen in einem Skript abfangen und weiterverbarbeiten kann:

import gobject
import dbus
from dbus.mainloop.glib import DBusGMainLoop

def msg_filter(_bus, msg):
    if msg.get_member() != "Notify": return
    args = msg.get_args_list()
    print "%s:%s" % (args[3], args[4])

if __name__ == '__main__':
    DBusGMainLoop(set_as_default = True)
    bus = dbus.SessionBus()
    bus.add_match_string("type='method_call',interface='org.freedesktop.Notifications'")
    bus.add_message_filter(msg_filter)
    gobject.MainLoop().run()</pre>

… nennen wir das Kind notify-spy, Lizenz GPLv3+

Lauschen am DBus

… nachdem man schon mit den folgenden, wenigen Zeichen Notifications auf dem geliebten Nerdphone N900 einblenden kann:

#!/usr/bin/env python
import dbus
if __name__ == '__main__':
    bus = dbus.SessionBus()
    remote_object = bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
    iface = dbus.Interface(remote_object, "org.freedesktop.Notifications")
    iface.Notify('', 0, '', 'Hallo', 'ruf mich an!', [], [], -1)

kam auf dem zerties.org-Treff heutgestern die Frage auf, wie schwer es wohl sei, eine Nachricht, die an den Desktop Notification Daemon geht (org.freedesktop.Notifications.Notify) abzufangen und zusätzlich selbst weiter zu verarbeiten.  Die Idee ist hier, dass man die Nachricht vorlesen lassen könnte, wenn man bspw. im Auto sitzt.  Ist dann doch eher unpraktisch, wenn man nur mitbekommt, dass das Handy in der Tasche vibriert.

Wie man das mit Python implementieren könnte habe ich bis jetzt noch nicht herausgefunden, daher habe ich mir den Code von dbus-monitor geschnappt und das Gewünschte noch dazugefrickelt, das Kind heißt jetzt notify-listen als Pendant zu notify-send aus dem Paket libnotify-bin.

Damit sind die ersten Hürden im Umgang mit DBus genommen.  Ich habe ja noch das Ziel den von mir selbst reporteten Bug in telepathy-sofia-sip zu fixen … aber das ist ja ein komplexes Monster aus DBus und GStreamer…