Fryboyter

Abmelden und Co. unter KDE Plasma nicht bestätigen

Eigentlich mag ich KDE Plasma. Aber ein paar Kleinigkeiten nerven mich auch. So zum Beispiel dass man in der Standardkonfiguration das Herunterfahren, Neustarten bzw. Abmelden bestätigen muss. Oder man wartet bis der 30-sekündige Timer abgelaufen ist. Beides finde ich weniger gut. Perfekt wäre es, wenn man den Timer einstellen könnte. Sagen wir auf 3 Sekunden. Somit hat man, wenn man sich dann doch einmal verklicken sollte, noch die Chance den Vorgang abzubrechen. Ein Ändern des Timers sieht das KDE-Team aber scheinbar nicht vor. Wieso auch immer. Aber zumindest gibt es eine Möglichkeit den Timer komplett außer Kraft zu setzen. Hierzu editiert man einfach die Datei ~/.config/ksmserverrc. Unter [General] findet man den Eintrag confirmLogout=true, welchen man auf false setzt und die Datei wieder abspeichert. Alternativ kann man im in den Systemeinstellungen von KDE Plasma auch unter Arbeitsbereich “Starten und Beenden” auswählen. Dort klickt man dann links auf “Arbeitsflächen-Sitzung” und wählt dann rechts “Abmeldung bestätigen” ab. und speichert die Änderung.

Linux | OSBN

Kontrollleiste unter KDE Plasma 5 verschieben

Wie viele andere Nutzer auch, setze ich zwei Monitore ein. Einmal den direkt vor mir als Hauptmonitor und einen links daneben auf dem Sachen laufen die ich nicht immer im direkten Blick haben muss wie z. B. längere Updates oder Downloads. Oder das E-Mail-Programm. Auf dem Monitor direkt vor mir wir dann auch die Kontrollleiste von KDE Plasma 5 angezeigt. Vor ein paar Tagen als ich den Rechner gestartet hatte war die Leiste aber auf den linken Monitor. Keinen Schimmer wie das passiert ist. Genauso wie ich keinen Schimmer hatte, wie zur Hölle ich die Leiste jetzt wieder auf den richtigen Monitor bekomme.

Nachdem ich Google einige Zeit erfolglos gequält habe, habe ich die Lösung dann durch Versuch und Irrtum gefunden. Als erstes entsperrt man die Miniprogramme. Hierzu macht man einfach einen Rechtsklick auf den Desktop und wählt “Miniprogramme entsperren” aus. Danach sollten in der Kontrollleiste ganz rechts drei übereinander liegende Striche erscheinen. Wenn diese schon angezeigt werden, kann man sich diesen Schritt auch sparen. Als nächstes klickt man auf die drei Striche. Hier sollte man dann folgende Anzeige bekommen.

Plasma_verschieben

Entscheidend ist hier der Punkt “Bildschirmkante”. Klickt man auf diesen, passiert erst mal gar nichts. OK… Man muss nämlich darauf Klicken und die Maustaste gedrückt halten. Dann kann man die Kontrollleiste mit der Maus an die gewünschte Bildschirmkante verschieben. So sehr wie ich KDE bevorzuge… Aber wirklich aussagekräftig ist “Bildschirmkante” nun wirklich nicht. Vor allem weil es im Kontrollzentrum auch den Punkt “Bildschirmränder” gibt. Dort kann man z. B. einstellen dass wenn man mit dem Mauszeiger in die linke obere Ecke des Desktop fährt der Desktop gesperrt wird. Ober dass ein Fenster maximiert wird, wenn man es an den oberen Rand zieht usw.

Linux | OSBN

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 Programm 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), so dass 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, so dass 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 herunter gefahren 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 weg geklickt 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älliger weise 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, so dass 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