Mittwoch, 12. März 2014

KDE globale Shortcuts für einzelne Anwendungen deaktivieren

Wenn ich an meine Linuxanfänge zurückdenke, dann habe ich schon viele unterschiedliche Möglichkeiten probiert.
Bei den Desktopumgebungen bin ich mittlerweile bei KDE angelangt. Der Weg ist lang...zuerst Gnome 2, Gnome 3, Unity, Cinnamon, Gnome 3 und jetzt KDE. Gleichzeitig noch LXDE und XFCE auf dem Netbook.

Ich war anfangs nie ein großer Fan von KDE, da es mir immer etwas plump und träge vorkam bzw. in Erinnerung habe. Mittlerweile benutze ich KDE seit über einem Monat aktiv und ich finde es super. Unter Gnome habe ich auch einen ausgeprägten Arbeitsworkflow, aber unter KDE habe ich nun auch einen entwickelt. Dabei habe ich viel aus Gnome Zeiten adoptiert z.B. bestimmte Tastenkürzel. Man kann auch einfach alles konfigurieren, wenn es einem nicht passt...ist man nicht gewöhnt, jedenfalls nicht direkt in der GUI.

Entschuldigt das kurze Vorgeplänkel hier zum eigentlichen nützlichen Hinweis. Wenn man eine IDE zum entwickeln benutzt z.B. PyCharm, wie ich im Moment, dann kann es gut passieren, dass sich die Tastenkürzel der IDE mit dem Deskop überschneiden. Das nervt etwas. Damit man aber nicht alle möglichen Kombinationen gegenseitig ausschließen muss, kann man einfach die KDE Tastenkürzel in einem bestimmten Programm deaktivieren...somit hat man kein Problem mehr.

Jetzt kommts...mehr Mausschubenserei einfach auf die Titelzeile des Programms klicken (rechte Maustaste) und den Menüpunkt "weitere Aktionen" --> "spezielle Einstellungen für dieses Programm"

spezielle Einstellungen für dieses Programm

Unter dem Reiter "Erscheinungsbild & Korrekturen" findet man die Option "Globale Kurzbefehle ignorieren".

Erscheinungsbild & Korrekturen


Schon hat man keine Probleme mehr und kann wild drauf "lostippen".

Bis denne

Sonntag, 23. Februar 2014

Desktop-Benachrichtigungen aus Skripten senden

Wenn man sich Skripte für regelmäßige Arbeiten am Rechner erstellt hat, möchte man meist auch gerne eine Benachrichtigung erhalten, ob alles korrekt gelaufen ist.

Ich zum Beispiel verwende das Skript-Toolset "Storebackup" um meine täglichen Backups auszuführen. Das Backup-Skript wird per Cronjob gestartet. Leider ist hier das Problem, dass man gerne einen Status erhalten möchte, ob alles ok ist oder das Backup abgebrochen ist.

Hier kann man die Hilfe von dem Programm "notify-send" in Anspruch nehmen. Erst baut man sich seine Nachricht in der Console zusammen und freut sich über die nette Nachricht im Benachrichtigungsfenster auf dem Deskop. Anschließend wird der Befehl im Skript eingebaut, was aber zu einer Überraschung führt.
In der Console funktioniert doch alles super, aber warum erhalte ich nichts, wenn es per Cron ausgeführt wird. Mit ein bisschen Suchmaschinen-Voodoo findet man dann eine Ursache.
Hier liegt mal wieder ein Problem mit den Environment Variablen vor. Ich bin mit untiefen des Programms nicht vertraut, aber es benötigt den Session-Key (DBUS_SESSION_BUS_ADDRESS) der Desktop-Umgebung.

Das Skript sucht sich die Prozess-ID (pid) der Gnome oder KDE Session und liest dann die entsprechenden Environment Variablen aus dem Proc-Filesystem aus.

Für die komfortable Nutzung verwende ich folgende Bash-Funktion

Funktion:
function do_notification
{
    for pid in $(pgrep gnome-session) $(pgrep kdeinit4); do
        unset COOKIE
        COOKIE="$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ|cut -d= -f2-)"
        GNUSER="$(ps --no-heading -o uname $pid)"

DBUS_SESSION_BUS_ADDRESS="$COOKIE" /usr/bin/notify-send -u $1 "$NOTIFICATIONHEADER" "$2"
    done

    unset COOKIE
}

Ausruf:
1) do_notification normal "storeBackup >>Home<< successfully"
2) do_notification critical "storeBackup >>Home<< failed"

Ich hoffe, dass es dem einen oder anderen hilft, seine Skripte zu verbessern und mehr Komfort zu erhalten.