起動したばかりのGUIプログラムのX11ウィンドウIDを検索します。

起動したばかりのGUIプログラムのX11ウィンドウIDを検索します。

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(ソースからコンパイルするなど)。

おすすめ記事