Como obter o ID da janela da pilha de janelas xdotool

8

Eu preciso do id da janela que está ativa ou focada. Eu tento usar o comando xdotool . Existe um comando:

xdotool getactivewindow

o resultado é salvo na pilha de janelas. Eu quero obter widnow id desta pilha de janela. Comando

xdotool getactivewindow getwindowpid

não me satisfaz. Eu não quero obter id de janela por id de processo.

    
por Mariusz 09.09.2014 / 12:48

1 resposta

8

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

Imprime o id da janela (da pilha de janelas) se não houver mais subcomandos xdotool na linha de comando.

Em xdotool getactivewindow getwindowpid , por exemplo, getactivewindow coloca o id na pilha da janela e getwindowpid usa esse id para consultar o PID. Observe que executar esse comando no terminal sempre retornará o ID da janela do terminal, porque ele está ativo. Para obter o ID de outra janela, tente sleep 2s && xdotool getactivewindow e selecione a janela de interesse no intervalo de tempo de dois segundos.


Há uma complicação ao usar xdotool com outras ferramentas para manipulação de janelas:

Enquanto a saída xdotool usa números decimais para identificadores de windwo, a maioria das outras ferramentas usam números hexadecimais para a saída (eles suportam tanto 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 para 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
    
por 09.09.2014 / 13:09

Tags