
目標はスクリプトで Xephyr を起動することです。最も一般的なアプローチは次のとおりです。
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
ここで何が起こるか見てみましょう。まず、残念ながら、Xephyr は自身をデーモン化できないため、非同期的に起動する必要があります ( &
)。次に、いつ初期化されるかわからないため、初期化に 1 ~ 2 秒かかります。これはハッキーな感じがします。これをより速く、より確実に行うにはどうすればよいでしょうか。
答え1
xinit がこの作業を行います。ファイルを作成できますyour_xinitrc
。Xephyr が初期化された後に、コマンドがyour_xinitrc
実行されます。
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
2 行目は、 でのファイルシステムの変更を待機してブロックします/tmp/.X11-unix/
。これは、Xephyr が自身の初期化を完了したときに発生します。