Cómo iniciar Xephyr sin dormir

Cómo iniciar Xephyr sin dormir

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_xinitrcse 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 xinitpara 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.

información relacionada