次のスクリプトを作成しようとしています。
st -n dropdown &
pid=$(xdotool search --classname dropdown)
st
端末エミュレータです
生成されたstでいくつかのコマンドを実行するためにxdotoolを使用しようとしています。残念ながら、実際のst端末が起動する前に次のコマンドがst -n dropdown &
実行されるため、pidはありません。いつでも後ろに置くことができますが、sleep 0.1
場合によっては、古いシステムでターミナルを起動するのに0.1秒以上かかることがあります。残りのスクリプトを実行する前に端末が起動するのを待つ方法はありますか?
このwait
コマンドは、プロセスが完了するのを待つため、機能しません。この場合、プロセスst
が終了するのを待つので、これは私が望むものではありません。
答え1
xtoolwait
X アプリケーションを起動してウィンドウをマップするのを待つユーティリティです。その後、コントロールを元のシェルセッションに返します。
.xinitrc
主に個人や文書で使用されます.xsession
。
次のスクリプトで使用できます。
xtoolwait st -n dropdown
pid=$(xdotool search --classname dropdown)
xtoolwait
2番目のコマンドは、対応するウィンドウがマッピングされたことを検出するst
まで実行を開始しません。最初の行がありません&
(不要)。これにより、2番目のコマンドがPIDを正しく見つけるのに十分な遅延を提供できます。