Как я могу запустить скрипт, который запускается перед моим экраном входа?

17

Я калибровал свой сенсорный экран и увидел, что лучшим инструментом вокруг был xinput_calibrator. Так что я использовал это. У него есть два варианта (один из которых не работает), поэтому я здесь для второго. Он говорит, что я должен выполнить эту команду "в сценарии, который начинается с вашего сеанса X":

xinput set-int-prop "3M 3M USB Touchscreen - EX II" "Evdev Axis Calibration" 32 14410 2146 14574 2115

Так что я попробовал ~/.xinitrc, ~/.xsessionи ~/.xsessionrc, все из которых не существовало. Поэтому я создал их, и точное содержание было этой командой. Первые два файла сделали мои входы неудачными (после входа в систему я возвращаюсь к экрану входа).

С последним файлом калибровка работала, но только после входа в систему ...

Мне нужно, чтобы эта команда запускалась до того, как появится диалог входа в систему. Я думал о добавлении этой команды в конец /etc/X11/xinit/xinitrcбез результата (ничего не изменилось). Кроме того, я попытался добавить его в конец /etc/X11/Xsession.d/40x11-common_xsessionrc(после проверки некоторых файлов), но результат был точно таким же, как и при добавлении ~/.xsessionrc.

Как я могу выполнить эту команду до того, как отобразится экран входа в систему (перед запуском оконного менеджера или перед началом сеанса X)?

(Я запускаю Kubuntu с оконным менеджером по умолчанию, если это имеет значение)

ОБНОВЛЕНИЕ Поскольку я использую Kubuntu, мой менеджер отображения - kdm. Как подсказывает общепринятый ответ, я редактировал файл /etc/kde4/kdm/Xsetup, и , как упоминалось здесь я добавил команду перед командой, которая есть по умолчанию. И это работает как шарм :)

jadkik94
источник
4
Какой менеджер входа вы используете? Для gdm3 вы, вероятно, можете использовать /etc/gdm3/Init/displayили /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ульрих
Эй, хорошие вещи. Я разместил здесь вопрос [ unix.stackexchange.com/questions/172007/…, который был помечен как возможный дубликат этого вопроса и ответов . Однако, ребята, я не уверен, что это клон. Пожалуйста, посмотрите мой вопрос и помогите мне :)
kaiwan

Ответы:

13

Все файлы , которые вы пытались изменить считывают после войти Кроме того,. ~/.xinitrcИ ~/.xsessionявляются полным набором команд , которые выполняются в сеансе; ~/.xinitrcчитается, если вы запускаете xinitили startxиз приглашения в текстовом режиме, и ~/.xsessionчитается, если вы запускаете «пользовательский сеанс» (имя может отличаться) из графического приглашения на вход в систему.

Вам необходимо настроить менеджер дисплеев , программу, которая отображает приглашение на вход в систему. Для kdm, диспетчера отображения KDE, добавьте свою команду /etc/kde4/kdm/Xsetup(или /etc/kde3/kdm/Xsetupдля более старых версий) (это путь в Debian, я не проверял, использует ли Kubuntu этот же путь).

Для gdm (диспетчера отображения Gnome) добавьте свою команду в /etc/gdm/Init/Default. Для xdm (традиционный менеджер отображения X) добавьте свою команду в /etc/X11/xdm/Xsetup.

Жиль "ТАК - перестань быть злым"
источник
Спасибо за объяснение! Я попробовал то, что вы предложили, но безуспешно. Я нашел Xsetupфайл (по тому же пути, который вы упомянули) и добавил команду. Калибровка не сработала, но я удостоверился, что она была выполнена, добавив echo "w" > /test.logи проверив /test.log, существует ли после перезагрузки. Возможно ли, что xinputтребуется особый "контекст" или что-то ...?
jadkik94
На самом деле, не обращайте внимания на последний комментарий. Я перенаправил xinputкоманду в этот файл, и, кажется, я добавил пробел к имени устройства, что сделало калибровку не работающей. Вы были на 100% правы :) Еще раз спасибо.
jadkik94
5
И только чтобы завершить ответ - чтобы узнать, что ваш менеджер дисплея (не следует путать с окружением рабочего стола) Использование: cat /etc/X11/default-display-manager.
Nux
Как насчет xserverrc? И те, которые в /etc/X11/xinit/xserverrc?
CMCDragonkai
1
@CMCDragonkai Если есть менеджер дисплеев, startxне используется. Сценарии инициализации менеджера Дисплей не будут уместны здесь , так как они работают до входа пользователя в системе .
Жиля SO- перестать быть злым »
4

Я предлагаю вам создать свой собственный файл конфигурации, простой пример:

/usr/lib/X11/xorg.conf.d/20-calibration.conf

Filecontent:

Section "InputClass"
         Identifier "Calibration"
         MatchProduct "3M 3M USB Touchscreen - EX II"
         Option "Calibration" "14410 2146 14574 2115"
EndSection

Это должно делать свое дело.

ortang
источник
-1

Вы могли бы попробовать /etc/rc.local?

,

AMARC
источник
4
Я был обеспокоен тем, что сценарий будет запущен до того, как X даже запустится (как я понял), что сделает этот сценарий бесполезным ... Когда он запускается?
jadkik94
3
@ jadkik94 Вы правы, это не сработает, так как rc.local не имеет доступа к сеансу x.
Ульрих Дангел
-1

Если у вас есть OpenSUSE, вы можете скопировать ваш скрипт в /etc/init.d и запустить имя скрипта insserv. insserv включает скрипт: http://man-wiki.net/index.php/8:insserv .

Gigamegs
источник
2
Это, вероятно, не сработает, поскольку, xinputвозможно, требуется X, который не доступен / не инициализирован в сценариях инициализации
Ульрих Дангел,