Recuperar a ID da janela X11 de um programa GUI recém-lançado

4

Eu quero recuperar o ID X dos programas GUI que eu inicio em segundo plano, a fim de trabalhar em suas propriedades do Windows. Eu já estive usando essa solução alternativa:

myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')

Mas isso depende de três suposições:

  • o programa levará menos de 1 segundo para abrir sua janela (sem mencionar que 1 segundo pode ser muito longo)
  • a janela será exibida no final da lista wmctrl
  • nenhuma outra janela será aberta enquanto

Existe algum sinal myprogram será enviado uma vez que tenha aberto uma janela? Como posso interceptar isso?

    
por iago-lito 17.12.2014 / 19:03

1 resposta

1

Para obter o ID da janela no meu programa, o programa define o título como algo único, depois o programa inicia o wmctrl e analisa sua saída (e não o shell script que iniciou o programa) e, em seguida, reporta na identificação da janela (na maioria das vezes através de um arquivo).

Como o programa não continua até que as janelas estejam abertas, você nunca terá que esperar muito.

Isso, é claro, requer que você possa alterar myprogram (ou seja, compilar a partir da fonte).

    
por 17.12.2014 / 19:22