Linux:获取窗口边框高度
问题描述:
我尝试在bash脚本中获取窗口的最大尺寸(即屏幕尺寸减去屏幕边缘上的面板)。我正在使用Kubuntu,但如果它可以适用于任何Linux系统,那就太棒了。Linux:获取窗口边框高度
目前,我的解决办法是通过wmctrl最大化活动窗口:
wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert
,然后获取窗口感谢的大小xwininfo:
xwininfo -id $(xdotool getactivewindow)
不幸的是,我不明白窗口的大小,但窗口的大小和它的边框(如果我删除边框,我会得到期望的值)。
所以我的问题是:
1 - 是否有一个命令来删除一个窗口的边框? (我只知道如何手动)
2 - 有没有更好的方法来做到这一点? (如果它可以在不将窗口最大化来实现它可能是巨大的)
在此先感谢您的帮助
答
我意识到我打电话边境实际上标题栏...如果我使用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
你的意思是'但窗口的大小和(+)窗口的边界? – konsolebox
但是你实际上可以用算术计算它,但是你必须告诉我们数据是如何显示的以及你想要的。用bash应该是可以的。 – konsolebox
是的,它是“和”而不是“减”对不起。 – Zach