Команда, чтобы определить, запущено ли полноэкранное приложение?

У меня есть небольшой сценарий оболочки, который играет немного звона и отображает уведомление всякий раз, когда я получаю новое письмо.

Проблема в том, что этот сценарий оболочки может быть вызван в любое время - в том числе, когда я смотрю DVD / видео в полноэкранном режиме с довольно активным звуком - что довольно раздражает. ]

Я хотел бы усовершенствовать этот скрипт, чтобы он мог определять, находится ли приложение в полноэкранном режиме. Я знаю, что это должно быть как-то возможно, потому что уведомления не отображаются при таких обстоятельствах.

Какую команду я могу использовать?

7
задан 21 March 2011 в 00:25

2 ответа

Вид крайнего перегиба как сценарий оболочки, но он должен сделать свое дело:

#!/bin/bash
WINDOW=$(echo $(xwininfo -id $(xdotool getactivewindow) -stats | \
                egrep '(Width|Height):' | \
                awk '{print $NF}') | \
         sed -e 's/ /x/')
SCREEN=$(xdpyinfo | grep -m1 dimensions | awk '{print $2}')
if [ "$WINDOW" = "$SCREEN" ]; then
    exit 0
else
    exit 1
fi

Тогда вы можете проверить это:

if is-full-screen ; then echo yup, full screen ; fi

Как указано ниже, Сначала нужно установить xdotool:

sudo apt-get install xdotool
0
ответ дан 21 March 2011 в 00:25

Я чувствую себя обязанным сделать несколько комментариев (упрощения):

  1. Вышеупомянутый код оболочки использует антишаблон ... | grep | awk. Каждый раз, когда Вы видите grep | awk, можно заменить его единственным вызовом awk. Я часто вижу этот антишаблон в сообщениях/форумах справки онлайн. Мой смысл состоит в том, что большинство знает это и что в реальном коде, большинство людей знает лучше, но что по некоторым причинам он просматривается как педагогически выше, чтобы записать этому этот путь (т.е. как grep | awk. Но меня все еще раздражает видеть его.

  2. Я думаю, что вышеупомянутая идея может быть упрощена до:

    # Initializations section of your shell script:
    root_geo="$(xwininfo -root | grep geometry)"
    
    # In the loop:
    [ "$(xwininfo -id $(xdotool getactivewindow) | grep geometry)" = "$root_geo" ] && echo "Running fullscreen"
    
1
ответ дан 23 November 2019 в 06:34

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

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