Посчитайте свернутые окна в Linux с помощью bash - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь создать скрипт, который проверяет, что окна в XFCE свернуты, прежде чем отображать выбранное мной окно (это часть более крупного проекта)

Я пытался восстановить счетчикоткройте окна с помощью wmctrl, но это не свернутые окна:

CURRWORKSPACE=$(wmctrl -d | grep '*' | cut -d ' ' -f1)
OPENWINDOWS=$(wmctrl -l | cut -d ' ' -f3 | grep $CURRWORKSPACE | wc -l)

Я также пытаюсь использовать xdotool, но безуспешно: (

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

Большое спасибо!

1 Ответ

0 голосов
/ 20 октября 2018

Учитывая окно и его идентификатор, перечисленные в wmctrl, вы можете использовать следующую функцию, чтобы определить, свернуто ли это окно.Обратите внимание, что свернутые окна называются иконическими в X.

# usage: isMinimized <windowId>
# returns status 0 if and only if window with given id is minimized
isMinimized() {
    xprop -id "$1" | grep -Fq 'window state: Iconic'
}

Для подсчета открытых окон вы можете перебрать список идентификаторов окон.

openWindows() {
    count=0
    for id in $(wmctrl -l | cut -f1 -d' '); do
        isMinimized "$id" || ((count++))
    done
    echo $count
}

По крайней мере, в моей рабочей среде (Cinnamon) некоторые «окна» всегда были открыты.Эти окна, например, рабочий стол.Я настроил функцию, отфильтровывая эти окна перед тем, как зацикливать их.Так как они были липкими, и я обычно не использую липкие окна, я просто пренебрег всеми липкими окнами: $(wmctrl -l | grep -vE '^0x\w* -1' | cut -f1 -d' ').

Вы можете настроить фильтрацию в соответствии со своими потребностями.В этом случае учитываются все открытые и неприлипающие окна на всех рабочих пространствах / рабочих столах .

...