Запускать сценарий оболочки при запуске (Xubuntu 20.04)

Я пытаюсь найти способ автоматизировать запуск сценария оболочки после входа в систему Xubuntu.
Я проверил множество других вопросов и ответов и до сих пор не нашел способа сделать это.

Вот сценарий, который я пытаюсь запустить:

#!/bin/sh

SH_PATH="`dirname \"$0\"`"
xkbcomp ${SH_PATH}/keyboardmap $DISPLAY

Это сценарий, основанный на Linux CapsLock Fixer , который изменяет ключ Caps Lock так, чтобы он вел себя так же, как на платформе Windows, так что его можно использовать для быстрого набора заглавных букв.

Я пробовал создать запись в Сеанс и запуск -> Автозапуск приложения

Session and Startup

Вот что я пробовал:

/home/yooks/Scripts/fix_capslock.sh
sh /home/yooks/Scripts/fix_capslock.sh
sh -c "sh /home/yooks/Scripts/fix_capslock.sh"
sh -c "/home/yooks/Scripts/fix_capslock.sh"

Скрипт отлично работает, когда я запускаю его с терминала по любому пути.
Как проще всего запустить этот сценарий всякий раз, когда я вхожу в Xubuntu?

1
задан 27 April 2021 в 21:34

1 ответ

В зависимости от того, какой DM (Диспетчер отображения) вы используете, будет определяться значение параметра $ DISPLAY. Поскольку ваш сценарий фактически работает без оболочки во время входа в систему, $ DISPLAY не установлен. Чтобы исправить это, вы можете добавить следующие строки под строкой #! / Bin / sh в свой сценарий:

#Get Display Manger
DM=$(/usr/bin/basename $(/bin/cat /etc/X11/default-display-manager))

#Set Display based on DM and login type
case $DM in
    lightdm)
        export DISPLAY=:0;;
    gdm3)
        grep -E "# AutomaticLogin|AutomaticLoginEnable = false" /etc/$DM/*.conf >/dev/null && export DISPLAY=:1 || export DISPLAY=:0;;
    *);;
esac
        

В ходе тестирования я обнаружил, что когда я вхожу в свою систему с помощью LightDM, дисплей всегда было : 0 независимо от того, автоматический вход в систему или нет. Но с GDM3, если у вас есть автоматическая установка входа, это было : 0 , но если у вас нет автоматического входа, это было : 1 . Я запускаю скрипт, который запускает Firefox автоматически в определенное время, и добавляя его для установки $ DISPLAY, Firefox запускается из скрипта без его запуска в терминале в то время.

Надеюсь, это поможет!

1
ответ дан 7 May 2021 в 17:43

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

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