Como descobrir se uma janela é realmente exibida na tela usando o shell script?

2

Estou tentando escrever um script de shell que reconheça se a janela do Thunderbird é exibida e, se for o caso, ela é descartada na bandeja de mensagens.

Eu gostaria de usá-lo em esta resposta de " Como manter o Thunderbird e o Pidgin sendo executados em segundo plano? "pergunta.

Até agora eu estou usando o "xdotool" para verificar se o Thunderbird é exibido e simular perto como sugerido em " Como emular pressionando o botão Fechar de um script? ".

    #!bin/bash
    thunderbird &
    TB=$(xdotool search --class thunderbird)
    while [ -z "$TB" ]; do
        sleep 2
        TB=$(xdotool search --class thunderbird)
    done
    xdotool search --class thunderbird windowunmap %@


Mas xdotool search --class thunderbird retorna o resultado no momento em que o Thunderbird é lançado, antes de ser realmente exibido, portanto, xdotool search --class thunderbird windowunmap %@ espera para não fazer nada.

Para ignorar essa limitação, um sleep xx é adicionado ao comando real, mas o tempo de espera necessário é adiado de sistema para sistema.

Eu também usei "xwininfo" para verificar se o Thunderbird é exibido, mas ele se comporta da mesma forma que "xdotool", então eu tive que adicionar sleep xx aqui também.

    #!bin/bash
    thunderbird &
    t="Thunderbird"
    stop=0

    xwininfo -name $t > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        stop=1
    fi

    while [ $stop -eq 0 ]; do
        xwininfo -name $t > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            stop=1
        fi
    done
    sleep 2
    xdotool search --class thunderbird windowunmap %@

Existe alguma outra maneira de verificar as janelas "realmente" exibidas?

    
por naskoos 01.01.2013 / 17:11

1 resposta

0

Tente isto:

wmctrl -l | grep -i thunderbird
    
por Adobe 19.04.2014 / 19:44