
O objetivo é lançar o Xephyr em um script. A abordagem mais popular é esta:
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
Vamos ver o que acontece aqui. Primeiro, infelizmente, o Xephyr não pode se daemonizar, então temos que iniciá-lo de forma assíncrona ( &
). Então não sabemos quando ele foi inicializado, então damos de 1 a 2 segundos para inicializar. Isso parece hacky. Como fazer isso de forma mais rápida e confiável?
Responder1
xinit faz esse trabalho. Você pode criar um arquivo your_xinitrc
. Os comandos your_xinitrc
serão executados após a inicialização do Xephyr.
xinit your_xinitrc -- /usr/bin/Xephyr :4
O servidor X a ser executado deve receber um caminho absoluto se não for o próprio X. Veja man xinit
para detalhes. Depois que todos os comandos your_xinitrc
forem finalizados, o xinit encerra o Xephyr.
Responder2
Uma possível solução pode ser usar
Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here
A segunda linha irá se bloquear aguardando alterações no sistema de arquivos /tmp/.X11-unix/
, que é o que acontece quando o Xephyr termina de se inicializar.