我正在Ubuntu 20.04.5 LTS
使用XFCE4
窗口管理器运行。
我正在寻找一种在关闭特定 X 窗口时启动 shell 脚本的方法。
我知道我可以创建一个程序来循环运行wmctrl
或xdotool
一遍又一遍地检查有问题的 X 窗口是否存在,然后在不再检测到该 X 窗口的存在时执行 shell 脚本。
但我想知道是否有某种基于事件的实用程序可以运行,它可以为我完成部分或全部操作,而不必编写这个基于繁忙等待的程序。
有什么建议么?
先感谢您。
答案1
执行此操作的一个简单方法是使用xprop
标准 X11 实用程序。您可以通过窗口 ID、窗口名称或通过单击交互方式来提供识别窗口的方法,并且它会显示该窗口的 X11 属性。添加该选项-spy
将使其循环等待将显示的更改属性事件。这不是一个繁忙的循环,而是使用标准的 X11 机制来等待请求的事件。当窗口消失时,事件队列将关闭,并xprop
干净地结束。例如,
xterm -title mytest -e 'sleep 5' &
sleep 1
xprop -spy -name mytest
echo "rc=$? xterm done"
通常,只有少数属性会发生变化,例如窗口图标化时。