1

Я могу получить идентификаторы окон и заголовки окон с помощью wmctrl , но до сих пор я не смог получить путь к значку, используемому окном. Я пробовал смотреть на утилиты xdg, но самым близким была установка / удаление иконок.

Есть ли способ получить имя значка, используемого XDG/GTK, или путь dir к значку в сценарии / командной строке оболочки?

2 ответа2

1

Поэтому вместо имени вы можете получить само изображение:

xprop -id THE_WINDOW_ID -notype 32c _NET_WM_ICON |
   perl -0777 -pe '@_=/\d+/g;
   printf "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", splice@_,0,2;
   $_=pack "N*", @_;
   s/(.)(...)/$2$1/gs' > icon.pam

Вы можете передать этот вывод в pamrgbatopng (из netpbm), чтобы получить изображение PNG:

xprop -id THE_WINDOW_ID ... | perl -0777  ... | pamrgbatopng > the_icon.png

Хакерский, немного медленный, но это что-то.

Кредиты: Это сочетание ответа @ Thomas Dickey с [Как вывести значок работающей X-программы?](https://unix.stackexchange.com/questions/48860/how-to-dump-the-icon-of-a-running-x-program.

0

Вы не можете получить его из wmctrl потому что он знает только о свойствах окна. Ни одно из свойств, связанных со значками, в подсказках Extended Window Manager не указывает, где находится значок. Это потому, что это может быть растровое изображение в памяти (как это делает xterm для некоторых конфигураций, начиная с патча № 282).

Предположительно, вы уже знаете об этих свойствах:

Но это только отправная точка. Предполагая, что файл значков существует, вам придется искать его в дереве каталогов, где находятся значки, например, /usr/share/pixmaps , в соответствии с текущей темой.

Аналогичный вопрос был задан в разделе Каков абсолютный путь к значку, объявленному в файле .desktop?, который указывает на

Получение названия темы зависит от рабочего стола. Соответствующий вопрос (и ответ) находится в поиске темы значков, не зависящих от рабочего стола.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .