web-dev-qa-db-ja.com

睡眠なしでXephyrを起動する方法

目標は、スクリプトでXephyrを起動することです。最も一般的なアプローチはこれです:

Xephyr :4 &
sleep 1  # or sleep 2
launch_your_program_here

ここで何が起こるか見てみましょう。まず、残念ながら、Xephyrはそれ自体をデーモン化できないため、非同期で起動する必要があります(&)。次に、いつ初期化されるかわからないため、初期化に1〜2秒かかります。これはハッキーな感じがします。それをより速くそしてより確実に行う方法は?

4
VasyaNovikov

xinitがこの仕事をします。ファイルyour_xinitrcを作成できます。 your_xinitrcのコマンドは、Xephyrが初期化された後に実行されます。

xinit your_xinitrc -- /usr/bin/Xephyr :4

実行するXサーバーは、X自体でない場合は、絶対パスを指定する必要があります。詳細については、man xinitを参照してください。 your_xinitrc内のすべてのコマンドが終了した後、xinitはXephyrを終了します。

4
mviereck

考えられる解決策は、

Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here

2行目は、/tmp/.X11-unix/でファイルシステムの変更を待機することをブロックします。これは、Xephyrが自身の初期化を終了したときに発生します。

4
VasyaNovikov