1

У меня есть несколько приложений для запуска:

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

И, во-вторых, если я удаляю команду sleep из всех команд запуска, а затем помещаю команду отключения Caps Lock вверху списка, она не работает, но другие работают ...

Все команды, если они выполняются в терминале, вне запускаемых приложений, работают нормально, поэтому я не уверен, почему они не работают при загрузке.

ОБНОВИТЬ

Основываясь на ответе @ Xen2050, я адаптировал предложенные им методы в работоспособное решение. Для двух команд запуска я использую эту форму:

bash -c "sleep 20; specific_command"

А остальные я оставил в качестве команд запуска по умолчанию. Это нормально, потому что машина загружается быстрее, а команда отключения Caps Lock работает согласованно.

ОБНОВЛЕНИЕ 2

Провел дополнительное исследование и выяснил, что xkb , вероятно, лучший способ отключить Caps Lock. Поскольку этот вопрос касался запуска приложений, принятый ответ действителен. Но если кто-то еще придет сюда в поисках отключения ключа Caps Lock в Ubuntu 16.04, вот несколько полезных советов:

Я пошел с редактированием /usr/share/X11/xkb/symbols/pc , но я думаю, что использование пользовательских переопределений, вероятно, является правильным способом сделать это (как предложено @quixotic):

Сделайте так, чтобы Терминал распознавал PageUp и PageDown при переназначении на разные ключи

1 ответ1

1

Я думаю, что файлы .desktop не запускают свои команды Exec= в полной / обычной оболочке, поэтому, если вы хотите использовать несколько команд, вам нужно явно запустить оболочку с этими командами. Например, это должно работать:

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

Или в вашем случае:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .