Como posso encontrar o local (na área de trabalho) de uma janela na linha de comando?
19
Estou tentando escrever um pequeno script para ajudar a gerenciar minhas janelas por meio de atalhos de teclado.
Para fazer o que eu quero, preciso encontrar o local e o tamanho atuais da janela "ativa" (focada). Por localização, quero dizer as coordenadas X, Y da janela na área de trabalho e por tamanho, a altura e a largura da janela.
Existe um utilitário de linha de comando que pode buscar essas informações?
Basta analisar a saída das coordenadas necessárias. Aqui estão alguns comandos úteis ao interagir com o Windows:
O xwininfo fornecerá a geometria relativa e absoluta.
O xprop informa muitas informações, inclusive se a janela está ativa, mas não a geometria
O xdpyinfo também fornecerá o ID da janela ativa, mas nenhuma informação extra.
O wmctrl fornece uma lista de informações sobre janelas e permite selecionar a janela ativa para modificação, mas não 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 wmctrlse você precisa mudar algo simples, como a geometria da janela. Considere usar os outros scripts mencionados acima apenas se desejar fazer outras coisas mais complexas.
Gostaria apenas de observar que obtenho resultados diferentes ao executar o segundo comando. Primeiro funciona como eu esperava.
TM.
1
Eu uso o Arch, mas pode ajudar alguém aqui no futuro. O primeiro não funcionou para mim, o segundo não forneceu as dimensões corretas, talvez devido ao WM. Mas a combinação dos dois funcionou. xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
Sev
Obrigado! Mas eu concordo com os dois primeiros comentários. O segundo comando, xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)mostra-me uma janela filho (não tem nome) do meu Terminal. Quando eu xdpyinfo | grep focusrecebo focus: window 0x435b877, revert to Parent, e 0x435b877 é o ID da janela retornada pelo primeiro comando (que funciona para mim). Isso é no Trusty 14.04.1 LTS
nealmcb 02/02
8
Com o "xdotool", você pode interagir facilmente com o Windows usando eventos de teclado ou mouse.
Exemplo de envio de uma CtrlCsequência para a janela ativa:
xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.
xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)
mostra-me uma janela filho (não tem nome) do meu Terminal. Quando euxdpyinfo | grep focus
recebofocus: window 0x435b877, revert to Parent
, e 0x435b877 é o ID da janela retornada pelo primeiro comando (que funciona para mim). Isso é no Trusty 14.04.1 LTSCom o "xdotool", você pode interagir facilmente com o Windows usando eventos de teclado ou mouse.
Exemplo de envio de uma CtrlCsequência para a janela ativa:
Se você realmente precisa da posição da janela:
Para mais ações / opções, verifique a página do manual .
fonte
Error: Invalid key sequence 'ctrl-c'
.