目標は、スクリプトからXepyrを起動することです。最も広く使用されている方法は次のとおりです。
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
/tmp/.X11-unix/
2行目は、Xephyrが独自の初期化を完了したときに発生するファイルシステムの変更を待たないようにします。