Comment exécuter un script qui démarre avant mon écran de connexion?

17

J'étalonnais mon écran tactile et j'ai vu que le meilleur outil était xinput_calibrator. Je l'ai donc utilisé. Il a deux options (dont l'une n'a pas fonctionné), donc je suis ici pour la seconde. Il dit que je devrais exécuter cette commande "dans un script qui commence avec votre session X":

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

J'ai donc essayé ~/.xinitrc, ~/.xsessionet ~/.xsessionrctout cela n'existait pas. Je les ai donc créés et le contenu exact était cette commande. Les deux premiers fichiers ont fait échouer mes connexions (après ma connexion, je reviens à l'écran de connexion).

Avec le dernier fichier, l'étalonnage était fonctionnel, mais seulement après la connexion ...

J'ai besoin que cette commande s'exécute avant que la boîte de dialogue de connexion ne s'affiche. J'ai pensé à ajouter cette commande à la fin /etc/X11/xinit/xinitrcsans résultat (rien n'a changé). En outre, j'ai essayé de l'ajouter à la fin de /etc/X11/Xsession.d/40x11-common_xsessionrc(après avoir inspecté certains fichiers), mais le résultat était exactement le même que celui ajouté à ~/.xsessionrc.

Comment puis-je exécuter cette commande avant l'affichage de l'écran de connexion (est-ce avant le démarrage du gestionnaire de fenêtres ou avant le démarrage de la session X)?

(J'utilise Kubuntu avec le gestionnaire de fenêtres par défaut, si cela importe)

MISE À JOUR Comme j'utilise Kubuntu, mon gestionnaire d'affichage est kdm. Comme le suggère la réponse acceptée, j'ai édité le fichier /etc/kde4/kdm/Xsetup, et comme mentionné ici, j'ai ajouté la commande avant la commande qui est là par défaut. Et ça marche comme un charme :)

jadkik94
la source
4
Quel gestionnaire de connexion utilisez-vous? Pour gdm3, vous pouvez probablement utiliser /etc/gdm3/Init/displayou /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel
Hé, bonnes choses. J'ai posté une question ici [ unix.stackexchange.com/questions/172007/… qui a été marquée comme un double possible de ce Q&R. Cependant, je ne suis pas convaincu que ce soit un clone. Veuillez voir ma question aussi et m'aider :)
kaiwan

Réponses:

13

Tous les fichiers que vous avez tenté de modifier sont lus après votre connexion. En outre, ~/.xinitrcet ~/.xsessionconstituent l'ensemble complet des commandes qui s'exécutent dans une session; ~/.xinitrcest lu si vous exécutez xinitou à startxpartir d'une invite en mode texte, et ~/.xsessionest lu si vous exécutez une «session personnalisée» (le nom peut varier) à partir d'une invite de connexion graphique.

Vous devez configurer votre gestionnaire d'affichage , le programme qui affiche l'invite de connexion. Pour kdm, le gestionnaire d'affichage de KDE, ajoutez votre commande /etc/kde4/kdm/Xsetup(ou /etc/kde3/kdm/Xsetuppour les versions plus anciennes) (c'est le chemin sur Debian, je n'ai pas vérifié que Kubuntu utilise le même chemin).

Pour gdm (le gestionnaire d'affichage Gnome), ajoutez votre commande à /etc/gdm/Init/Default. Pour xdm (le gestionnaire d'affichage X traditionnel), ajoutez votre commande à /etc/X11/xdm/Xsetup.

Gilles 'SO- arrête d'être méchant'
la source
Merci pour l'explication! J'ai essayé ce que vous avez suggéré sans succès. J'ai localisé le Xsetupfichier (dans le même chemin que vous avez mentionné) et ajouté la commande. L'étalonnage n'a pas fonctionné, mais je me suis assuré qu'il était exécuté, en ajoutant echo "w" > /test.loget en vérifiant /test.logqu'il existait après le redémarrage. Est-il possible que cela xinputnécessite un "contexte" spécial ou quelque chose ...?
jadkik94
En fait, ne tenez pas compte du dernier commentaire. J'ai redirigé la xinputcommande vers ce fichier, et il semble que j'aie ajouté un espace au nom de l'appareil qui a empêché le calibrage de fonctionner. Vous aviez raison à 100% :) Merci encore.
jadkik94
5
Et pour compléter la réponse - pour savoir quel est votre gestionnaire d'affichage ( à ne pas confondre avec un environnement de bureau) d'utilisation: cat /etc/X11/default-display-manager.
Nux
Et alors xserverrc? Et ceux qui sont dedans /etc/X11/xinit/xserverrc?
CMCDragonkai
1
@CMCDragonkai S'il y a un gestionnaire d'affichage, startxn'est pas utilisé. Les scripts d'initialisation du gestionnaire d'affichage ne seraient pas pertinents ici car ils s'exécutent avant que l'utilisateur ne se connecte.
Gilles 'SO- arrête d'être diabolique'
4

Je vous suggère de créer votre propre fichier de configuration, un exemple simple:

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

Contenu du fichier:

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

Cela devrait faire l'affaire.

ortang
la source
-1

Vous pourriez essayer /etc/rc.local?

.

amarc
la source
4
Je craignais que le script ne s'exécute avant même que X ne démarre (comme je l'ai compris), ce qui rendrait ce script inutile ... Quand cela s'exécute-t-il?
jadkik94
3
@ jadkik94 vous avez raison, cela ne fonctionnera pas car rc.local n'a pas accès à la session x.
Ulrich Dangel
-1

Lorsque vous avez OpenSUSE, vous pouvez copier votre script dans /etc/init.d et exécuter le nom du script insserv. insserv active un script: http://man-wiki.net/index.php/8:insserv .

Gigamegs
la source
2
Cela ne fonctionnera probablement pas car a xinputprobablement besoin de X qui n'est pas disponible / initialisé dans les scripts d'init
Ulrich Dangel