Das unter Linux benutzte D-Bus System wird meistens via Python angesteuert. Man kann D-Bus allerdings auch mit PHP über die PECL Extension “dbus” nutzen. Im folgenden Artikel beschreibe ich kurz wie man mit PHP das Notizprogramm Tomboy ansteuern kann und alle Notizen auslesen kann.
DBus für PHP installieren
Zum Starten muss zuerst über den PECL Installer das PHP Modul installiert werden. Ich nutze das aktuelle Ubuntu Linux 10.04 mit installiertem PHP. Unter Ubuntu sollte der PECL Installer bereits vorinstalliert sein. Ansonsten kann dieser mit PEAR installiert ausgeliefert werden.
Auf der Konsole genügt der Aufruf von pecl install dbus
damit dieser die C-Quelldateien lädt und über phpize
das PHP Modul konfiguriert und kompiliert. Wenn alles durchgelaufen ist wurde eine neue Shared Objekt Datei dbus.so erstellt. Unter Windows wahrscheinlich dbus.dll.
Diese muss in der php.ini Datei registriert werden. Hier einfach die folgenden Zeilen in die php.ini (am besten im dafür vorgesehenen Bereich in der php.ini) eintragen:
extension = dbus.so
Da ich php-cli nutze muss keine Webserverkonfiguration neu geladen werden wodurch wir hier mit der Installation von DBus für PHP schon fertig sind.
Das Beispielprogramm
<?php
if (!extension_loaded('dbus')) {
die('Extension dbus is not loaded');
}
$dbus = new Dbus(Dbus::BUS_SESSION, true);
$tomboy = $dbus->createProxy(
'org.gnome.Tomboy',
'/org/gnome/Tomboy/RemoteControl',
'org.gnome.Tomboy.RemoteControl'
);
$noteTitles = $tomboy->ListAllNotes(); // gibt ein DBusArray Objekt zurück
foreach ($noteTitles->getData() as $noteUri) {
//echo $noteTitle = $tomboy->GetNoteTitle($noteUri); // Ausgeben des Titels
echo $tomboy->GetNoteContents($noteUri); // Ausgeben der kompletten Notitz
}
Wer selbst ein wenig mit DBus und Tomboy spielen möchte findet eine Beschreibung der Tomboy Api in einem Artikel von Ryan Paul. Der Code ist dort allerdings in Python. Ein Mapping der Methoden ist aber durchaus in kurzer Zeit möglich.
Kleiner Tipp zum selber programmieren: Die Desktop-Notfications lassen sich auch sehr leicht in die eigene Anwendung integrieren.
Viel Spass beim Ausprobieren.