На самом деле я просто хочу автоматически запускать следующую строку кода после загрузки, которая включает гениальную настройку клавиатуры eurkey:
setxkbmap eurkey
После этого руководства, оригинальный пример которого работал без проблем, я сделал следующее безуспешно:
# create systemd service file
$ sudo touch /etc/systemd/system/eurkey.service
$ sudo nano /etc/systemd/system/eurkey.service
[Unit]
After=network.service
[Service]
ExecStart=/usr/local/bin/eurkey.sh
[Install]
WantedBy=default.target
# create script
$ sudo touch /usr/local/bin/eurkey.sh
$ sudo nano /usr/local/bin/eurkey.sh
#!/bin/bash
setxkbmap eurkey
# set permissions
$ sudo chmod 744 /usr/local/bin/eurkey.sh
$ sudo chmod 664 /etc/systemd/system/eurkey.service
# enable service unit
$ sudo systemctl daemon-reload
$ sudo systemctl enable eurkey.service
# reboot
$ sudo reboot
Тем не менее, код не будет выполнен. Что я пропустил? Почему он работает с кодом из руководства, а не с моей собственной строкой кода? Позже я планировал добавить произвольное количество строк (которое я бы назвал скриптом). Это неправильный подход?
Очень похожее руководство я нашел здесь на спросите ubuntu.
Если вы хотите запустить скрипт, когда Gnome запускается, смотрите здесь. Помещение setxkbmap
в .bashrc
не поможет, если X-сервер не запущен (пока), и если вы не запускаете (вручную!) терминал каждый раз после запуска X-сервера. Caveat: Я не пробовал ни одно из "решений", потому что я проверил решение ниже и оно работает:
Если вы редактируете два файла (как суперпользователь - будьте осторожны! ) на вашей системе, вы можете попросить каждого пользователя настроить компоновку для себя и больше никогда об этом не беспокоиться:
sudo nano /usr/share/X11/xkb/rules/evdev.xml
и вставить следующее чуть ниже варианта altgr-intl:
<variant>
<configItem>
<name>eu</name>
<!-- Keyboard indicator for European layouts -->
<shortDescription>eu</shortDescription>
<description>EurKEY (US based layout with European letters)</description>
<languageList>
<iso639Id>cat</iso639Id>
<iso639Id>dan</iso639Id>
<iso639Id>eng</iso639Id>
<iso639Id>est</iso639Id>
<iso639Id>fao</iso639Id>
<iso639Id>fin</iso639Id>
<iso639Id>ger</iso639Id>
<iso639Id>gre</iso639Id>
<iso639Id>gsw</iso639Id>
<iso639Id>ita</iso639Id>
<iso639Id>lav</iso639Id>
<iso639Id>lit</iso639Id>
<iso639Id>nld</iso639Id>
<iso639Id>nor</iso639Id>
<iso639Id>por</iso639Id>
<iso639Id>spa</iso639Id>
<iso639Id>swe</iso639Id>
</languageList>
</configItem>
</variant>
(Я взял это из /usr/share/X11/rules/evdev.extra.xml
и заменил layout
на variant
. Обратите внимание, что французский язык отсутствует: вы не найдете этот вариант, если вы выберете французский язык (см. ниже)). Следующее редактирование:
sudo nano /usr/share/X11/xkb/rules/xorg.lst
и вставка одной строки под altgr-intl:
eurkey us: English (US based layout with European letters)
Последнее, что вам нужно сделать, это перенастроить xkb-данные:
sudo dpkg-reconfigure xkb-data
Теперь пользователь сможет запустить gnome-control-center
(также известный как 'Настройки'), перейти в 'Регион и язык' и добавить раскладку клавиатуры:
Выберите английский (Соединенные Штаты)
и посмотрите на это после того, как вы прокрутите вниз:
Выберите EurKEY и этот пользователь закончит работу, даже когда система будет выключена и перезагружена. Другими словами: setxkbmap eu
больше не нужен!
Возможно, что-то не так со способом интеграции EurKEY. eu setxkbmap setxkbmap работает на моем Ubuntu 20.04, но я не могу найти его нигде в
gnome-control-center
(если это то, что подразумевается под "панелью настройки раскладки клавиатуры" на сайте EurKEY).
На их веб-сайте имеется eurkey.deb
. Заглянув внутрь (ar -x eurkey.deb
и tar xvf control.tar.gz
), мы находим скрипт postinst
, который редактирует некоторые xml файлы в /usr/share/X11/xkb/rules
. Правки отличаются от распределенных, но я использовал их, чтобы посмотреть, как они это делают. Они добавляют раскладку под названием eu
, но я не знаю, как выбрать язык eu
. Опять же, я не эксперт.
Мы разработали альтернативу для altgr-intl
, которая немного лучше подходит для европейских языков, и в процессе мы должны были сделать что-то похожее на для новой раскладки.
Разметку клавиатуры, которая подходит всем, сделать сложно. EurKEY была сделана в Германии и это показывает: португальцы много используют a-tilde и o-tilde, но это не на EurKEY. Мне больше нравится наш новый altgr-weur, но я предвзятый!
Однако код не выполняется. Что мне не хватает?
Есть, но не остается активным: то, что вы сделали, вероятно, будет перезаписано тем, что происходит позже в цепочке systemd. Вам нужно сделать это как можно позже, но это также не сохранится при переключении раскладок, и вам нужно будет повторять это каждый раз, когда вы переключаете клавиатуру.
Вы можете поместить
setxkbmap eurkey
в конец .bashrc
Doing
vim ~/.bashrc
, чтобы иметь рабочий метод, но это также не выдержит переключения клавиатуры.
Если это проблема, опубликованная вами ссылка содержит ответ на то, что необходимо сделать:
Применить макет
Запустить setxkbmap
setxkbmap eurkey
Или выберите EurKEY на панели конфигурации раскладки клавиатуры . EurKEY доступен в списках раскладок на следующих языках
. Эта последняя часть делает его постоянным, а также будет применяться при переключении клавиатуры.