Xfce4: Zuweisen eigener Shortcuts

Ich habe eine neue Tastatur angeschlossen, mit der die bisherigen Funktionstasten für die Tonsteuerung (lauter, leiser etc.) nicht mehr funktionierte, weil das Layout anders war. Um das anzupassen, gibt es in Xfce (hier Xububtu 22.04) in den Einstellungen den Punkt „Tastatur“ und darin den Tab „Tastenkürzel für Anwendungen“. Hiermit weist man einem beliebigen Befehl eine nahezu beliebige Taste (Shortcut) zu. Bedingung ist natürlich, dass diese Taste noch keine andere Funktion hat und natürlich auch nicht nur ein einfacher Buchstabe ist. Man wird aber auf Konflikte hingewiesen oder kann solche Kombinationen gar nicht erst eingeben.

Infrage kommen damit ungenutzte Kombinationen mit Ctrl (Strg), Shift (Umsch), Alt, AltGr und besonders der üblicherweise vorhandenen Win(dows)-Taste oder ihrem Equivalent auf Mac-Tastaturen.

Es ist also möglich, zum Beispiel mit „Win + F“ und dem Befehl „firefox“ den Browser zu starten. Das ist trivial. Natürlich gilt das auch für alle möglichen anderen Funktionalitäten.

Was aber, wenn eine Systemfunktion wie „Lautstärke erhöhen“ angeschoben werden soll? Die wird bei einer Standard-Tastatur uber den symbolischen Keycode „XF86AudioRaiseVolume“ bewirkt, was aber nicht als Befehl dargestellt werden kann.

Abhilfe schafft hier eine Hilfsfunktion namens xdotool, die normalerweise nicht als Standard installiert ist. Das kann man aber leicht nachholen mit

sudo apt install xdotool

Dann kann man in der obigen Tastaturfunktion folgendes zum Beispiel für alle Lautstärkefunktionen folgendes schreiben (die Bezeichnungen dürften sich selbst erklären, oder?):

xdotool key XF86AudioPlay
xdotool key XF86AudioNext
xdotool key XF86AudioPause
xdotool key XF86AudioPlay
xdotool key XF86AudioPrev

xdotool key XF86AudioRaiseVolume
xdotool key XF86AudioLowerVolume
xdotool key XF86AudioMute
xdotool key XF86AudioMicMute

Die verknüpften Tasten findet man auf allen Tastaturen mit Multimediatasten oder man muss sich eben sinnvolle, merkbare Kombinationen ausdenken.

Alle Multimedia-Keyboardsymbole:
https://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols

Idee für diesen Beitrag:
https://wiki.archlinux.org/title/Xbindkeys#Audio_control

Dropbox Icon kaputt bei Xubuntu?

Dropbox in Xubuntu – nicht kaputt, aber unbedienbar

Achtung: Dieser Beitrag ist veraltet! Ein im September 2018 neu gefundener Lösungsweg wird hier beschrieben.


Dropbox Logo

Seit Wochen ärgert es mich, dass das Dropbox-Icon in der Taskleiste von Xubuntu (bei mir 14.04, laut Recherchen tritt das quer durch alle möglichen Distributionen und Versionen auf) kaputt ist derart, dass nur dieses „Unbekanntes-Symbol“-Icon angezeigt wird, das auch nicht bedienbar ist. Die Dropbox läuft, der Ordner ist da und wird synchronisiert. Merkwürdigerweise läuft alles, wenn man es in einer root-Shell startet, wobei sie beim ersten mal initialisiert wird und dann ordentlich das Symbol zeigt. Das wäre auch ein Workaround, wobei allerdings die synchronisierten Ordner und Files root gehören.

Ich habe die Dropbox nach dieser Anleitung installiert. Dabei im Abschnitt Xubuntu und dem Folgenden nachlesen: Das Nautilus-Plugin (was trotzdem mit installiert wird) nutze ich mangels Nautilus nicht, denn Xfce verwendet Thunar. Auf ein Plugin dafür wir verwiesen.

Nun zum eigentlichen Problem. Hier die kurze Zusammenfassung des Artikels, der untern verlinkt ist. Achtung, entscheidend sind die UPDATES unten! Bitte nicht alle Schritte nachmachen, die Lösung kommt zum Schluss.

Zunächst kann man in einer Shell prüfen, ob folgendes funktioniert:

dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start

Wenn ja, dann folgendes: Den Autostart der Dropbox selbst ausschalten:

dropbox autostart n

Dann den Autostart-Eintrag in ~/.config/autostart umkopieren (dropbox.desktop kann man nicht löschen, das wird immer wieder neu erzeugt!):

cp ~/.config/autostart/dropbox.desktop ~/.config/autostart/start_dropbox.desktop

Dann den Eintrag start_dropbox.desktop bearbeiten:

[Desktop Entry]
Name=Dropbox
GenericName=File Synchronizer
Comment=Sync your files across computers and to the web
#Exec=dropbox start -i
Exec=env DBUS_SESSION_BUS_ADDRESS="" dropbox start -i
Terminal=false
Type=Application
Icon=dropbox
Categories=Network;FileTransfer;
StartupNotify=false

Als letztes in „Einstellungen > Sitzung und Startverhalten > autom. gestartete Anwendungen“ den unbenutzten Eintrag ent-haken (da steht nur „dropbox start -i“ drin) und den zweiten anhaken. Ausloggen, einloggen, fertig.

Kommentare und Hinweise auf andere Lösungen sind ausdrücklich erwünscht!

Quelle: DB Icon corrupted on Xubuntu 15.10

Update 1

Ich schrieb, dass man den ursprünglichen Eintrag in der Autostart-Liste deaktivieren muss und auch, dass man den Autostart durch „dropbox autostart n“ unterbinden könne. Beides reicht offenbar nicht, die Dropbox ist eigensinnig. Sobald ihr Icon in der Taskleiste da ist, muss man rechtsmäusig draufklicken und Einstellungen wählen. Dort muss der Eintrag „Dropbox beim Systemstart starten“ deaktiviert werden. Ansonsten versucht sie bei nächste Hochfahren doch wieder 2x zu starten, was zu einer Fehlermeldung führt.

dropbox

Update 2:

Es hat 2 Tage funktioniert… Ich habe nun zunächst alles zur Dropbox über Synaptic deinstalliert und dann die Dropbox zu Fuß neu installiert:

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

Starten lässt sie sich nun mittels

env DBUS_SESSION_BUS_ADDRESS="" ~/.dropbox-dist/dropboxd

Wenn ich das händisch aufrufe, funktioniert es mit Symbol – im Autostart noch nicht. Irgendwo habe ich mal gelesen, dass eine gewisse Startverzögerung sinnvoll sei, damit der Desktop schon fertig ist. Um das für den Autostart nutzen zu können, habe ich ein Script ~/bin/dropbox-autostart erzeugt (chmod +x nicht vergessen!) und trage das als Startprogramm ein:

#!/bin/bash

# irgendwer startet die Dropbox
# also erstmal totmachen nach einer Weile
sh -c "sleep 5; pkill dropbox;sleep 5; env DBUS_SESSION_BUS_ADDRESS='' ~/.dropbox-dist/dropboxd"

Irgendeiner startet die Dropbox direkt beim Hochfahren ohne mein Zutun, deswegen muss ich sie erstmal killen und dann mit der env-Variable neu starten. Das ist irgendwie „overkill“, scheint aber zu funktionieren.