目标是在脚本中启动 Xephyr。最流行的方法是这样的:
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
让我们看看这里会发生什么。首先,不幸的是,Xephyr 无法自行守护,因此我们必须异步启动它 ( &
)。那么我们不知道它什么时候初始化,所以我们给它1-2秒的时间来初始化。这感觉很hacky。如何更快、更可靠地做到这一点?
答案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 完成自身初始化时发生的情况。