私はいくつかのスタートアップアプリケーションを持っています:
user@Host:~$ ls -l .config/autostart/
. . .
. . . XXX.desktop
. . . YYY.desktop
. . . ZZZ.desktop
. . . setxkbmap.desktop
これらの中には、CapsLockを無効にするコマンドがあります。
setxkbmap -option caps:none
まず、これらの起動コマンドのいずれかをsleep
で編集しようとすると、機能しないようです。
sleep 20; setxkbmap -option caps:none
または...
sleep 20 && setxkbmap -option caps:none
次に、すべての起動コマンドからsleepコマンドを削除し、Caps Lockの無効化コマンドをリストの一番上に置くと、機能しませんが、他のコマンドは機能します...
スタートアップアプリケーションの外部のターミナルで実行された場合、すべてのコマンドは正常に機能するため、起動時に機能しない理由がわかりません。
[〜#〜]更新[〜#〜]
@ Xen2050の回答に基づいて、私は彼が提案した方法を実行可能なソリューションに適合させました。 2つの起動コマンドには、次のフォームを使用しています。
bash -c "sleep 20; specific_command"
そして他のものは、私はデフォルトの起動コマンドとして残しました。マシンの起動が速く、Caps Lockの無効化コマンドが一貫して機能しているため、これは問題ありません。
UPDATE 2
追加の調査を行ったところ、CapsLockを無効にするにはxkb
がおそらく最良の方法であることがわかりました。この質問はスタートアップアプリケーションに関するものだったので、受け入れられた答えは有効です。しかし、Ubuntu16.04でCapsLockキーを無効にする方法を探している人が他にいる場合は、次のヒントを参考にしてください。
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
/usr/share/X11/xkb/symbols/pc
を編集しましたが、ユーザーオーバーライドを使用するのがおそらく正しい方法だと思います(@quixoticが提案したように):
.desktopファイルは完全/通常のシェルでExec=
コマンドを実行しないと思います。したがって、複数のコマンドを使用する場合は、それらのコマンドでシェルを明示的に実行する必要があります。たとえば、次のように機能するはずです。
Exec=sh -c "sleep 5; notify-send test-delay"
またはあなたの場合:
Exec=sh -c "sleep 20; setxkbmap -option caps:none"