我尝试在bash脚本中获取窗口的最大大小(即屏幕大小减去屏幕边缘的面板)。我正在使用Kubuntu,但如果它适用于任何Linux系统,那就太棒了。
目前,我的解决方案是通过wmctrl:
最大化活动窗口wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert
然后通过xwininfo:
获取窗口的大小xwininfo -id $(xdotool getactivewindow)
不幸的是,我没有得到窗口的大小,而是窗口的大小和它的边框(如果我删除边框,我得到预期的值)。
所以我的问题是:
1 - 是否有删除窗口边框的命令? (我只知道如何手动完成)
2 - 有更好的方法吗? (如果可以在没有最大化窗口的情况下完成它可能会很棒)
提前感谢您的帮助
答案 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