我编写了一个单行脚本,用于在鼠标未悬停在特定窗口上时自动隐藏该窗口。它获取鼠标位置和窗口的几何形状及其位置 (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
答案1
你可以尝试
(xprop -name "kenn" 2>/dev/null || echo "") |...
stderr 重定向会消除错误,并且||
如果 xprop 失败,则后续部分会启动。