当鼠标未悬停在该窗口上时,我制作了一个单行脚本来自动隐藏特定窗口。它获取窗口的鼠标位置和几何及其位置(topleftx,toplefty),我将其几何添加到窗口的起始位置以获得(bottomrightx,bottomrighty)坐标,然后比较鼠标是否在窗口上方。如果鼠标不在窗口上,它会隐藏窗口。
它只工作一次,因为xprop
如果在窗口堆栈中找不到窗口名称,我用来在脚本中提取窗口信息的窗口信息命令会失败。它输出一条错误消息,--help
然后消息退出。
我需要xprop
,因为它是唯一提供decoration id
任何窗口信息的窗口信息命令。因为 Linux 中的主流窗口信息工具只打印窗口的几何形状和位置,没有装饰。为了完整性,我想包括窗户装饰。
我怎样才能欺骗它工作?
while [ 1 ]
do
string=$(xdotool getmouselocation 2>/dev/null | sed 's/x:\([0-9]\+\)[ \t]y:\([0-9]\+\)[ \t].*/\1;\2/' | tr ';' ',')
string2=$(xdotool getwindowgeometry $(xprop -name "kenn" | grep _COMPIZ_WINDOW_DECOR_INPUT_FRAME | grep -Po ' # \K.*') | grep -Po ': \K.*' |cut -d" " -f1 | tr '\n' ',' | tr 'x' ','| sed 's/-[0-9][0-9]*/0/')
A="$string2$string"
IFS=,
set $A
if [[(($5 -lt $(($1+$3)))) && (($5 -gt $1))]] && [[(($6 -lt $(($2+$4)))) && (( $6 -gt $2 ))]]
then echo "mouse is on the window"
else
then echo "mouse is out of the window"
fi
done
你可以试试
||
如果 xprop 爆炸,stderr 重定向会消除错误和启动后的部分。