Wie kann ich ein Skript ausführen, das vor meinem Anmeldebildschirm startet?

17

Ich habe meinen Touchscreen kalibriert und festgestellt, dass xinput_calibrator das beste Werkzeug war. Also habe ich es benutzt. Es gibt zwei Optionen (von denen eine nicht funktioniert hat), also bin ich für die zweite hier. Es heißt, ich sollte diesen Befehl "in einem Skript ausführen, das mit Ihrer X-Sitzung beginnt":

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

Also habe ich versucht ~/.xinitrc, ~/.xsessionund was ~/.xsessionrcalles nicht existierte. Also habe ich sie erstellt und der genaue Inhalt war dieser Befehl. Die ersten beiden Dateien haben dazu geführt, dass meine Anmeldungen fehlgeschlagen sind (nachdem ich mich angemeldet habe, kehre ich zum Anmeldebildschirm zurück).

Bei der letzten Datei war die Kalibrierung funktionsfähig, jedoch erst nach dem Anmelden ...

Ich muss diesen Befehl ausführen, bevor der Anmeldedialog angezeigt wird. Ich dachte daran, diesen Befehl am Ende von /etc/X11/xinit/xinitrcohne Ergebnis hinzuzufügen (nichts geändert). Ich habe auch versucht, es am Ende von hinzuzufügen /etc/X11/Xsession.d/40x11-common_xsessionrc(nachdem ich einige der Dateien überprüft hatte), aber das Ergebnis war genau das gleiche wie das Hinzufügen zu ~/.xsessionrc.

Wie kann ich diesen Befehl ausführen, bevor der Anmeldebildschirm angezeigt wird (bevor der Fenstermanager gestartet wird oder bevor die X-Sitzung gestartet wird)?

(Ich verwende Kubuntu mit dem Standard-Fenstermanager, wenn das wichtig ist.)

UPDATE Da ich Kubuntu verwende, ist mein Display Manager kdm. Wie aus der akzeptierten Antwort hervorgeht, habe ich die Datei bearbeitet /etc/kde4/kdm/Xsetupund, wie hier erwähnt , den Befehl vor dem standardmäßig vorhandenen Befehl hinzugefügt. Und es funktioniert wie ein Zauber :)

jadkik94
quelle
4
Welchen Login-Manager verwenden Sie? Für gdm3 können Sie wahrscheinlich /etc/gdm3/Init/displayoder verwenden /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel
Hey, gute Sachen. Ich habe hier eine Frage [ unix.stackexchange.com/questions/172007/… ] gepostet, die als mögliches Duplikat für diese Fragen und Antworten markiert wurde. Leute, ich bin jedoch nicht davon überzeugt, dass es ein Klon ist.
Bitte

Antworten:

13

Alle Dateien , die Sie zu ändern versucht werden lesen , nachdem Sie sich anmelden Des Weiteren. ~/.xinitrcUnd ~/.xsessionsind den vollen Satz von Befehlen , die laufen in einer Sitzung; ~/.xinitrcgelesen wird , wenn Sie laufen xinitoder startxaus einer Textmodus - Eingabeaufforderung, und ~/.xsessionlesen, wenn Sie eine „benutzerdefinierte Sitzung“ laufen von einer grafischen Anmeldeaufforderung (der Name kann variieren).

Sie müssen Ihren Display Manager konfigurieren , das Programm, das die Anmeldeaufforderung anzeigt. Fügen Sie für kdm, den KDE-Anzeigemanager, Ihren Befehl /etc/kde4/kdm/Xsetup(oder /etc/kde3/kdm/Xsetupfür ältere Versionen) hinzu (das ist der Pfad unter Debian, ich habe nicht überprüft, dass Kubuntu denselben Pfad verwendet).

Fügen Sie für gdm (den Gnome-Anzeigemanager) Ihren Befehl hinzu /etc/gdm/Init/Default. Fügen Sie für xdm (den herkömmlichen X-Display-Manager) Ihren Befehl hinzu /etc/X11/xdm/Xsetup.

Gilles 'SO - hör auf böse zu sein'
quelle
Danke für die Erklärung! Ich habe versucht, was Sie vorgeschlagen haben, ohne Erfolg. Ich fand die XsetupAkte (im gleichen Pfad, den Sie erwähnten) und fügte den Befehl hinzu. Die Kalibrierung hat nicht funktioniert, aber ich habe nach dem Neustart durch Hinzufügen echo "w" > /test.logund Überprüfen sichergestellt, dass sie ausgeführt wurde /test.log. Ist es möglich, dass xinputein spezieller "Kontext" benötigt wird oder so ...?
Jadkik94
Ignorieren Sie eigentlich den letzten Kommentar. Ich habe den xinputBefehl in diese Datei umgeleitet , und anscheinend habe ich dem Gerätenamen ein Leerzeichen hinzugefügt, wodurch die Kalibrierung nicht funktioniert hat. Sie waren 100% korrekt :) Nochmals vielen Dank.
Jadkik94
5
Und die Antwort zu vervollständigen - um herauszufinden , was ist Ihr Display - Manager verwendet (nicht mit einer Desktop - Umgebung zu verwechseln ist): cat /etc/X11/default-display-manager.
Nux
Was ist xserverrc? Und die, die drin sind /etc/X11/xinit/xserverrc?
CMCDragonkai
1
@CMCDragonkai Wenn es einen Display Manager gibt, startxwird dieser nicht verwendet. Display - Manager Initialisierungsskripts würde hier nicht relevant sein , da sie vor dem sich der Benutzer anmeldet zulaufen.
Gilles ‚SO- Anschlag, der böse‘
4

Ich schlage vor, dass Sie Ihre eigene Konfigurationsdatei erstellen, ein einfaches Beispiel:

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

Dateiinhalt:

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

Das sollte den Trick machen.

ortang
quelle
-1

Sie könnten versuchen, /etc/rc.local?

.

amarc
quelle
4
Ich befürchtete, das Skript würde ausgeführt, bevor X überhaupt startet (so wie ich es verstanden habe), was das Skript unbrauchbar machen würde ... Wann wird es ausgeführt?
Jadkik94
3
@ jadkik94 du hast recht, das funktioniert nicht, da rc.local keinen Zugriff auf die x-Sitzung hat.
Ulrich Dangel
-1

Wenn Sie OpenSUSE haben, können Sie Ihr Skript nach /etc/init.d kopieren und den Skriptnamen insserv ausführen. insserv aktiviert ein Skript: http://man-wiki.net/index.php/8:insserv .

Gigamegs
quelle
2
Dies wird wahrscheinlich nicht funktionieren, da xinputwahrscheinlich X benötigt wird, das in den Init-Skripten nicht verfügbar / initialisiert ist
Ulrich Dangel