Ich habe mehrere Startanwendungen:
user@host:~$ ls -l .config/autostart/
. . .
. . . XXX.desktop
. . . YYY.desktop
. . . ZZZ.desktop
. . . setxkbmap.desktop
Dazu gehört ein Befehl zum Deaktivieren der Feststelltaste:
setxkbmap -option caps:none
Erstens sleep
scheinen die folgenden Startbefehle nicht zu funktionieren , wenn ich versuche , sie zu bearbeiten:
sleep 20; setxkbmap -option caps:none
oder...
sleep 20 && setxkbmap -option caps:none
Und zweitens funktioniert es nicht, wenn ich den Befehl sleep aus allen Startbefehlen entferne und dann den Befehl caps lock disable an den Anfang der Liste setze, aber die anderen tun es ...
Alle Befehle, die außerhalb der Startanwendungen im Terminal ausgeführt werden, funktionieren einwandfrei. Ich bin mir also nicht sicher, warum sie beim Booten nicht funktionieren.
AKTUALISIEREN
Basierend auf der Antwort von @ Xen2050 habe ich die von ihm vorgeschlagenen Methoden in eine praktikable Lösung umgewandelt. Für zwei der Startbefehle verwende ich dieses Formular:
bash -c "sleep 20; specific_command"
Und die anderen habe ich als Standardstartbefehle belassen. Dies ist in Ordnung, da der Computer schneller startet und der Befehl zum Deaktivieren der Feststelltaste konsistent funktioniert.
UPDATE 2
Habe einige zusätzliche Nachforschungen angestellt und herausgefunden, dass dies xkb
wahrscheinlich die beste Methode ist, um die Feststelltaste zu deaktivieren. Da es sich bei dieser Frage um Startanwendungen handelt, ist die akzeptierte Antwort gültig. Aber wenn jemand hier auftaucht und nach Möglichkeiten sucht, die Feststelltaste unter Ubuntu 16.04 zu deaktivieren, gibt es hier einige nützliche Tipps:
https://askubuntu.com/questions/82837/how-do-i-make-the-caps-lock-key-a-third-shift-key
https://askubuntu.com/questions/53038/how-do-i-remap-the-caps-lock-key
https://unix.stackexchange.com/questions/90089/remapping-both-caps-lock-and-shiftcaps-lock-in-xkb
Ich habe die bearbeitet /usr/share/X11/xkb/symbols/pc
, aber ich denke, dass die Verwendung von Benutzerüberschreibungen wahrscheinlich der richtige Weg ist, dies zu tun (wie von @quixotic vorgeschlagen):
quelle
Antworten:
Ich denke, .desktop-Dateien führen ihre
Exec=
Befehle nicht in einer vollständigen / regulären Shell aus. Wenn Sie also mehrere Befehle verwenden möchten, müssen Sie explizit eine Shell mit diesen Befehlen ausführen. Zum Beispiel sollten diese funktionieren:Oder in deinem Fall:
quelle
bash -c "sleep 20; specific_command"
. Zwei andere Startbefehle werden jedoch auf ihre "Standardeinstellung" zurückgesetzt, die bei der Installation festgelegt wurde. Und trotzdemsetxkbmap
funktioniert der Befehl immer noch nicht, wenn die anderen densleep
Befehl verwenden (oder in der Shell ausgeführt werden, wie Sie vorgeschlagen haben).env
umwandelt , und die im Grunde die gleiche wie in einem Terminal ist, jedoch ohne TERM = und in ~ / .config / autostart ausgeführt wird, währendset
andere SHELLOPTS & TERM = dumm sind und viele funktionen gibt es nicht. Es könnte versucht werden, stdout & stderr in Dateien umzuleiten, wenn Meldungen hilfreich sein könnten oder wenn das Ausführen vonbash -c "stuff"
in einem Terminal sehr ähnliche Einstellungen aufweist und die Ausgabe leichter zu sehen ist.sleep
diesetxkbmap caps:none
bis nach dem andere Befehle. Dies ist jedoch schlecht, da die Feststelltaste beim Anmelden funktionsfähig ist (scheint Sekunden nach dem Anmelden deaktiviert zu sein, z. B. Anmeldeshell). Dies ist einer der Gründe, warum ich sie überhaupt deaktivieren möchte.