Como obter informações precisas das janelas (dimensões, etc.) no Linux (X)?


22

Como posso obter informações precisas sobre janelas no Linux? Eu sei que posso usar o wmctrl para obter o tamanho de uma janela, mas o tamanho real da janela pode variar devido a decorações da janela. Preciso das seguintes informações e métodos:

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

Qual seria a melhor forma de fazer isso?

Desde já, obrigado!


Se você estiver interessado mais no lado python, podemos migrar para o nosso site irmão sobre programação, StackOverflow.com. Apenas nos deixe saber.
Gnoupi

@ Gnoupi: obrigado, mas na verdade é uma postagem cruzada da SO, como um usuário sugeriu que eu pudesse obter uma resposta melhor aqui. A pergunta original está em stackoverflow.com/questions/3233660/… .
mellort

OK eu vejo. Nesse caso, acho que a parte python da sua pergunta pode ser editada. As respostas no SU provavelmente usarão outros comandos, não a programação. A pergunta sobre SO provavelmente deve se concentrar em perguntar como fazê-lo em python.
Gnoupi

Obter dimensão da janela com decorações: unix.stackexchange.com/questions/14159/…
Ciro Santilli #

Respostas:


26

Existem alguns programas de linha de comando que podem ajudar:

  • xwininfo: Fornece o tamanho da janela, excluindo a decoração e a posição absoluta (na tela) e relativa (na área das janelas)
  • xdpyinfo: Isso fornece muito mais informações sobre o seu dispositivo de tela do que você deseja conhecer. Mas tem em algum lugar na saída algo como screen: #0seguido por dimension: 1024x768.

Existe uma maneira de obter informações, incluindo a decoração?
213 Victor Victor

6

> dimensões precisas da janela

O exemplo a seguir (funcionará pelo menos em sh, bash e zsh) imprimirá a geometria da janela com e sem moldura para todas as janelas com "KWrite" em algum lugar do título.

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

> espaço disponível na tela preciso (excluindo painéis como o painel gnomo)

xrandr

Por exemplo:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

Saída no meu caso:

4400 x 2560

Não sabe ao certo como excluir painéis - se você tiver mais de um monitor, eles podem estar no meio da tela virtual; portanto, a geometria da tela sem painéis pode ser mais complicada do que o "espaço disponível na tela".

> a capacidade de definir uma janela para um determinado tamanho, incluindo decorações

wmiface setFrameGeometry $window $x $y $width $height

Leia o wmiface README para obter ainda mais comandos possíveis.


2
O wmiface não é fornecido com todas as distribuições (alguma?). Eu consegui instalar no Mint usando o pacote ubuntu aqui: kde-apps.org/content/show.php?content=40425 O README mencionado pode ser encontrado aqui: gitorious.org/wmiface/wmiface/source/…
slinkp 18/09/14

Consulte a segunda parte deste comentário unix.stackexchange.com/a/156349/84607 para obter outra maneira de obter geometria completa, incluindo decorações usando uma combinação de xwininfo, xdotool e xprop.
slinkp
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.