Como obter o ID da janela do xdotool Window Stack

12

Preciso de id da janela que esteja ativa ou focada. Eu tento usar o xdotoolcomando. Existe um comando:

xdotool getactivewindow

o resultado é salvo na pilha de janelas. Eu quero obter ID widnow a partir desta pilha de janelas. Comando

xdotool getactivewindow getwindowpid

não me satisfaz. Não quero obter a identificação da janela pela identificação do processo.

Mariusz
fonte

Respostas:

11

Eu acho xdotool getactivewindowque é o que você quer - você tentou?

Ele imprime o ID da janela (da pilha de janelas) se não houver mais subcomandos do xdotool na linha de comando.

Por xdotool getactivewindow getwindowpidexemplo, getactivewindowcoloca o ID na pilha de janelas e getwindowpidusa esse ID para consultar o PID. Observe que a execução desse comando no terminal sempre retornará o ID da janela do terminal, pois está ativo. Para obter o ID de outra janela, tente sleep 2s && xdotool getactivewindowselecionar a janela de interesse no período de dois segundos.


Há uma complicação ao usar xdotooloutras ferramentas para manipulação de janelas:

Enquanto a xdotoolsaída usa números decimais para os IDs do windwo, a maioria das outras ferramentas usa números hexadecimais para a saída (eles suportam ambos para entrada normalmente).

Por exemplo, se você encontrar uma janela com xdotool getactivewindow, não encontrará o resultado na saída de xwininfo -root -tree, que lista todas as janelas. Ele precisa ser convertido em um número hexadecimal primeiro:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


Convertendo decimal em hexadecimal:

printf 0x%x 69206716

Convertendo hexadecimal em decimal:

printf %i 0x42002bc
Volker Siegel
fonte
Eu tentei xdotool getactivewindowcomando e problema é que ele não imprime resultado no terminal. Salve o resultado na pilha de janelas. Este comando imprime algum número, mas não é o ID da janela (por exemplo, 35651588)
Mariusz
Por que você acha que 35651588 não é o ID da janela?
Volker Siegel
Sim, acho que 35651588 não é o ID da janela. Você pode ver o windows id pelo comando xwininfo, por exemplo xwininfo -root -tree- este comando imprime todas as janelas e as janelas têm outros tipos de numeração.
Mariusz
1
xwininfomostra o ID da janela como números hexadecimais e o xdotool mostra números decimais, mas é o mesmo.
Volker Siegel
você está certo. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz
1

Este comando funciona para mim

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool versão 3.20160805.1

Ahmed Habiba
fonte
xdotool getactivewindow key F5deve produzir o mesmo resultado
user3804598