Merkwürdiges Verhalten bei Ubuntu 16.04-Startanwendungen

1

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 sleepscheinen 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 xkbwahrscheinlich 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:

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):

Ermöglichen Sie Terminal, PageUp und PageDown zu erkennen, wenn sie unterschiedlichen Schlüsseln zugeordnet werden

nicorellius
quelle
1
GNOME übernimmt gerne selbst xkb-Einstellungen, daher müssen Sie entweder GNOME davon überzeugen, Ihre Einstellungen zu verwenden, oder GNOME davon überzeugen, die Tastatureinstellungen in Ruhe zu lassen . Zum Anpassen von xkb-Layouts oder -Optionen ist es besser , Benutzerdateien zu erstellen, als Systemdateien zu ändern .
Quixotic
@quixotic Danke für die Ressourcen. Ich werde das untersuchen.
Nicorellius

Antworten:

1

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:

Exec=sh -c "sleep 5; notify-send test-delay"

Oder in deinem Fall:

Exec=sh -c "sleep 20; setxkbmap -option caps:none"
Xen2050
quelle
Danke für die Antwort und die Tipps ... Ich habe es versucht und es scheint, als würde einer meiner Startbefehle mit dieser Methode funktionieren, aber mit einer kleinen Ausnahme. Ich verwende: bash -c "sleep 20; specific_command". Zwei andere Startbefehle werden jedoch auf ihre "Standardeinstellung" zurückgesetzt, die bei der Installation festgelegt wurde. Und trotzdem setxkbmapfunktioniert der Befehl immer noch nicht, wenn die anderen den sleepBefehl verwenden (oder in der Shell ausgeführt werden, wie Sie vorgeschlagen haben).
Nicorellius
Hmm, vielleicht fehlen ein paar Einstellungen oder das falsche Passwort? Ich habe versucht, eine .desktop-Datei zu erstellen, die einige Befehle in bash in eine Datei envumwandelt , und die im Grunde die gleiche wie in einem Terminal ist, jedoch ohne TERM = und in ~ / .config / autostart ausgeführt wird, während setandere 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 von bash -c "stuff"in einem Terminal sehr ähnliche Einstellungen aufweist und die Ausgabe leichter zu sehen ist.
Xen2050
1
PS: Für "setxkbmap caps: none" sind einige Schritte zum Löschen und Zurücksetzen erforderlich, um die Blockierung wieder zu beheben. Ich verwende setxkbmap nicht regelmäßig, daher bin ich mir nicht sicher, warum dies nicht funktioniert. Meinten Sie auch, dass die beiden anderen Startbefehle die neuen Einstellungen / die neue Exec = -Zeile nicht beibehalten? Ich dachte, Sie meinen, sie würden mit den Standardeinstellungen ausgeführt, aber wenn die .desktop-Datei nicht ordnungsgemäß gespeichert wird, versuchen Sie, sie zu bearbeiten, während Sie bei einem anderen Konto angemeldet sind, selbst bei einer Live-ISO usw., einige meiner Einstellungen bleiben nicht "geändert", wenn ich
bin
Danke @ Xen2050 für die zusätzlichen Informationen. Womit deaktivieren Sie die Feststelltaste? Ich denke, Sie haben im Allgemeinen Recht, da nach ein paar Neustarts, als ich dachte, die Dinge funktionierten, meine verdammte Feststelltaste aufleuchtete ... Derzeit ist die einzige reproduzierbare Möglichkeit, die ich bewerkstelligt habe, sleepdie setxkbmap caps:nonebis 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.
Nicorellius
Meine Feststelltaste startet "aus" und ich tue nichts Besonderes, um sie zu deaktivieren. Eigentlich musste ich die Manpage lesen und eine Weile fummeln, damit meine Feststelltaste wieder funktioniert, nachdem ich den Befehl "caps: none" ohne eingefügt habe Ich weiß wirklich, was es tun würde (es sah sicher genug aus ;-) Vielleicht möchten Sie den Befehl früher ausführen, bevor Sie sich anmelden.
Auf