Linux:获取窗口边框高度

问题描述:

我尝试在bash脚本中获取窗口的最大尺寸(即屏幕尺寸减去屏幕边缘上的面板)。我正在使用Kubuntu,但如果它可以适用于任何Linux系统,那就太棒了。Linux:获取窗口边框高度

目前,我的解决办法是通过wmctrl最大化活动窗口:

wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert 

,然后获取窗口感谢的大小xwininfo:

xwininfo -id $(xdotool getactivewindow) 

不幸的是,我不明白窗口的大小,但窗口的大小和它的边框(如果我删除边框,我会得到期望的值)。

所以我的问题是:

1 - 是否有一个命令来删除一个窗口的边框? (我只知道如何手动)

2 - 有没有更好的方法来做到这一点? (如果它可以在不将窗口最大化来实现它可能是巨大的)

在此先感谢您的帮助

+0

你的意思是'但窗口的大小和(+)窗口的边界? – konsolebox

+0

但是你实际上可以用算术计算它,但是你必须告诉我们数据是如何显示的以及你想要的。用bash应该是可以的。 – konsolebox

+0

是的,它是“和”而不是“减”对不起。 – Zach

我意识到我打电话边境实际上标题栏...如果我使用xwininfo -stats我确实得到了边框的宽度(0在我的情况)。标题栏高度(在最大化窗口之后)在绝对左上角中获得。以下给我预期的身高:

eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^ Height: \+\([0-9]\+\).*/Height=\1/p" -e "s/^ Absolute upper-left Y: \+\([0-9]\+\).*/HeightTitleBar=\1/p") 
Height=$(($Height+$HeightTitleBar)) 

感谢您的帮助!

这将让你的高度,宽度和边框宽度:

{ read __ WIDTH; read __ HEIGHT; read __ __ BORDER_WIDTH; } < <(xwininfo -id "$(xdotool getactivewindow)" | grep -o -e 'Height:.*' -e 'Width:.*' -e 'Border width:.*') 
echo "Height: $HEIGHT, Width: $WIDTH, Border width: $BORDER_WIDTH" 

随着你现在有$ HEIGHT,$ WIDTH和$ BORDER_WIDTH。你可以只用算术表达式重新计算的:http://tldp.org/LDP/abs/html/arithexp.html