Запустить скрипт при запуске X11

У меня была проблема с Caps, и у меня есть скрипт, чтобы это исправить. К сожалению, этот скрипт работает до перезагрузки:

# Fix caps
xkbcomp -xkb "$DISPLAY" - | sed 's#key <CAPS>.*#key <CAPS> {\
    repeat=no,\
    type[group1]="ALPHABETIC",\
    symbols[group1]=[ Caps_Lock, Caps_Lock],\
    actions[group1]=[ LockMods(modifiers=Lock),\
    Private(type=3,data[0]=1,data[1]=3,data[2]=3)]\
};\
#' | xkbcomp -w 0 - "$DISPLAY"
exit 0

Я бы просто добавил его в автозагрузку приложений, но я бы хотел запустить его при запуске LightDM или даже при запуске X11. Есть ли способ запустить этот скрипт при запуске X11? Я использую Xubuntu 16.04.2.

Благодарю.

1 ответ

Решение

Попробуйте следующее:

  1. Поместите ваш скрипт в системный каталог, такой как /usr/local/bin, с соответствующим заголовком

    #!/bin/sh
    
    # Fix caps
    /usr/bin/xkbcomp -xkb "$DISPLAY" - | /bin/sed 's#key <CAPS>.*#key <CAPS> {\
        repeat=no,\
        type[group1]="ALPHABETIC",\
        symbols[group1]=[ Caps_Lock, Caps_Lock],\
        actions[group1]=[ LockMods(modifiers=Lock),\
        Private(type=3,data[0]=1,data[1]=3,data[2]=3)]\
    };\
    #' | xkbcomp -w 0 - "$DISPLAY"
    exit 0
    
  2. Сделайте его исполняемым, например sudo chmod +x /usr/local/bin/fix-caps.sh

  3. Создайте пользовательский файл конфигурации в /etc/lightdm/lightdm.conf.d, Используйте имя, такое как 99-local-settings.conf, (The 99 Префикс означает, что он будет запущен после стандартных сценариев установки, представленных в /usr/share/lightdm/lightdm.conf.d.)

    Добавьте местоположение вашего скрипта как display-setup-script в [SeatDefaults] раздел:

    [SeatDefaults]
    display-setup-script = /usr/local/bin/fix-caps.sh
    

display-setup-script должен быть запущен после запуска X-сервера, но перед запуском любого приветствующего - см. LightDM: Добавление системных хуков.

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