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
1 |
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.
1 2 3 4 5 6 7 8 9 10 11 |
#!/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.