Как выяснить, отображено ли окно на самом деле на экране с помощью сценария оболочки?

Я пытаюсь записать сценарий оболочки, который распознает, отображено ли окно Thunderbird, и раз так оно располагает его к лотку сообщений.

Я хотел бы использовать его в этом ответе, "Как сохранить Thunderbird и Гибридный язык, работающий на фоне?" вопрос.

До сих пор я использую "xdotool", чтобы проверить, отображен ли Thunderbird, и моделируйте близко на нем, как предложено в, "Как эмулировать нажатие кнопки Close из сценария?".

    #!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 %@


Но xdotool search --class thunderbird результат возвратов к этому времени Thunderbird запускается, прежде на самом деле отображен, таким образом, xdotool search --class thunderbird windowunmap %@ ожидает навсегда, ничего не делая.

Обойти это ограничение a sleep xx добавляется в фактической команде, но необходимое время сна, задерживает от системы до системы.

Я также использовал "xwininfo", чтобы проверить, отображен ли Thunderbird, но он ведет себя то же как "xdotool", таким образом, я должен был добавить sleep xx здесь также.

    #!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 %@

Там какой-либо другой путь состоит в том, чтобы проверить на "действительно" отображенные окна?

2
задан 13 April 2017 в 15:25

1 ответ

Попробуйте это:

wmctrl -l | grep -i thunderbird
0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: