Eu acho xdotool getactivewindow
que é 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 getwindowpid
exemplo, getactivewindow
coloca o ID na pilha de janelas e getwindowpid
usa 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 getactivewindow
selecionar a janela de interesse no período de dois segundos.
Há uma complicação ao usar xdotool
outras ferramentas para manipulação de janelas:
Enquanto a xdotool
saí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
xdotool getactivewindow
comando 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)