Доброго времени суток!
Имеется потребность в использовании более 2-х раскладок.
Решение нашел следующее:
setxkbmap us,ru,ua -option grp:caps_toggle
Всё работает, но проблема в том, что после перезагрузки приходится настраивать заново.
Пробовал добавлять задание в cron (crontab -e: как от имени root, так и от имени обычного пользователя):
вариант 1:
@reboot setxkbmap us,ru,ua -option grp:caps_toggle
вариант 2:
@reboot "setxkbmap us,ru,ua -option grp:caps_toggle"
вариант 3:
@reboot root setxkbmap us,ru,ua -option grp:caps_toggle
вариант 4:
@reboot root "setxkbmap us,ru,ua -option grp:caps_toggle"
вариант 5: пробелы между полями заменены символами табуляции
вариант 6:
редактирование файла /etc/crontab - добавлена строка
@reboot setxkbmap us,ru,ua -option grp:caps_toggle
Ни один из вариантов не помог - после перезагрузки набор доступных раскладок оказывается таким же, как и сразу после установки ОС.
cron запускается - проверено с помощью service cron status
Пробовал добавлять другие задания в крон (@reboot) - тоже не выполняются.
Сгенерированные в системе локали:
ru_RU.utf8
en_US.utf8
uk_UA.utf8
locale -a почему-то выводит вообще полный список локалей, которые только можно установить (а не список сгенерированных).
Вывод locale:
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Возможно, проблема в том, что, когда cron запускает команду на выполнение, еще не запущено что-то, что нужно для ее корректного выполнения (например, тот же сервер X11). Но, если в отношении setxkbmap такие рассуждения еще можно развивать, то чего не хватает тому же apache2, который также пытался добавить в автозапуск через cron (при загрузке системы apache2 сам не стартует), - не понятно.
Можно, конечно, лезть в дебри скриптов загрузки (/etc/init.d), но должно бы и через cron работать, по идее.
UPD: В тестовых целях добавлял в крон запись вида
@reboot setxkbmap us,ru,ua -option grp:caps_toggle >> /home/username/setxkbmap.log
Файл создается, но пустой. Т.е., команда таки выполняется, и, по всей видимости, без ошибок.