Как автоматически запускать одну или несколько строк кода после загрузки?

На самом деле я просто хочу автоматически запускать следующую строку кода после загрузки, которая включает гениальную настройку клавиатуры 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.

0
задан 28 March 2021 в 22:08

2 ответа

Если вы хотите запустить скрипт, когда 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 (также известный как 'Настройки'), перейти в 'Регион и язык' и добавить раскладку клавиатуры:

Language selection in gnome-control-center

Выберите английский (Соединенные Штаты) и посмотрите на это после того, как вы прокрутите вниз:

enter image description here

Выберите 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, но я предвзятый!

2
ответ дан 23 April 2021 в 23:29

Однако код не выполняется. Что мне не хватает?

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

Вы можете поместить

setxkbmap eurkey

в конец .bashrc Doing

vim ~/.bashrc 

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

Если это проблема, опубликованная вами ссылка содержит ответ на то, что необходимо сделать:

Применить макет

Запустить setxkbmap

 setxkbmap eurkey 
 

Или выберите EurKEY на панели конфигурации раскладки клавиатуры . EurKEY доступен в списках раскладок на следующих языках

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

0
ответ дан 23 April 2021 в 23:29

Другие вопросы по тегам:

Похожие вопросы: