フォークされたプロセスがウィンドウを開くのを待ちます。

フォークされたプロセスがウィンドウを開くのを待ちます。

次のスクリプトを作成しようとしています。

st -n dropdown &
pid=$(xdotool search --classname dropdown)

st端末エミュレータです

生成されたstでいくつかのコマンドを実行するためにxdotoolを使用しようとしています。残念ながら、実際のst端末が起動する前に次のコマンドがst -n dropdown &実行されるため、pidはありません。いつでも後ろに置くことができますが、sleep 0.1場合によっては、古いシステムでターミナルを起動するのに0.1秒以上かかることがあります。残りのスクリプトを実行する前に端末が起動するのを待つ方法はありますか?

このwaitコマンドは、プロセスが完了するのを待つため、機能しません。この場合、プロセスstが終了するのを待つので、これは私が望むものではありません。

ベストアンサー1

xtoolwaitX アプリケーションを起動してウィンドウをマップするのを待つユーティリティです。その後、コントロールを元のシェルセッションに返します。

.xinitrc主に個人や文書で使用されます.xsession

次のスクリプトで使用できます。

xtoolwait st -n dropdown
pid=$(xdotool search --classname dropdown)

xtoolwait2番目のコマンドは、対応するウィンドウがマッピングされたことを検出するstまで実行を開始しません。最初の行がありません&(不要)。これにより、2番目のコマンドがPIDを正しく見つけるのに十分な遅延を提供できます。

おすすめ記事