
目標是在腳本中啟動 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 完成自身初始化時發生的情況。