Fryboyter

Icons im Tray unter KDE Plasma 5 anzeigen

Bisher wurden unter KDE 4.x die Icons im System Tray mittels xembed angezeigt. Plasma hingegen setzt nun auf SNI. Für viele Programme hatte das zu Folge, dass die Entwickler ihre Programme anpassen müssen. Bei einigen ist diese Anpassung bereits erfolgt. Bei anderen noch nicht. Bei einigen wird es vermutlich nie passieren. Und genau das ist ein Problem für viele Anwender.

Im Wiki von Arch Linux werden z. B. die Pakete sni-qt und libappindicator-gtk2 bzw. -gkt3 als Lösung angegeben. Bei mir hat bisher jede dieser Lösungen versagt. KeePass weigert sich beispielsweise auch nach der Installation besagter Pakete ein Icon anzuzeigen. Vermutlich, weil Mono genutzt wird. Laut einem Artikel von David Edmundson, seines Zeichens Entwickler bei KDE, macht die Umstellung auf SNI bei den Nutzern größere Probleme als ursprünglich angenommen. Und zwar so große, dass nun xembed-sni-proxy ins Leben gerufen wurde. Hiermit werden quasi “xembed-Icons” in “SNI-Icons” umgewandelt, so dass die Icons unter Plasma angezeigt werden.

Nach einem ersten Test ist das Projekt noch nicht wirklich ausgereift. In vielen Fällen wird beispielsweise ein leeres Icon angezeigt (Pidgin ist so ein Fall), sodass auf den ersten Blick einfach nur eine Lücke im System Tray zu sehen ist. Ein Klick auf diese Lücke öffnet aber das jeweilige Menü. Bei KeePass wird das Icon angezeigt. Nur lässt sich hier das Menü derzeit nur schließen wenn man einen Eintrag anklickt. Blöd, wenn man das falsche Icon erwischt hat und das Menü einfach nur schließen will.

Edmundson hofft, dass xembed-sni-proxy in Plasma 5.5 Einzug halten kann. Diese Version ist für Dezember 2015 geplant, sodass bis dahin noch einige Zeit zum Beheben von Problemen bleibt. Wer nicht so lange warten will und zufällig Arch nutzt, findet im AUR das Paket xembed-sni-proxy-git.

Linux | OSBN

KDE Plasma und Claws-Mail stürzen beim Herunterfahren oder bei einem Neustart ab

Ausgangssituation ist folgende. Auf einem Rechner läuft Arch Linux mit KDE Plasma. Updates sind zum aktuellen Stand komplett eingespielt. Egal ob der Rechner heruntergefahren oder neu gestartet wird, es stürzt die Plasmashell sowie das durchgehend laufende Programm Claws-Mail mit einem Signal 11 ab. Nachdem man einige Fenster mit den Absturzmeldungen weggeklickt hat, startet der Rechner dann aber wie beabsichtigt neu oder fährt komplett herunter. Besonders wohl ist mir dabei aber nicht wegen Claws-Mail.

Nach einigem hin und her habe ich gestern die Lösung gefunden. Der verdammte Layer 8 war mal wieder das Problem… Vor einiger Zeit gab es eine Änderung, mit der der Microcode eines Intel-Prozessors nicht mehr automatisch aktualisiert wird und somit ein Eingreifen des Nutzers nötig ist. Vor einigen Wochen hatte ich mir die Datei /boot/syslinux/syslinux.conf verbastelt, so dass ich die vorhandene gelöscht und eine neue erstellt habe. Dabei habe ich natürlich nicht den Eintrag für das Update des Microcodes eingebaut… Nachdem ich das jetzt nachgeholt habe, funktioniert alles wieder wie es soll. Warum das ganze aber erst nach Wochen Probleme gemacht hat, kann ich nicht wirklich sagen. Scheinbar gab es ein Update, dass mit einer alten Version Probleme hat.

Linux | OSBN

AppMenu QML - Mein neues Startmenü und dessen Problembeseitigung

