Espere, você deseja através do shell (em um arquivo) ou via C ++?
Bobby
@Bobby o que quer que funcione ..
daisy
Respostas:
9
Isso funciona para mim. Pode não funcionar com todos os aplicativos e todos os gerenciadores de janelas. O pamformato é pelo menos suportado pelo ImageMagick, para que você possa visualizá-lo displaye convertê-lo em outros formatos, se necessário convert:
(e clique na janela da qual você deseja obter o ícone, veja também a -idopção do xprop )
A idéia é usar o xprop para obter a propriedade como uma lista de números inteiros decimais de 32 bits e usar o perl para convertê-lo em um formato gráfico (pam escolhido aqui por simplicidade, embora eu precise reordenar os bytes, pois _NET_WM_ICON é ARGB enquanto pam é RGBA.
( uma observação sobre o formato pam . É um formato netpbm , o netpbm é uma venerável caixa de ferramentas de manipulação de imagem do Unix. No entanto, devido a vários problemas, principalmente de licenciamento, as versões mais recentes do netpbm não são pacotes do debian e, como resultado, seus derivados como o ubuntu e bem, o que significa que a maioria dos utilitários de conversão de pam não está presente lá. Em outros sistemas com netpbm mais recente, você pode canalizar a saída acima pamrgbatopngpara gerar uma imagem png)
Para demonstrar como isso pode ser feito na prática, escrevi um pequeno programa chamado xgeticon, que permite ao usuário escolher a janela de um aplicativo X em execução e salvar o ícone extraído no arquivo fornecido como argumento.
#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;
}
Respostas:
Isso funciona para mim. Pode não funcionar com todos os aplicativos e todos os gerenciadores de janelas. O
pam
formato é pelo menos suportado pelo ImageMagick, para que você possa visualizá-lodisplay
e convertê-lo em outros formatos, se necessárioconvert
:(e clique na janela da qual você deseja obter o ícone, veja também a
-id
opção do xprop )A idéia é usar o xprop para obter a propriedade como uma lista de números inteiros decimais de 32 bits e usar o perl para convertê-lo em um formato gráfico (pam escolhido aqui por simplicidade, embora eu precise reordenar os bytes, pois _NET_WM_ICON é ARGB enquanto pam é RGBA.
( uma observação sobre o formato pam . É um formato netpbm , o netpbm é uma venerável caixa de ferramentas de manipulação de imagem do Unix. No entanto, devido a vários problemas, principalmente de licenciamento, as versões mais recentes do netpbm não são pacotes do debian e, como resultado, seus derivados como o ubuntu e bem, o que significa que a maioria dos utilitários de conversão de pam não está presente lá. Em outros sistemas com netpbm mais recente, você pode canalizar a saída acima
pamrgbatopng
para gerar uma imagem png)fonte
Eu me deparei com este post do blog. Para citar:
fonte
usar linux libwnck pode fazê-lo
Eu entendo desta página
fonte