Нечетное поведение при запуске приложений Ubuntu 16.04

1181
nicorellius

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

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
GNOME любит принимать настройки xkb самостоятельно, поэтому вам нужно либо [убедить GNOME использовать ваши настройки] (http://unix.stackexchange.com/questions/66624/where-is-xkb-getting-its-configuration ) или [убедить GNOME оставить настройки клавиатуры в покое] (http://askubuntu.com/a/582498). для настройки макетов или параметров xkb лучше [создавать пользовательские файлы, чем изменять системные файлы] (http://superuser.com/questions/1133476/make-terminal-recognize-pageup-and-pagedown-when-remapped-to- различные клавиши / 1168603 # 1168603). quixotic 7 лет назад 1
@quixotic Спасибо за ресурсы. Я посмотрю на это. nicorellius 7 лет назад 0

1 ответ на вопрос

1
Xen2050

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

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

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

Exec=sh -c "sleep 20; setxkbmap -option caps:none" 
Спасибо за ответ и советы ... Я попробовал это, и, похоже, одна из моих команд запуска работает с этим методом, но с небольшим исключением. Я использую: `bash -c" sleep 20; specific_command "`. Однако две другие команды запуска возвращаются к своим «значениям по умолчанию», которые были установлены при установке. И, тем не менее, команда `setxkbmap` по-прежнему не работает, если другие используют команду` sleep` (или выполняются в оболочке, как вы предложили). nicorellius 7 лет назад 0
Хм, может там какие-то пропущенные настройки или неправильный pwd? Я попробовал файл .desktop, который выводит некоторые команды в bash на файл, и `env` в основном такой же, как в терминале, но без TERM =, и он запускается в ~ / .config / autostart, тогда как` set` имеет разные SHELLOPTS & TERM = тупой и много функций там нет. Можно попытаться перенаправить stdout & stderr в файлы, если есть какие-либо сообщения, которые могут быть полезны, или запуск `bash -c" stuff "` в терминале имеет очень похожие настройки и легче видеть вывод. Xen2050 7 лет назад 0
PS что "setxkbmap caps: none" требует некоторой очистки и переустановки работы, чтобы снова исправить capslock, я не использую setxkbmap регулярно, поэтому я не уверен, почему это не сработает. Также вы имели в виду, что две другие команды запуска не сохраняют новые настройки / новую строку Exec =? Я думал, вы имеете в виду, что они работают с настройками по умолчанию, но если файл .desktop не сохраняется должным образом, попробуйте отредактировать его, войдя в другую учетную запись, даже живую iso, и т. Д., Некоторые из моих настроек не «остаются неизменными», если залогинился, особенно настройки рабочего стола Xen2050 7 лет назад 1
Спасибо @ Xen2050 за дополнительную информацию. Что вы используете, чтобы отключить Caps Lock? Я думаю, что вы в целом правы, так как после пары перезагрузок, когда я подумал, что все работает, я вижу, что моя проклятая клавиша Caps Lock загорелась ... В настоящее время единственный воспроизводимый способ, которым я достиг чего-то работающего, - это "спать" `setxkbmap caps: none` до тех пор, пока не будут выполнены другие команды. Но это плохо, так как клавиша Caps Lock работает, когда я вхожу в систему (кажется, что она отключена через несколько секунд после входа, например, в оболочке входа в систему), что является одной из причин, почему я хочу отключить ее в первую очередь. nicorellius 7 лет назад 0
Моя блокировка заглавных букв начинается "выключено", и я не делаю ничего особенного, чтобы отключить ее, на самом деле мне пришлось некоторое время прочитать страницу руководства и поковыряться, чтобы снова заработала кнопка блокировки заглавных букв после того, как я вставил команду "caps: none" без действительно зная, что он будет делать (это выглядело достаточно безопасно ;-) Возможно, вы захотите запустить команду раньше, перед тем как войти в систему, у этого Q есть несколько способов запустить вещи при запуске https://askubuntu.com/questions/228304/ как-ду-я-запуск-а-скрипт-на-запуска Xen2050 7 лет назад 0