Как я могу использовать wmctrl для проверки существования определенного WM _ICON _NAME (STRING )?

Используя cat /proc/net/dev, я понимаю, что на em4 было несколько сетевых обменов. Потом вспомнил, что при физической установке сервера были подключены порты 2 Gb. Поэтому я отключил интернет-кабель, подключенный к em4, и теперь моя проблема, похоже, решена.

1
05.07.2020, 17:04
2 ответа

Вы можете использовать xdotoolдля поиска существующих окон по их именам классов и заголовкам.

if xdotool search --name "name of my window" > /dev/null; then
    echo "Window found"
else
    echo "Window not found"
fi

В приведенном выше примере кода xdotoolкоманда вернет статус выхода 0и список найденных идентификаторов окон, если есть окна, заголовок которых содержит "name of my window".

0
18.03.2021, 23:21

Существует не так много инструментов, которые используют WM_ICON_NAME, поскольку часто предполагается, что он установлен так же, как WM_NAME. Вы можете перечислить все идентификаторы окон и запустить xpropдля каждого из них, чтобы получить строку, например

WM_ICON_NAME(STRING) = "myname"

, а затем используйтеawk(или аналогичный ), чтобы извлечь из него часть в кавычках и сравнить ее с нужной строкой. Вот функция bash findicon, принимающая для этого один параметр:

findicon(){ 
    local myname=${1?}
    wmctrl -l |
    while read id rest
    do xprop -id "$id" WM_ICON_NAME
    done |
    awk -F'"' -v myname="$myname" '
        {if($2==myname)found=1} 
        END {exit !found}'
}

if findicon 'my icon name'
then echo 'found'
fi
1
18.03.2021, 23:21

Теги

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