Ubuntu 16.04 启动应用程序出现奇怪行为

Ubuntu 16.04 启动应用程序出现奇怪行为

我有几个启动应用程序:

user@host:~$ ls -l .config/autostart/
. . .
. . . XXX.desktop
. . . YYY.desktop
. . . ZZZ.desktop
. . . setxkbmap.desktop

其中包括禁用 Caps Lock 的命令:

setxkbmap -option caps:none

首先,每当我尝试用 编辑任何这些启动命令时sleep,它们似乎不起作用:

sleep 20; setxkbmap -option caps:none

或者...

sleep 20 && setxkbmap -option caps:none

其次,如果我从所有启动命令中删除睡眠命令,然后将 Caps Lock 禁用命令放在列表顶部,它不起作用,但其他命令起作用......

如果在终端中运行所有命令,在启动应用程序之外,它们都可以正常工作,所以我不确定为什么它们在启动时不起作用。

更新

根据@Xen2050的回答,我把他建议的方法改编成可行的解决方案。对于两个启动命令,我使用以下形式:

bash -c "sleep 20; specific_command"

至于其他命令,我保留为默认启动命令。这样就没问题了,因为机器启动速度更快,而且 Caps Lock 禁用命令也一直有效。

更新2

做了一些额外的研究,发现这xkb可能是禁用 Caps Lock 的最佳方法。由于这个问题是关于启动应用程序的,因此接受的答案是有效的。但如果其他人最终在这里寻找如何在 Ubuntu 16.04 上禁用 Caps Lock 键,这里有一些有用的提示:。

我继续编辑/usr/share/X11/xkb/symbols/pc,但我认为使用用户覆盖可能是正确的方法(正如@quixotic 建议的那样):

使终端在重新映射到不同的键时识别 PageUp 和 PageDown

答案1

我认为 .desktop 文件不会Exec=在完整/常规 shell 中运行其命令,因此如果您想使用多个命令,则需要明确运行包含这些命令的 shell。例如,这些应该可以工作:

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

或者就你的情况而言:

Exec=sh -c "sleep 20; setxkbmap -option caps:none"

相关内容