Jak mogę uruchomić skrypt, który zaczyna się przed ekranem logowania?


17

Kalibrowałem ekran dotykowy i zobaczyłem, że najlepszym narzędziem w okolicy jest xinput_calibrator. Więc użyłem tego. Ma dwie opcje (z których jedna nie działała), więc jestem tu po drugą. Mówi, że powinienem wykonać to polecenie „w skrypcie rozpoczynającym się od sesji X”:

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

Tak próbowałem ~/.xinitrc, ~/.xsessioni ~/.xsessionrc, z których nie istnieją. Więc stworzyłem je, a dokładną treścią było to polecenie. Pierwsze dwa pliki spowodowały błąd logowania (po zalogowaniu wracam do ekranu logowania).

W ostatnim pliku kalibracja działała, ale dopiero po zalogowaniu ...

Muszę uruchomić to polecenie, zanim pojawi się okno dialogowe logowania. Myślałem o dodaniu tego polecenia na końcu /etc/X11/xinit/xinitrcbez rezultatu (nic się nie zmieniło). Próbowałem również dodać go na końcu /etc/X11/Xsession.d/40x11-common_xsessionrc(po sprawdzeniu niektórych plików), ale wynik był dokładnie taki sam jak dodanie ~/.xsessionrc.

Jak mogę uruchomić to polecenie przed wyświetleniem ekranu logowania (czy to przed uruchomieniem menedżera okien, czy przed rozpoczęciem sesji X)?

(Używam Kubuntu z domyślnym menedżerem okien, jeśli to ma znaczenie)

AKTUALIZACJA Ponieważ korzystam z Kubuntu, moim menedżerem wyświetlania jest kdm. Jak sugeruje zaakceptowana odpowiedź, edytowałem plik /etc/kde4/kdm/Xsetupi jak wspomniano tutaj , dodałem polecenie przed poleceniem, które jest tam domyślnie. I działa jak urok :)


4
Jakiego menedżera logowania używasz? W przypadku gdm3 prawdopodobnie możesz użyć /etc/gdm3/Init/displaylub /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel

Hej, dobre rzeczy. Wysłałem tutaj pytanie [ unix.stackexchange.com/questions/172007/..., które zostało oznaczone jako możliwe duplikat tego pytania i odpowiedzi. Jednak ludzie, nie jestem przekonany, że to klon. Pl też zobacz moje pytanie i pomóż mi :)
kaiwan

Odpowiedzi:


13

Wszystkie pliki Próbowano zmiany są odczytywane po zalogowaniu Ponadto, ~/.xinitrci ~/.xsessionto pełny zestaw poleceń, które są uruchamiane w sesji; ~/.xinitrcjest czytany, jeśli uruchomisz xinitlub startxz monitu w trybie tekstowym, i ~/.xsessionjest czytany, jeśli uruchomisz „sesję niestandardową” (nazwa może się różnić) od graficznego monitu o zalogowanie.

Musisz skonfigurować menedżera wyświetlania , program, który wyświetla monit o zalogowanie. W przypadku kdm, menedżera wyświetlania KDE, dodaj swoje polecenie do /etc/kde4/kdm/Xsetup(lub /etc/kde3/kdm/Xsetupstarszych wersji) (taka jest ścieżka w Debianie, nie sprawdziłem, czy Kubuntu używa tej samej ścieżki).

W przypadku gdm (menedżer wyświetlania Gnome) dodaj swoje polecenie do /etc/gdm/Init/Default. W przypadku xdm (tradycyjny menedżer wyświetlania X) dodaj swoje polecenie do /etc/X11/xdm/Xsetup.


Dziękuję za wyjaśnienie! Próbowałem tego, co zasugerowałeś, bez powodzenia. Znalazłem Xsetupplik (w tej samej ścieżce, o której wspomniałeś) i dodałem polecenie. Kalibracja nie działała, ale upewniłem się, że została wykonana, dodając echo "w" > /test.logi weryfikacja /test.logistniała po ponownym uruchomieniu. Czy to możliwe, że xinputwymaga specjalnego „kontekstu” czy czegoś…?
jadkik94,

Właściwie zignoruj ​​ostatni komentarz. Przekierowałem xinputpolecenie do tego pliku i wydaje się, że dodałem spację do nazwy urządzenia, co spowodowało, że kalibracja nie działa. Miałeś 100% racji :) Jeszcze raz dziękuję.
jadkik94,

5
I tak, aby zakończyć odpowiedź - aby dowiedzieć się, jaki jest twój menedżer wyświetlania (nie mylić ze środowiska graficznego) zastosowanie: cat /etc/X11/default-display-manager.
Nux

Co xserverrc? A te, które są w /etc/X11/xinit/xserverrc?
CMCDragonkai

1
@CMCDragonkai Jeśli istnieje menedżer wyświetlania, startxnie jest używany. Skrypty inicjalizacji menedżera wyświetlania nie byłyby tutaj istotne, ponieważ uruchamiane są przed zalogowaniem się użytkownika.
Gilles „SO - przestań być zły”

4

Sugeruję utworzenie własnego pliku konfiguracyjnego, prosty przykład:

/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

To powinno wystarczyć.


-1

Możesz spróbować /etc/rc.local?

.


4
Martwiłem się, że skrypt uruchomi się, zanim X się uruchomi (tak jak go rozumiem), co sprawi, że skrypt będzie bezużyteczny ... Kiedy to uruchomi się?
jadkik94,

3
@ jadkik94 masz rację, to nie zadziała, ponieważ rc.local nie ma dostępu do sesji x.
Ulrich Dangel

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.