Yanıtlar:
Bu benim için çalışıyor. Tüm uygulamalarda ve tüm pencere yöneticilerinde çalışmayabilir. pam
Birlikte görüntüleyebilmek için biçim, en azından ImageMagick'in tarafından desteklenen olduğunu display
ve ihtiyaç birlikte olmak eğer diğer biçimlere dönüştürmek 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
(ve simgeyi almak istediğiniz pencereye tıklayın, ayrıca xprop -id
seçeneğine bakın)
Fikir, 32 bit ondalık tam sayıların bir listesi olarak özelliği almak için xprop kullanmak ve bunu bir grafik biçimine dönüştürmek için perl kullanmaktır (pam RGBA iken _NET_WM_ICON ARGB olduğu için baytları yeniden sıralamak zorunda kalsam da burada basitlik için seçilen pam.
( pam formatı hakkında bir not . Netpbm formatı, netpbm saygıdeğer bir Unix görüntü manipülasyon araç kutusu. Ancak, çoğunlukla lisanslama olan çeşitli sorunlar nedeniyle, yeni netpbm sürümleri debian tarafından paketlenmiyor ve bunun sonucunda ubuntu gibi türevleri pam dönüştürme yardımcı programlarının çoğunun orada olmadığı anlamına gelir.Yeni netpbm'ye sahip diğer sistemlerde, pamrgbatopng
bir png görüntüsü oluşturmak için yukarıdaki çıktıyı borulandırabilirsiniz )
linux libwnck kullanın bunu yapabilir
#define WNCK_I_KNOW_THIS_IS_UNSTABLE = 1
#include <libwnck/libwnck.h>
int main(int argc,
char **argv) {
WnckScreen *screen;
gdk_init(&argc, &argv);
screen = wnck_screen_get_default();
wnck_screen_force_update(screen);
auto win = wnck_window_get(127926341); // 127926341 is window id, it can be get by linux cli xdotool or wmctrl or other many clis
GdkPixbuf *r = wnck_window_get_icon(win);
GError *err = NULL;
gdk_pixbuf_save(r, "/tmp/prpr.png", "png", &err, "quality", "100", NULL);
return 0;
}
Bu sayfadan alıyorum