2013-08-29 73 views
1

我嘗試在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

回答

3

我意識到我打電話邊境實際上標題欄...如果我使用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

這將讓你的高度,寬度和邊框寬度:

{ 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