Як я можу запустити сценарій, який починається перед моїм екраном входу?


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, і, як згадувалося тут, додав команду перед командою, яка є за замовчуванням. І це працює як шарм :)


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

Зміст файлу:

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

Це повинно зробити трюк.


-1

Ви можете спробувати /etc/rc.local?

.


4
Мене хвилювало, що сценарій буде запущений ще до того, як X навіть запуститься (як я зрозумів), що зробить цей сценарій марним ... Коли це запущено?
jadkik94

3
@ jadkik94 ви праві, це не працюватиме, оскільки rc.local не має доступу до сеансу x.
Ульріх Дангель

-1

Коли у вас є OpenSUSE, ви можете скопіювати свій скрипт у /etc/init.d та запустити ім'я скрипта insserv. insserv включає сценарій: http://man-wiki.net/index.php/8:insserv .


2
Це, ймовірно, не спрацює, як xinputпотребує, мабуть, X, який недоступний / ініціалізований у сценаріях init
Ульріх Дангел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.