답변:
이것은 나를 위해 작동합니다. 모든 응용 프로그램 및 모든 창 관리자에서 작동하지 않을 수 있습니다. 이 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
(그리고 아이콘을 가져 오려는 창을 클릭하십시오. xprop의 -id
옵션 도 참조하십시오 )
아이디어는 xprop를 사용하여 속성을 32 비트 십진 정수 목록으로 가져오고 perl을 사용하여 그래픽 형식으로 변환하는 것입니다 (pam은 RGBA 인 반면 _NET_WM_ICON은 ARGB이므로 바이트를 다시 정렬해야하지만 여기서는 단순성을 위해 여기에서 선택한 pam).
( pam 형식에 대한 참고 사항입니다 . netpbm 형식이며 netpbm은 유닉스 이미지 조작 도구 상자입니다. 그러나 대부분의 라이센스 문제로 인해 새로운 netpbm 버전은 데비안 패키지가 아니기 때문에 우분투와 같은 파생 제품은 대부분의 pam 변환 유틸리티는 존재하지 않습니다 .netpbm이 최신 인 다른 시스템에서는 위의 출력을 파이프하여 pamrgbatopng
png 이미지를 생성 할 수 있습니다 )
리눅스 libwnck를 사용하여 할 수 있습니다.
#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;
}
이 페이지 에서 가져옵니다