Como posso encontrar a localização (na área de trabalho) de uma janela na linha de comando?

18

Estou tentando escrever um pequeno script para ajudar a gerenciar minhas janelas por meio de atalhos de teclado.

Para fazer o que eu quero, eu preciso ser capaz de encontrar a localização atual e o tamanho da janela "ativa" (focada). Por localização, quero dizer as coordenadas X, Y da janela na área de trabalho e, por tamanho, quero dizer a altura e a largura da janela.

Existe um utilitário de linha de comando que pode buscar essas informações?

    
por TM. 07.01.2011 / 22:59

2 respostas

22

Você pode obter todas as informações da janela ativa atual usando este comando:

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

ou

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

Apenas analise a saída para as coordenadas que você precisa. Aqui estão alguns comandos úteis ao interagir com o Windows:

  • xwininfo fornecerá a geometria relativa e absoluta.
  • xprop informará muitas informações, incluindo se a janela estiver ativa, mas não a geometria
  • O xdpyinfo também te dará o id da janela ativa, mas nenhuma informação extra.
  • O wmctrl fornecerá uma lista de informações sobre o Windows e permitirá que você selecione a janela ativa para modificação, mas não as informações.

Por exemplo, para alterar o título da janela ativa para "Novo nome":

wmctrl -r :ACTIVE: -N "New Name"

Ou para alterar a posição da janela ativa:

wmctrl -r :ACTIVE: -e 0,20,20,200,400

Considere wmctrl se você precisar apenas alterar algo simples, como a geometria da janela. Considere usar os outros scripts mencionados acima somente se você quiser fazer outras coisas mais complexas.

    
por Martin Owens -doctormo- 07.01.2011 / 23:20
7

Com o "xdotool" você pode interagir facilmente com o Windows usando eventos de teclado ou mouse.

Exemplo de envio de uma seqüência ctrl-c para a janela ativa:

xdotool getwindowfocus key ctrl-c # Sends CTRL-C to the current window.

Se você realmente precisa da posição da janela:

eval $(xdotool getmouselocation --shell); echo $X $Y

Para mais ações / opções, verifique a página de manual .

    
por João Pinto 07.01.2011 / 23:19

Tags