Einige Probleme lassen sich schnell lösen. Zum Beispiel, dass KMail versucht, E-Mails abzuholen, selbst wenn es keine Netzwerkverbindung gibt.
Über den DBus lässt sich jede KDE-Anwendung fernsteuern, sofern die entsprechenden Interfaces angeboten werden. Mit dem Aufruf von
qdbus org.kde.kmail /KMail
erhält man eine Übersicht der Methoden, die KMail anbietet. Darunter sind auch stopNetworkJobs und startNetworkJobs – genau das, was wir brauchen.
Über die Toolbox des Network Managers, speziell nm-tools, ist es möglich, den Netzwerkstatus zu ermitteln. Jetzt fehlt nur noch ein kleines Script, das je nach Vorhandensein einer Netzwerkverbindung KMail in den Online- bzw. Offline-Modus versetzt.
#!/bin/bash if [ `nm-tool|grep State|cut -f2 -d' '` == "connected" ]; then #Whatever you want to do if the network is online echo "Starting KMail network jobs" qdbus org.kde.kmail /KMail org.kde.kmail.kmail.resumeNetworkJobs else #Whatever you want to do if the network is offline - note, this and the else above are optional echo "Stopping KMail network jobs" qdbus org.kde.kmail /KMail org.kde.kmail.kmail.stopNetworkJobs fi
Diese Script wird in der Ereignisverwaltung des Network Managers beim Ereignis “Schnittstellenstatus geändert” eingetragen und setzt nun den KMail-Status abhängig von der Verfügbarkeit einer Netzwerkverbindung.
Die Lösung ist sehr einfach, behebt aber die Fehlermeldungen und ist ein Ausgangspunkt für weitere Verbesserungen.
Nachtrag: Schöner wäre es, wenn KMail die Jobs beenden würde, bevor die Verbindung abbricht. Wer spontan einen Ansatzpunkt hat, bitte ab in die Kommentare damit.
Nachtrag2: Eigentlich brauchen wir eine Internetverbindung, d.h. streng genommen müsste ein Internet-Zugriff ausgeführt und dann abhängig vom Erfolg der KMail-Status gesetzt werden.