Também fiz essa pergunta no stackoverflow e recebi uma boa resposta que marquei como a correta e votei positivo: link
This applies also to compiz. There are a couple of ways you can get these informations in some ways:
wnckprop --xid=$(xdotool getactivewindow)
Otherwise, you can just mix the Absolute value you get from xwininfo together with the size of the decorations that are accessible using:
xprop _NET_FRAME_EXTENTS -id $(xdotool getactivewindow)
For your information, if you want to get the full frame size, including the input area around the window, you can use
xwininfo -frame
Após a experimentação, eu entendo melhor o que a "área de entrada" refere-se ao Ubuntu. Como o tamanho padrão da borda é 0, há uma área de 10 px ao redor da janela onde você pode pegar a janela para redimensionar. Pode ter outros propósitos, mas a área de entrada basicamente age como uma borda invisível de 10px. Então, Absolute from xwininfo fornece a janela interior enquanto xwininfo -frame fornece a janela inteira incluindo a barra de título e um adicional de 10px ao redor (se a área de entrada for 10px). O xprop ... dá apenas o tamanho das decorações, não incluindo a área de entrada. Portanto, todos os 3 comandos são necessários para obter uma imagem completa da geometria de uma janela.
Aqui está o código que acabei usando (ignora a área de entrada invisível):
eval $(xwininfo -id "$aw" |
sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=/p" \
-e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=/p" \
-e "s/^ \+Width: \+\([0-9]\+\).*/w=/p" \
-e "s/^ \+Height: \+\([0-9]\+\).*/h=/p" )
if [ "$entire" = true ]
then
extents=$(xprop _NET_FRAME_EXTENTS -id "$aw" | grep "NET_FRAME_EXTENTS" | cut -d '=' -f 2 | tr -d ' ')
bl=$(echo $extents | cut -d ',' -f 1) # width of left border
br=$(echo $extents | cut -d ',' -f 2) # width of right border
t=$(echo $extents | cut -d ',' -f 3) # height of title bar
bb=$(echo $extents | cut -d ',' -f 4) # height of bottom border
let x=$x-$bl
let y=$y-$t
let w=$w+$bl+$br
let h=$h+$t+$bb
fi