¿Cómo puedo ejecutar un script que comienza antes de mi pantalla de inicio de sesión?

17

Estaba calibrando mi pantalla táctil y vi que la mejor herramienta era xinput_calibrator. Entonces lo usé. Tiene dos opciones (una de las cuales no funcionó), así que estoy aquí para la segunda. Dice que debería ejecutar este comando "en un script que comienza con su sesión X":

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

Así que lo intenté ~/.xinitrc, ~/.xsessiony ~/.xsessionrc, todo lo cual no existía. Así que los creé y el contenido exacto fue este comando. Los dos primeros archivos hicieron que mis inicios de sesión fallaran (después de iniciar sesión, vuelvo a la pantalla de inicio de sesión).

Con el último archivo, la calibración fue funcional, pero solo después de iniciar sesión ...

Necesito que ese comando se ejecute antes de que aparezca el cuadro de diálogo de inicio de sesión. Pensé en agregar este comando al final de /etc/X11/xinit/xinitrcsin resultado (nada cambió). Además, intenté agregarlo al final de /etc/X11/Xsession.d/40x11-common_xsessionrc(después de inspeccionar algunos de los archivos), pero el resultado fue exactamente el mismo que agregarlo ~/.xsessionrc.

¿Cómo puedo hacer que este comando se ejecute antes de que aparezca la pantalla de inicio de sesión (esto es antes de que se inicie el administrador de ventanas o antes de que comience la sesión X)?

(Estoy ejecutando Kubuntu con el administrador de ventanas predeterminado, si eso importa)

ACTUALIZACIÓN Como estoy usando Kubuntu, mi administrador de pantalla es kdm. Como sugiere la respuesta aceptada, edité el archivo /etc/kde4/kdm/Xsetupy, como se mencionó aquí , agregué el comando antes del comando que está allí por defecto. Y funciona como un encanto :)

jadkik94
fuente
44
¿Qué administrador de inicio de sesión estás usando? Para gdm3 probablemente pueda usar /etc/gdm3/Init/displayo /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel
Hola, buenas cosas. He publicado una pregunta aquí [ unix.stackexchange.com/questions/172007/… que se marcó como un posible duplicado de estas preguntas y respuestas. Sin embargo, amigos, no estoy convencido de que sea un clon. Por favor, vea mi pregunta también y
ayúdeme

Respuestas:

13

Todos los archivos que trató de cambiar se leen después de iniciar sesión en otra parte,. ~/.xinitrcY ~/.xsessionson el conjunto de comandos que se ejecutan en una sesión; ~/.xinitrcse lee si ejecuta xinito startxdesde un indicador de modo de texto, y ~/.xsessionse lee si ejecuta una "sesión personalizada" (el nombre puede variar) desde un indicador de inicio de sesión gráfico.

Debe configurar su administrador de pantalla , el programa que muestra la solicitud de inicio de sesión. Para kdm, el administrador de pantalla de KDE, agregue su comando a /etc/kde4/kdm/Xsetup(o /etc/kde3/kdm/Xsetuppara versiones anteriores) (esa es la ruta en Debian, no he verificado que Kubuntu use la misma ruta).

Para gdm (el administrador de pantalla de Gnome), agregue su comando a /etc/gdm/Init/Default. Para xdm (el administrador de pantalla X tradicional), agregue su comando a /etc/X11/xdm/Xsetup.

Gilles 'SO- deja de ser malvado'
fuente
¡Gracias por la explicación! Intenté lo que sugeriste sin éxito. Ubiqué el Xsetuparchivo (en la misma ruta que mencionaste) y agregué el comando. La calibración no funcionó, pero me aseguré de que se ejecutara agregando echo "w" > /test.logy verificando /test.logque existía después del reinicio. ¿Es posible que xinputrequiera un "contexto" especial o algo así ...?
jadkik94
En realidad, ignore el último comentario. Redirigí el xinputcomando a ese archivo, y parece que agregué un espacio al nombre del dispositivo que hizo que la calibración no funcionara. Estabas 100% correcto :) Gracias de nuevo.
jadkik94
55
Y para completar la respuesta - para averiguar cuál es su gestor de pantalla (que no debe confundirse con un entorno de escritorio) uso: cat /etc/X11/default-display-manager.
Nux
¿Qué hay de xserverrc? ¿Y los que están adentro /etc/X11/xinit/xserverrc?
CMCDragonkai
1
@CMCDragonkai Si hay un administrador de pantalla, startxno se usa. Scripts de inicialización del gestor de ventanas no sería relevante aquí, ya que se ejecutan antes de que el usuario entre.
Gilles 'SO siendo parada del mal'
4

Sugiero que cree su propio archivo de configuración, un ejemplo simple:

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

Contenido del archivo:

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

Eso debería hacer el truco.

Ortang
fuente
-1

¿Podrías probar /etc/rc.local?

.

amarc
fuente
44
Me preocupaba que el script se ejecute incluso antes de que X comience (tal como lo entendí), lo que haría que ese script sea inútil ... ¿Cuándo se ejecuta esto?
jadkik94
3
@ jadkik94 tienes razón, esto no funcionará ya que rc.local no tiene acceso a la sesión x.
Ulrich Dangel
-1

Cuando tenga OpenSUSE, puede copiar su script a /etc/init.d y ejecutar el nombre del script insserv. insserv habilita un script: http://man-wiki.net/index.php/8:insserv .

Gigamegs
fuente
2
Esto probablemente no funcionará, ya que xinputprobablemente necesita X, que no está disponible / inicializado en los guiones de inicio
Ulrich Dangel