スリープせずにXephyrを起動する方法

スリープせずにXephyrを起動する方法

目標はスクリプトで 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 が自身の初期化を完了したときに発生します。

関連情報