ウィンドウマネージャ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"
通常、ウィンドウがアイコン化されている場合など、いくつかのプロパティのみが変更されます。