Por que os ícones simbólicos do GNOME aparecem mais escuros em um aplicativo em execução?

9

Estou criando um aplicativo que usa ícones simbólicos do tema padrão.

No entanto, existem alguns ícones que eu preciso que não podem ser representados por aqueles do tema padrão, então estou criando meus próprios.

O que fiz foi simplesmente acessar /usr/share/icons/gnome/scalable/actions/ , copiei alguns localmente na árvore de código-fonte do meu aplicativo que poderia servir de base e comecei a editá-los.

Até aí tudo bem. Mas notei o seguinte: todos os ícones simbólicos são de uma cor cinza clara quando se olha para o arquivo .svg original, mas quando são colocados em um widget, ficam mais escuros.

Veja um exemplo, usando o ícone /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg do tema padrão:

  • Veja o que parece ao abrir o original com o Inkscape:

  • E aqui está o que parece em uma barra de ferramentas em um aplicativo em execução:

Observe que o ícone é muito mais escuro no tempo de execução. Isso acontece com os temas Ambiance e Radiance.

Eu não me importo muito, mas notei que isso afeta meu ícone personalizado, onde partes dele se tornam mais escuras (o preenchimento interno), enquanto partes dele permanecem da mesma cor que o original (o traçado).

Então, o que faz com que os ícones simbólicos padrão sejam escurecidos e como implementar isso para meus ícones personalizados?

    
por David Planella 10.06.2012 / 14:52

2 respostas

15
  • Os ícones simbólicos são criados em uma cor chroma-key , cinza com opacidade total ( #bebebeff ). Eles podem ser coloridos com base no valor fg_color definido pelo tema em settings.ini (GTK3) ou gtkrc (GTK2); ou no fg_color definido no CSS (GTK3).
    • por exemplo, para Ambiente , a cor de primeiro plano ( fg_color ) está definida como cinza escuro ( #4c4c4c ) em /usr/share/themes/Ambiance/gtk-3.0/settings.ini , motivo pelo qual os ícones simbólicos aparecem mais escuros.
  • Para que os ícones simbólicos personalizados sejam os mesmos, você deve remover o traço e usar somente o preenchimento com o valor RGBA definido como #bebebeff ; caso contrário, o traço sempre aparecerá como definido (ou seja, cinza ou qualquer cor).

    • No Inkscape, basta selecionar o objeto, abrir Fill and Stroke e clicar no ícone No Paint (x) em "Stroke Paint":

  • Isso nos dá um ícone simbólico "MyRefresh" agradável e com aparência uniforme:

  

Um usuário indicou que um ícone diferente e mais escuro estava sendo aberto em vez do ícone simbólico padrão do gnome; como esta strace mostra, essa afirmação está incorreta:

     

    
por ish 23.06.2012 / 05:10
3

Ícones simbólicos geralmente são definidos pelo tema usando a propriedade "color", que é sua grande vantagem, eles ficam bem em qualquer plano de fundo. Você pode, no entanto, carregá-los com sua própria cor.

Exemplo de código vala:

//get the icon theme and lookup the icon we want by name, here at a size of 64px
var info = Gtk.IconTheme.get_default ().lookup_icon ("view-refresh-symbolic", 64, 0);

//now load the icon as a symbolic with a color set in the brackets as RGBA, here as plain red
var pixbuf = info.load_symbolic ({1, 0, 0, 1});

//finally we just put in a GtkImage to render it
var image_widget = new Gtk.Image.from_pixbuf (pixbuf);
    
por Tom 22.06.2012 / 23:51