
Цель — запустить Xephyr в скрипте. Самый популярный подход:
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
Давайте посмотрим, что здесь происходит. Во-первых, к сожалению, Xephyr не может демонизировать себя, поэтому нам приходится запускать его асинхронно ( &
). Затем мы не знаем, когда он инициализируется, поэтому мы даем ему 1-2 секунды на инициализацию. Это кажется хакерством. Как сделать это быстрее и надежнее?
решение1
xinit выполняет эту работу. Вы можете создать файл your_xinitrc
. Команды в your_xinitrc
будут выполнены после инициализации Xephyr.
xinit your_xinitrc -- /usr/bin/Xephyr :4
X-сервер для запуска должен быть указан с абсолютным путем, если это не сам X. man xinit
Подробности см. в разделе. После your_xinitrc
завершения всех команд xinit завершает Xephyr.
решение2
Возможным решением может быть использование
Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here
Вторая строка заблокирует себя в ожидании изменений файловой системы в /tmp/.X11-unix/
, что и происходит, когда Xephyr завершает инициализацию.