Как сбрасывать значок запущенной программы X?

Есть ли способ получить значок запущенной программы X? Когда вы переключаетесь между окнами, вы можете увидеть его значок, например, через xfwm4.

Это работает для меня. Может не работать со всеми приложениями и всеми оконными менеджерами. Формат pam , по крайней мере, поддерживается ImageMagick, поэтому вы можете просматривать его с помощью display и преобразовывать его в другие форматы, если необходимо, с convert :

 xprop -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 

(и щелкните по окну, из которого вы хотите получить значок, см. также опцию xid для xprop)

Идея состоит в том, чтобы использовать свойство xprop, чтобы получить свойство в виде списка из 32-битных десятичных целых чисел и использовать perl для преобразования этого в графический формат (здесь выбрана pam для простоты, хотя мне пришлось изменить порядок байтов, поскольку _NET_WM_ICON является ARGB, а pam – RGBA.

( примечание о формате pam . Это формат netpbm , netpbm – почтенный инструментарий для обработки изображений Unix. Однако из-за различных проблем, в основном лицензируемых, новые версии netpbm не являются пакетами debian, и в результате его производные, такие как ubuntu as а это значит, что большинство утилит преобразования pamrgbatopng там нет. В других системах с более новым netpbm вы можете pamrgbatopng вывод выше pamrgbatopng для генерации png-изображения)