目標は、スクリプトでXephyrを起動することです。最も一般的なアプローチはこれです:
Xephyr :4 &
sleep 1 # or sleep 2
launch_your_program_here
ここで何が起こるか見てみましょう。まず、残念ながら、Xephyrはそれ自体をデーモン化できないため、非同期で起動する必要があります(&
)。次に、いつ初期化されるかわからないため、初期化に1〜2秒かかります。これはハッキーな感じがします。それをより速くそしてより確実に行う方法は?
xinitがこの仕事をします。ファイルyour_xinitrc
を作成できます。 your_xinitrc
のコマンドは、Xephyrが初期化された後に実行されます。
xinit your_xinitrc -- /usr/bin/Xephyr :4
実行するXサーバーは、X自体でない場合は、絶対パスを指定する必要があります。詳細については、man xinit
を参照してください。 your_xinitrc
内のすべてのコマンドが終了した後、xinitはXephyrを終了します。
考えられる解決策は、
Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here
2行目は、/tmp/.X11-unix/
でファイルシステムの変更を待機することをブロックします。これは、Xephyrが自身の初期化を終了したときに発生します。