KNotify-Popups per Shell/Python
Manchmal will man einem Script oder Programm die Möglichkeit geben, sich dem Benutzer dezent mitzuteilen, obwohl es minimiert oder irgendwo im Hintergrund läuft. KDE hat für solche Zwecke KNotify (eine Notification Area im Systray) vorgesehen. KNotify anzusteuern ist seit D-Bus-Zeiten nicht mehr ganz so einfach wie früher. Mit einem kleinen Skript gehts aber doch flott und komfortabel.
Hier ist der Quellcode dafür: (knotify.py)
#!/usr/bin/python
import sys, dbus
knotify = dbus.SessionBus().get_object("org.kde.knotify", "/Notify")
try: title, text = sys.argv[1:3]
except: print 'Usage: knotify.py <title> <text>'; sys.exit(1)
knotify.event("warning", "kde", [], title, text, [], [], 0, \
dbus_interface="org.kde.KNotify")
So schauts aus, wenn das Skript aufgerufen wird:

Ein direkter Aufruf per qdbus scheint übrigens nicht möglich zu sein, da die aufzurufende Methode eine QVariantList als Argument erwartet und die Bash keine Konvertierung zu diesem Datentyp zu unterstützen scheint. Deshalb der Umweg über das Python-Skript.
(Dieses Skript funktioniert unter KDE 4.3.4, andere Versionen hab ich nicht getestet. Wäre möglich, dass die Funktion dann andere Paramter frisst)
does not work for me in KDE 4.4.2
…but this works:
kdialog –title “Testtitle” –passivepopup “Message” 10
Yes, I think the KNotify API has changed with KDE 4.4. You can use the qdbus command to find out which parameters of the event method have been changed.
I already knew of the kdialog passivepopup solution, but i find it a bit ugly and the message is gone forever if you don’t happen to sit before the computer when it pops up. KNotify saves the message, so you can read it later.