Windowsプロパティを処理するために、バックグラウンドで起動されたGUIプログラムのX IDを取得したいと思います。これまで私はこの回避策を使用してきました。
myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')
しかし、これは3つの重要な仮定に依存します。
- プログラムがウィンドウを開くのに1秒未満かかります(もちろん1秒未満は長すぎるかもしれません)。
wmctrl
ウィンドウがリストの最後に追加されます。- 同時に他のウィンドウは開きません。
myprogram
ウィンドウが開くと、どの信号が送信されますか?どのようにブロックできますか?
ベストアンサー1
私のプログラムからウィンドウIDを取得するには、プログラムのタイトルを一意に設定し、プログラムを起動してwmctrl
出力を解析し(プログラムを起動するシェルスクリプトの代わりに)ウィンドウIDを報告します(ほとんどの場合は次のように)。ファイル) 。
ウィンドウが開くまでプログラムが続行されないため、長時間待つ必要はありません。
もちろん、これを行うには変更できる必要がありますmyprogram
(ソースからコンパイルするなど)。