Eu tenho tentado descobrir o tamanho de uma janela para uso em um pequeno script. Minha técnica atual está usando wmctrl -lG
para descobrir as dimensões. No entanto, o problema é este:
As figuras x e y são para o canto superior esquerdo da decoração da janela, enquanto a altura e largura são apenas para a área de conteúdo. Isso significa que, se as decorações da janela adicionarem 20px de altura e 2px de largura, o wmctrl reportará uma janela como 640x480, mesmo que ocupe 660x482 na tela. Isso é um problema porque o próximo passo do meu script seria usar essa área para informar ao ffmpeg para gravar a tela. Gostaria de evitar a codificação no tamanho da decoração da janela da minha configuração atual.
O que seria adequado é um método para obter o tamanho das decorações da janela, para que eu possa usá-las para descobrir a posição da área de conteúdo de 640x480 ou uma maneira de obter a posição da área de conteúdo diretamente, não a das decorações da janela .
fonte
Respostas:
O script a seguir fornecerá as coordenadas da tela superior esquerda e o tamanho da janela (sem nenhuma decoração). . . .
xwininfo -id $(xdotool getactivewindow)
contém informações suficientes para você.fonte
xdotool getactivewindow
retorna o ID da janela do quadro do gerenciador de janelas (que inclui decoração) em vez da janela do cliente contida nele.xdotool getactivewindow getwindowgeometry
A resposta aceita pode ser estendida para obter a janela inteira:
Embora fácil, não funciona no Unity no Ubuntu 14.04, porque as informações relativas são todas 0. Perguntei: Obtenha as dimensões da janela completa (incluindo as decorações) no Unity e obtenha uma boa resposta. Aqui está como eu usei essa resposta:
Este segundo método funciona no Unity e no Xfce, e também deve funcionar no Gnome.
fonte
aw=`xdotool getactivewindow`
adicionada para evitar interrupção na chamada xwininfo. Isso é ótimo de saber, porque estou pensando em mudar para o Unity, onde não consigo executar o wmiface sem segfaulting.aw
definição ausente . Vou editar a resposta agora para adicionar essa linha.h
. Parece que a barra de título já está incluída na altura de retornoxwininfo
.Maneira muito mais simples de obter o tamanho e a posição da janela:
fonte
A resposta aceita explicitamente não inclui decoração de janela. Para aqueles que ainda procuram obter a geometria, incluindo todas as decorações, de acordo com o título desta pergunta, você pode usar o wmiface conforme esta outra pergunta https://superuser.com/questions/164047/how-to-get-accurate-window -informações-dimensões-etc-no-linux-x . Exemplo:
Isso retorna a geometria e a posição em relação à parte superior esquerda da seguinte forma:
O wmiface parece não vir com todas as distribuições linux (não encontrei nenhum pacote que o fornecesse no Mint ou Ubuntu), mas consegui instalá-lo a partir dos pacotes aqui: http://kde-apps.org/content/show .php? content = 40425
E ele vem sem documentos nem mesmo
--help
, mas o README está aqui:https://gitorious.org/wmiface/wmiface/source/ea941eeb2076124734f6a3d3079326c826b462d7:README
fonte
wmiface activeWindow
570x434 + 870 + 31 $ xdotool getwindowgeometryxdotool getactivewindow
Janela 6291772 Posição: 878,77 (tela: 0) Geometria: 562x407Usando o xdotool:
sleep 3s && xdotool getactivewindow
, você tem 3 segundos para abrir sua janelaxdotool getwindowgeometry $WINDOW_ID
xdotool getwindowgeometry -shell $WINDOW_ID
fonte
Combinando respostas nesta página, usei isto:
Execute a linha única e, em 3 segundos, clique na janela para a qual deseja a posição e a geometria.
fonte