Czekaj, czy chcesz to przez powłokę (do pliku) czy przez C ++?
Bobby
@Bobby cokolwiek działa ..
stokrotka
Odpowiedzi:
9
To działa dla mnie. Może nie działać ze wszystkimi aplikacjami i wszystkimi menedżerami okien. pamFormat jest obsługiwany przez co najmniej ImageMagick, więc można go zobaczyć z displayi konwertować je do innych formatów, w razie potrzeby z convert:
(i kliknij okno, z którego chcesz pobrać ikonę, zobacz także -idopcję xprop )
Chodzi o to, aby użyć xprop, aby uzyskać właściwość jako listę 32-bitowych liczb całkowitych dziesiętnych i użyć perla do konwersji tego na format graficzny (pam wybrano tutaj dla uproszczenia, chociaż musiałem zmienić kolejność bajtów, ponieważ _NET_WM_ICON to ARGB, a pam to RGBA.
( uwaga na temat formatu pam . Jest to format netpbm , netpbm jest czcigodnym narzędziem do manipulacji obrazami w Uniksie. Jednak z powodu różnych problemów, głównie związanych z licencjonowaniem, nowsze wersje netpbm nie są pakietami Debiana, w wyniku czego jego pochodne, takie jak ubuntu as co oznacza, że nie ma tam większości narzędzi do konwersji pam. W innych systemach, które mają nowszy netpbm, możesz przesłać wyjście powyżej, pamrgbatopngaby wygenerować obraz png)
Aby zademonstrować, jak można to zrobić w praktyce, napisałem mały program o nazwie xgeticon, który pozwala użytkownikowi wybrać okno działającej aplikacji X i zapisać wyodrębnioną ikonę w pliku podanym jako argument.
#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;
}
Odpowiedzi:
To działa dla mnie. Może nie działać ze wszystkimi aplikacjami i wszystkimi menedżerami okien.
pam
Format jest obsługiwany przez co najmniej ImageMagick, więc można go zobaczyć zdisplay
i konwertować je do innych formatów, w razie potrzeby zconvert
:(i kliknij okno, z którego chcesz pobrać ikonę, zobacz także
-id
opcję xprop )Chodzi o to, aby użyć xprop, aby uzyskać właściwość jako listę 32-bitowych liczb całkowitych dziesiętnych i użyć perla do konwersji tego na format graficzny (pam wybrano tutaj dla uproszczenia, chociaż musiałem zmienić kolejność bajtów, ponieważ _NET_WM_ICON to ARGB, a pam to RGBA.
( uwaga na temat formatu pam . Jest to format netpbm , netpbm jest czcigodnym narzędziem do manipulacji obrazami w Uniksie. Jednak z powodu różnych problemów, głównie związanych z licencjonowaniem, nowsze wersje netpbm nie są pakietami Debiana, w wyniku czego jego pochodne, takie jak ubuntu as co oznacza, że nie ma tam większości narzędzi do konwersji pam. W innych systemach, które mają nowszy netpbm, możesz przesłać wyjście powyżej,
pamrgbatopng
aby wygenerować obraz png)źródło
Natknąłem się na ten post na blogu. Cytat z tego:
źródło
użyj linux libwnck może to zrobić
Dostaję to z tej strony
źródło