Linux:获取窗口边框高度

时间:2013-08-29 15:23:59

标签: linux bash window-management

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

目前,我的解决方案是通过wmctrl:

最大化活动窗口
wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert

然后通过xwininfo:

获取窗口的大小
xwininfo -id $(xdotool getactivewindow)

不幸的是,我没有得到窗口的大小,而是窗口的大小和它的边框(如果我删除边框,我得到预期的值)。

所以我的问题是:

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

2 - 有更好的方法吗? (如果可以在没有最大化窗口的情况下完成它可能会很棒)

提前感谢您的帮助

3 个答案:

答案 0 :(得分:3)

我意识到我所谓的 border 实际上是标题栏...如果我使用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))

感谢您的帮助!

答案 1 :(得分:1)

这会得到你的身高,宽度和边框宽度:

{ 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

答案 2 :(得分:0)

我只检查了KDE / Plasma,但是当您对一个窗口进行xprop操作时,您可以从这两个条目之一获得装饰的尺寸(值来自我的桌面):

_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 0, 0, 41, 4

_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 41, 4