web-dev-qa-db-fra.com

Pourquoi les icônes symboliques GNOME apparaissent-elles plus sombres dans une application en cours d'exécution?

Je crée une application qui utilise des icônes symboliques du thème par défaut.

Cependant, il y a quelques icônes dont j'ai besoin et qui ne peuvent pas être représentées par celles du thème par défaut. Je crée donc les miennes.

Ce que j'ai fait était simplement d'aller à /usr/share/icons/gnome/scalable/actions/, d'en copier quelques-uns localement dans l'arborescence source de mon application pouvant servir de base et de commencer à les éditer.

Jusqu'ici tout va bien. Mais j'ai remarqué ce qui suit: toutes les icônes symboliques sont de couleur gris clair lorsque vous regardez le fichier .svg d'origine, mais lorsqu'elles sont placées dans un widget, elles deviennent plus sombres.

Voici un exemple utilisant l’icône /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg du thème par défaut:

  • Voici à quoi cela ressemble lors de l'ouverture de l'original avec Inkscape:

view-refresh-symbolic on Inkscape

  • Et voici à quoi cela ressemble dans une barre d'outils d'une application en cours d'exécution:

view-refresh-symbolic on at runtime

Notez que l'icône est beaucoup plus sombre au moment de l'exécution. Cela se produit à la fois avec les thèmes Ambiance et Radiance.

Cela ne me dérangerait pas beaucoup, mais j'ai remarqué que cela affectait mon icône personnalisée, certaines parties devenant plus foncées (remplissage intérieur), alors que certaines parties conservaient la même couleur que l'original (le trait).

Qu'est-ce qui fait donc que les icônes symboliques par défaut s'assombrissent et comment doit-on les implémenter pour mes icônes personnalisées?

10
David Planella
  • Les icônes symboliques sont créées dans une couleur chroma-key gris avec une opacité complète (#bebebeff). Ils peuvent ensuite être colorés en fonction de la valeur fg_color définie par le thème dans settings.ini (GTK3) ou gtkrc (GTK2); ou sur le fg_color défini dans le CSS (GTK3).
    • par exemple, pour Ambiance , la couleur de premier plan (fg_color) est définie sur gris foncé (#4c4c4c) dans /usr/share/themes/Ambiance/gtk-3.0/settings.ini, raison pour laquelle le symbole les icônes semblent plus sombres.
  • Pour que les icônes symboliques personnalisées aient le même aspect, vous devez supprimer le trait et utilisez uniquement le remplissage avec la valeur RGBA définie sur #bebebeff; sinon, le trait apparaîtra toujours comme défini (c'est-à-dire gris ou quelle que soit la couleur).

    • Dans Inkscape, sélectionnez simplement l’objet, ouvrez Remplissage et contour , puis cliquez sur l’icône Aucune peinture (x) sous "Contour". Peindre":

    enter image description here

  • Cela nous donne une icône symbolique "MyRefresh" agréable et homogène:

    enter image description here


Un utilisateur a indiqué qu’une icône différente plus sombre était en train d’être ouverte à la place de l’icône symbolique par défaut du gnome; comme le montre cette strace, cette assertion est incorrecte:

enter image description here

15
ish

Les icônes symboliques sont généralement définies par le thème à l'aide de la propriété "couleur", c'est leur grand avantage: elles ont fière allure sur n'importe quel fond. Vous pouvez cependant les charger avec votre propre couleur.

Exemple de code 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);
3
Tom