Как получить значок класса окна?

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

Я использую wmctrl для получения списка окон:

wmctrl -lx | egrep -v "0x.*(0 N/A)|-1" | sort -k3

egrep канал отфильтровывает фоновые сервисы.
sort из третьих групп столбцов окна классом.

Это - демонстрационный вывод:

0x05a00001  0 google-chrome.Google-chrome  ubunzeus (8) Newest Questions - Ask Ubuntu - Google Chrome
0x05a00028  0 google-chrome.Google-chrome  ubunzeus How to get the icon of a window class? - Ask Ubuntu - Google Chrome
0x06c00010  0 Mail.Thunderbird      ubunzeus Inbox - L. D. James - Mozilla Thunderbird

Класс окна является третьим столбцом вывода.

Если я могу получить доступ к значку (в этом образце, google-chrome.Google-chrome и Mail.Thunderbird), я могу связать изображение с теми блоками.

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

1
задан 10 July 2017 в 19:03

1 ответ

В то время как я уверен, что существуют более изящные и официальные методы, я нашел, что обходное решение получает значок.

Можно определить местоположение значков, связанных с приложениями путем поиска настольного средства запуска и просмотра icon= запись.

В '' примере в вопросе Вы искали бы имя после "." точка, которая является Google-chrome.

Эта командная строка обеспечит Настольное Средство запуска:

$ egrep -ir "\b$Google-chrome\b" /usr/share/applications/*.desktop ${HOME}/.local/share/applications/*.desktop | head -1

Это даст настольное средство запуска Chrome:

/usr/share/applications/google-chrome.desktop

Теперь поиск icon запись:

$ egrep -i "icon=" /usr/share/applications/google-chrome.desktop
Icon=google-chrome

В этом случае, средство запуска, не имеющее полный путь, можно найти, что это - значок текущей темы, которая может быть найдена со сценарием Python, предоставленным Stefano Palazzo.

1
ответ дан 7 December 2019 в 15:33

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

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