web-dev-qa-db-fra.com

Mise au point de nouveaux thèmes GTK3

Le thème Numix est disponible en installant shimmer-themes à partir du centre de logiciel. Il est installé par défaut dans Xubuntu.

En 14.04, j'ai pu modifier certains aspects du thème en modifiant directement des fichiers tels que usr/share/themes/Numix/gtk-3.0/gtk.css ou usr/share/themes/Numix/gtk-3.0/gtk-widgets.css.

Même en 15.10, la solution décrite dans Comment définir une couleur de surbrillance de texte personnalisée pourrait être facilement appliquée.

Mais en 16.04, la même approche ne semble pas possible. J'ai regardé le fichier README.md dans la page du développeur ici: https://github.com/numixproject/numix-gtk-theme . Quelques citations de là:

Si vous voulez pirater le thème, assurez-vous de disposer de la commande inotifywait, utilisée pour regarder et créer automatiquement les fichiers.

et

Si vous modifiez des actifs, vous devrez régénérer les fichiers gtk.gresource.xml et gtk.gresource. Vous pouvez utiliser grrr pour le faire facilement.

Alors, comment un utilisateur normal, moyen, peut-il changer n’importe quel aspect du thème Numix disponible pour 16.04? Une personne familiarisée avec les thèmes gtk3 qui utilisent scss plutôt que seulement de simples css peut-elle expliquer la procédure?

3
DK Bose

Après un peu de lecture sur le sujet, puis une nouvelle lecture du readme.md au projet numix , je me suis rendu compte qu'ils expliquaient réellement comment manuellement installez et modifiez leur thème.
Le fait est que les instructions supposent beaucoup de connaissances préalables - en gros, vous êtes un développeur C qui connaît CSS.
Je suppose que vous savez que le code source de langages tels que C est compilé en fichiers exécutables binaires et/ou en fichiers de bibliothèque, et que SASS/SCSS est un précompilateur (une sorte de langage "supérieur") qui obtient compilé en CSS, qui est un code source interprété - et non compilé sous une forme binaire. D'après ce que je peux dire, l'aperçu est le suivant:

                          +--------------------------------------------------------------+
 +------+                 |  +---------------------+                                     |
 |      |   you need to   |  | CSS files           |         Numix theme                 |
 |SASS  |   "compile"     |  | ordinary text (code)|         i.e. files in               |
 |files |   SASS to CSS   |  |                     |         /usr/share/themes/Numix Daily/gtk-3.0
 |    +------------------------->             <------------------------------------------+----------+
 |      |                 |  +---------------------|                                     |          |
 |      |                 |   +------------------------+                                 |          |
 +------+                 |   | gtk.resource           |                                 |          |
 If you change this       |   | (compiled binary    <-----+                              |          |
 you need to recompile    |   | file)                  |  |                              |          |
 (update the CSS          |   +------------------------+  |                              |          |
                          +--------------------------------------------------------------+          |
 files)                      +----------------------+     |                                         |
                             | GTK library          |     |  +---------------------------+          |
+--------------------+       | (binary library)     |     |  |  GTK and C developer tools|          |
| Application        |       |                      |     |  |  used to recompile        |          |
| e.g. Gnome terminal|       | Configured to use    |     |  |  gtk.gresource            |          |
| Nautilus etc       |       | Numix Theme          |     |  |                           |          |
| that uses GTK      |       |                      |     +----+                         |          |
| library            |       |                      |        |                           |          |
| (binary            |       |                      |        |                           |          |
| executable)        |       |                      |        +---------------------------+          |
+--------------------+       |                      |                                               |
                             |Makes call to         +                                               |
                             |gtk_css_provider_load_from_file() +----------------------------------->
                             |
                             +----------------------+

Ainsi, le thème Numix et beaucoup/tous les thèmes GTK-3.0 comprennent des ressources binaires et du code CSS qui est analysé par l'appel de fonction gtk_css_provider_load_from_file(), ce qui semble être un nouvel ajout à GTK-3.0.
Le projet numix vous suggère de ne recompiler que le gtk-gresource si vous modifiez des éléments. Donc, je ne m'embêterais pas avec ça - sauf si vous en avez vraiment besoin. Si vous avez vraiment besoin ici, il s'agit d'un introduction à la construction d'une ressource binaire GTK

Ressources utiles

  • GtkCssProvider - Ceci est responsable de l'analyse du CSS - cela semble vraiment être la base pour rendre les applications GTK capables de lire le CSS. En particulier comment GTK lira le code CSS d'un thème au démarrage :

Une application peut amener GTK + à analyser une feuille de style CSS spécifique en appelant gtk_css_provider_load_from_file () et en ajoutant le fournisseur avec gtk_style_context_add_provider () ou gtk_style_context_add_provider_for_screen ().
De plus, certains fichiers seront lus lors de l’initialisation de GTK +. D'abord, le fichier $ XDG_CONFIG_HOME/gtk-3.0/gtk.css est chargé s'il existe.
Ensuite, GTK + essaie de charger $ HOME/.themes/nom-thème/gtk-3.0/gtk.css, en revenant à datadir/share/themes/nom-thème/gtk-3.0/gtk.css, où nom-thème est le nom du thème actuel (voir le paramètre "gtk-thème-nom") et datadir le préfixe configuré lors de la compilation de GTK +, sauf substitution par la variable d'environnement GTK_DATA_PREFIX.

3
the_velour_fog