Подождите, вы хотите через оболочку (в файл) или через C ++?
Бобби
@ Бобби, что бы ни работало ..
маргаритка
Ответы:
9
Это работает для меня. Может работать не со всеми приложениями и всеми оконными менеджерами. pamФормат, по крайней мере поддерживается ImageMagick, так что вы можете просмотреть его displayи конвертировать его в другие форматы , в случае необходимости с convert:
(и нажмите на окно, из которого вы хотите получить значок, см. также параметр xprop -id)
Идея состоит в том, чтобы использовать xprop для получения свойства в виде списка 32-битных десятичных целых чисел и использовать perl для преобразования его в графический формат (здесь pam выбран для простоты, хотя мне пришлось изменить порядок байтов, поскольку _NET_WM_ICON - это ARGB, а pam - это RGBA.
( примечание о формате pam . Это формат netpbm , netpbm - почтенный набор инструментов для работы с изображениями Unix. Однако из-за различных проблем, в основном лицензионных, более новые версии netpbm не являются пакетами Debian, и в результате его производные, такие как ubuntu as хорошо, что означает, что большинство утилит преобразования pam там не присутствуют. В других системах, которые имеют более новую версию netpbm, вы можете передать вышеприведенный вывод pamrgbatopngдля генерации png-изображения)
Круто, я сбросил значок и преобразовал его в формат PNG.
маргаритка
0
Я наткнулся на этот пост в блоге. Чтобы процитировать это:
Чтобы продемонстрировать, как это можно сделать на практике, я написал небольшую программу под названием xgeticon, которая позволяет пользователю выбрать окно работающего приложения X и сохранить извлеченный значок в файл, представленный в качестве аргумента.
#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;
}
Ответы:
Это работает для меня. Может работать не со всеми приложениями и всеми оконными менеджерами.
pam
Формат, по крайней мере поддерживается ImageMagick, так что вы можете просмотреть егоdisplay
и конвертировать его в другие форматы , в случае необходимости сconvert
:(и нажмите на окно, из которого вы хотите получить значок, см. также параметр xprop
-id
)Идея состоит в том, чтобы использовать xprop для получения свойства в виде списка 32-битных десятичных целых чисел и использовать perl для преобразования его в графический формат (здесь pam выбран для простоты, хотя мне пришлось изменить порядок байтов, поскольку _NET_WM_ICON - это ARGB, а pam - это RGBA.
( примечание о формате pam . Это формат netpbm , netpbm - почтенный набор инструментов для работы с изображениями Unix. Однако из-за различных проблем, в основном лицензионных, более новые версии netpbm не являются пакетами Debian, и в результате его производные, такие как ubuntu as хорошо, что означает, что большинство утилит преобразования pam там не присутствуют. В других системах, которые имеют более новую версию netpbm, вы можете передать вышеприведенный вывод
pamrgbatopng
для генерации png-изображения)источник
Я наткнулся на этот пост в блоге. Чтобы процитировать это:
источник
использовать linux libwnck может сделать это
Я получил это с этой страницы
источник