Come posso eseguire uno script che inizia prima della mia schermata di accesso?


17

Stavo calibrando il mio touchscreen e ho visto che lo strumento migliore in circolazione era xinput_calibrator. Quindi l'ho usato. Ha due opzioni (una delle quali non ha funzionato), quindi sono qui per la seconda. Dice che dovrei eseguire questo comando "in uno script che inizia con la tua sessione X":

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

Così ho provato ~/.xinitrc, ~/.xsessione ~/.xsessionrc, tutto ciò non esisteva. Quindi li ho creati e il contenuto esatto era questo comando. I primi due file hanno fatto fallire i miei accessi (dopo il login, torno alla schermata di login).

Con l'ultimo file, la calibrazione era funzionale, ma solo dopo aver effettuato l'accesso ...

Ho bisogno che quel comando venga eseguito prima che venga visualizzata la finestra di dialogo di accesso. Ho pensato di aggiungere questo comando alla fine /etc/X11/xinit/xinitrcsenza alcun risultato (nulla è cambiato). Inoltre, ho provato ad aggiungerlo alla fine di /etc/X11/Xsession.d/40x11-common_xsessionrc(dopo aver esaminato alcuni dei file), ma il risultato è stato esattamente lo stesso di aggiungerlo a ~/.xsessionrc.

Come posso eseguire questo comando prima che venga visualizzata la schermata di accesso (è prima dell'avvio di Window Manager o prima dell'inizio della sessione X)?

(Sto eseguendo Kubuntu con il gestore delle finestre predefinito, se è importante)

AGGIORNAMENTO Mentre sto usando Kubuntu, il mio display manager è kdm. Come suggerisce la risposta accettata, ho modificato il file /etc/kde4/kdm/Xsetupe, come detto qui, ho aggiunto il comando prima del comando che è lì per impostazione predefinita. E funziona come un fascino :)


4
Quale gestore degli accessi stai usando? Per gdm3 probabilmente puoi usare /etc/gdm3/Init/displayo /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel

Ehi, roba buona. Ho pubblicato una domanda qui [ unix.stackexchange.com/questions/172007/… che è stata contrassegnata come possibile duplicato di questo D&R. Tuttavia, gente, non sono convinto che sia un clone. Vedi anche la mia domanda e aiutami :)
kaiwan

Risposte:


13

Tutti i file che si cercato di cambiare vengono letti dopo l'accesso, inoltre,. ~/.xinitrcE ~/.xsessionsono il set completo di comandi che vengono eseguiti in una sessione; ~/.xinitrcviene letto se si esegue xinito startxda un prompt in modalità testo e ~/.xsessionviene letto se si esegue una "sessione personalizzata" (il nome può variare) da un prompt di accesso grafico.

Devi configurare il tuo display manager , il programma che mostra il prompt di accesso. Per kdm, il display manager di KDE, aggiungi il tuo comando a /etc/kde4/kdm/Xsetup(o /etc/kde3/kdm/Xsetupper le versioni precedenti) (questo è il percorso su Debian, non ho verificato che Kubuntu usi lo stesso percorso).

Per gdm (il display manager di Gnome), aggiungi il tuo comando a /etc/gdm/Init/Default. Per xdm (il tradizionale display manager di X), aggiungi il tuo comando a /etc/X11/xdm/Xsetup.


Grazie per la spiegazione! Ho provato ciò che hai suggerito senza successo. Ho trovato il Xsetupfile (nello stesso percorso che hai menzionato) e ho aggiunto il comando. La calibrazione non ha funzionato, ma mi sono assicurato che fosse eseguita, aggiungendo echo "w" > /test.loge verificando /test.logche esistesse dopo il riavvio. È possibile che xinputrichieda un "contesto" speciale o qualcosa del genere ...?
jadkik94,

In realtà, ignora l'ultimo commento. Ho reindirizzato il xinputcomando su quel file e sembra che avessi aggiunto uno spazio al nome del dispositivo che ha reso la calibrazione non funzionante. Avevi ragione al 100% :) Grazie ancora.
jadkik94,

5
E proprio per completare la risposta - per scoprire che cosa è il vostro display manager (da non confondere con un ambiente desktop) utilizzo: cat /etc/X11/default-display-manager.
Nux,

Che dire xserverrc? E quelli che sono dentro /etc/X11/xinit/xserverrc?
CMCDragonkai,

1
@CMCDragonkai Se è presente un display manager, startxnon viene utilizzato. Script di inizializzazione display manager non sarebbero qui rilevante dal momento che corrono prima che l'utente accede.
Gilles 'SO-tappa è male'

4

Ti suggerisco di creare il tuo file di configurazione, un semplice esempio:

/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

Questo dovrebbe fare il trucco.


-1

Potresti provare /etc/rc.local?

.


4
Ero preoccupato che lo script fosse eseguito prima ancora che X iniziasse (come ho capito), il che renderebbe inutile quello script ... Quando viene eseguito?
jadkik94,

3
@ jadkik94 hai ragione, questo non funzionerà poiché rc.local non ha accesso alla sessione x.
Ulrich Dangel,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.