通过 shell 脚本 Unity 判断窗口是否打开且未最小化

通过 shell 脚本 Unity 判断窗口是否打开且未最小化

我想在我的 .bashrc 中添加一个小脚本,当且仅当我没有打开任何非最小化、非终端窗口时,将终端背景设置为透明,如果有打开的东西,则将终端背景保留为图像。

我正在使用 Unity 12.04。

我可以毫无问题地设置终端背景,但我只能知道如何判断程序是否打开,而无法判断窗口是否最小化。

我目前的解决办法是:

if [ -z "$( ps -e | grep firefox )" ]
    then
        gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/background_type transparent
    else
        gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/background_type image
fi


(add inset for each of my most used programs)

如果能在启动终端时就看出来,我会很高兴,但如果能在最小化(或关闭)最后一个打开的窗口时将终端变为透明,那就太棒了。我猜是这样的:

export largewindows=  #number of open, non-minimised windows

if [ $largewindows -eq 0 ]
    then
        gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/background_type transparent
fi

使用(某种方式)一个小脚本,在打开、关闭、最小化或取消最小化程序窗口时运行该脚本。

我不知道的是:

  • 如何自动计算窗口(甚至正在运行的程序)的数量。

  • 如何在每次打开/关闭/最小化/取消最小化窗口时运行脚本。

如能提供任何正确的建议我将不胜感激 - 非常感谢!

答案1

要查找窗口,您可以使用工具搜索类似

WID=`xdotool search "Mozilla Firefox" | head -1`

xdotool 行为看起来像是可以用于第二部分的东西,但不幸的是那里没有最大化和最小化事件 - 而且它只适用于现有窗口 - 但您可以使用 cron 不时检查打开的窗口。

相关内容