
El objetivo es ejecutar Xephyr en un script. El enfoque más popular es este:
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
Veamos qué pasa aquí. Primero, desafortunadamente, Xephyr no puede demonizarse a sí mismo, por lo que tenemos que iniciarlo de forma asincrónica ( &
). Entonces no sabemos cuándo se inicializa, por lo que le damos entre 1 y 2 segundos para que se inicialice. Esto se siente complicado. ¿Cómo hacerlo de forma más rápida y fiable?
Respuesta1
xinit hace este trabajo. Puedes crear un archivo your_xinitrc
. Los comandos your_xinitrc
se ejecutarán después de que se inicialice Xephyr.
xinit your_xinitrc -- /usr/bin/Xephyr :4
El servidor X a ejecutar debe tener una ruta absoluta si no es el propio X. Ver man xinit
para más detalles. Una vez finalizados todos los comandos your_xinitrc
, xinit finaliza Xephyr.
Respuesta2
Una posible solución podría ser utilizar
Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here
La segunda línea se bloqueará esperando cambios en el sistema de archivos /tmp/.X11-unix/
, que es lo que sucede cuando Xephyr termina de inicializarse.