Xウィンドウが閉じたときの検出

Xウィンドウが閉じたときの検出

ウィンドウマネージャUbuntu 20.04.5 LTSで実行しています。XFCE4

特定のXウィンドウが閉じたときにシェルスクリプトを起動する方法を探しています。

私はループで実行されるか、問題のXウィンドウが存在するかどうかを確認し、Xウィンドウが検出されなくなったときにシェルスクリプトを実行するプログラムを作成できることを知っていwmctrlますxdotool

しかし、忙しいスタンバイベースのプログラムを書かなくても、これらのいくつかまたはすべてを実行できるイベントベースのユーティリティがあるかどうか疑問に思います。

どんな提案がありますか?

よろしくお願いします。

答え1

これを行う簡単な方法は、xprop標準のX11ユーティリティを使用することです。ウィンドウID、ウィンドウ名、または対話型クリックでウィンドウを識別する方法を提供できます。ウィンドウのX11プロパティが表示されます。このオプションを追加すると、-spyプロパティ変更イベントが表示されるのを待つループが生成されます。これは忙しいループではありませんが、標準のX11メカニズムを使用して要求されたイベントを待ちます。ウィンドウが消えると、イベントキューが閉じてxpropきちんと終了します。例えば、

xterm -title mytest -e 'sleep 5' &
sleep 1
xprop -spy -name mytest
echo "rc=$? xterm done"

通常、ウィンドウがアイコン化されている場合など、いくつかのプロパティのみが変更されます。

関連情報