Como iniciar o Xephyr sem dormir

Como iniciar o Xephyr sem dormir

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_xinitrcserã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 xinitpara detalhes. Depois que todos os comandos your_xinitrcforem 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.

informação relacionada