Ich heute mal wieder auf kde-look.org gewesen und habe mir mal wieder neue Plasmoids angesehen. Dabei bin ich auf das Startmenu AppMenu QML gestoßen, dass in QML und Javascript geschrieben ist.

Im Grunde ist es kein Plasmoid, dass an unbedingt haben muss, da es keinen wirklichen Mehrwert bringt. Aber es gefällt mir optisch ganz gut, von daher behalte ich es erst einmal.

Nur hat bzw. hatte das ganze Mal wieder einen Haken. Alle Schaltflächen die zum Beispiel für das Abmelden, für das direkte Herunterfahren oder zum Benutzer wechseln gut sind, haben nicht funktioniert. Also musste ich mal wieder Hand anlegen. Unter ~/.kde4/share/apps/plasma/plasmoids/appmenu-qml/contents/ui/ findet man die Datei LeaveToolBar.qml. In dieser findet man folgenden Abschnitt, der für die funktionslosen Schaltflächen zuständig ist.

function doAction(action) {
    // see http://api.kde.org/4.10-api/kde-workspace-apidocs/libs/kworkspace/html/namespaceKWorkSpace.html
    if (action == "lockScreen")
        plasmoid.runCommand("qdbus", ["org.freedesktop.ScreenSaver", "/ScreenSaver", "Lock"]);
    else if (action == "requestShutDown")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "1", "-1", "-1"]); // ShutdownConfirmYes, ShutdownTypeDefault, ShutdownModeDefault
    else if (action == "logOut")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "3", "-1"]); // ShutdownConfirmNo, ShutdownTypeLogout, ShutdownModeDefault
    else if (action == "turnOff")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "2", "-1"]); // ShutdownConfirmNo, ShutdownTypeHalt, ShutdownModeDefault
    else if (action == "restart")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "1", "-1"]); // ShutdownConfirmNo, ShutdownTypeReboot, ShutdownModeDefault
    else if (action == "suspendToRam")
        plasmoid.runCommand("qdbus", ["org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement", "org.kde.Solid.PowerManagement.suspendToRam"]);
    else if (action == "suspendToDisk")
        plasmoid.runCommand("qdbus", ["org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement", "org.kde.Solid.PowerManagement.suspendToDisk"]);
    else if (action == "switchUser")
        plasmoid.runCommand("qdbus", ["org.kde.krunner", "/App", "org.kde.krunner.App.switchUser"]);
}

Nur was nun? Ich habe mir erst einmal einen der Befehle in der Konsole nachgebaut (qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1). Und schon mault die zsh, dass sie Befehl qdbus nicht kennt. Das dürfte das Problem sein. Da ich zufälligerweise wusste, dass der Befehl unter Arch im Paket qt4 enthalten ist, habe ich mir den Paketinhalt unter https://www.archlinux.org/packages/extra/x86_64/qt4/ mal genauer angesehen. Hier wird eine Datei mit dem Namen qdbus-qt4 gelistet. Das dürfte dann wohl die Lösung des Problems sein. Aber wieso nicht qdbus, sondern qdbus-qt4? Ein paar Minuten später hatte ich die Antwort. Arch bietet auch das Paket qt5-tools an. Und hier gibt es den Befehl qdbus. Somit wollte man hier wohl Probleme vermeiden, wenn beide Pakete installiert werden würden. Da ich noch nicht qt5 installieren möchte, habe ich mich also dazu entschieden die genannte Konfigurationsdatei anzupassen.

Von daher habe ich die Datei nach qdbus durchsucht und diesen Befehl durch qdbus-qt4 ersetzt, sodass z. B. folgender Eintrag zustande kam.

plasmoid.runCommand("qdbus-qt4", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "1", "-1", "-1"]); // ShutdownConfirmYes, ShutdownTypeDefault, ShutdownModeDefault

Diese Änderungen werden nicht sofort übernommen, sondern vermutlich erst nachdem man sich aus- und wieder eingeloggt hat. Ich habe einfach die Kiste komplett neu gestartet. Und schon kann ich die Schaltflächen die vorher ohne Funktion waren, nutzen.

Linux | OSBN