Jak zdobyć ikonę klasy okna?

1

Piszę skrypt, aby szybko wyświetlić listę moich wielu otwartych okien. Pogrupowałem je według klasy. Chciałbym dodać ikonę do grupy.

Korzystam z wmctrl, aby uzyskać listę okien:

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

egrepFiltruje rura z usług działających w tle. z trzeciej grupy kolumn okien według klasy.
sort

To jest przykładowy wynik:

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

Klasa okna jest trzecią kolumną wyniku.

Jeśli mogę uzyskać dostęp do ikony (w tym przykładzie google-chrome.Google-chromei Mail.Thunderbird), mogę skojarzyć obraz z tymi blokami.

Czy ktoś wie, gdzie Ubuntu przechowuje te obrazy? Uważam, że są one nazywane obrazami mimów lub czymś podobnym.

LD James
źródło

Odpowiedzi:

1

Chociaż jestem pewien, że istnieją bardziej eleganckie i oficjalne metody, znalazłem obejście, aby uzyskać ikonę.

Możesz zlokalizować ikony związane z aplikacjami, przeszukując program uruchamiający pulpit i przeglądając icon=wpis.

W `` przykładzie w pytaniu wyszukiwałbyś nazwę po znaku ''. kropka, która jest Google-chrome.

Ta linia poleceń zapewni program uruchamiający pulpit :

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

Spowoduje to uruchomienie programu uruchamiającego pulpit Chrome:

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

Teraz wyszukaj iconwpis:

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

W tym przypadku program uruchamiający, który nie ma pełnej ścieżki, można znaleźć jako ikonę bieżącego motywu, który można znaleźć za pomocą skryptu pytona dostarczonego przez Stefano Palazzo .

LD James
źródło