Journal Inverser les couleurs d'un thème GTK/Qt

Posté par  . Licence CC By‑SA.
Étiquettes :
22
4
nov.
2016

Bonjour nal,

Une des choses que j'ai toujours appréciées sous Linux, c'est le fait de pouvoir mettre des thèmes sombres, voir noir, pour ne pas avoir les yeux détruits dans l'obscurité.

Lors du passe au GTK 3.20, la compatibilité avec les thèmes GTK3 antérieur a été encore une fois cassée. Et les mainteneurs des thèmes ont commencé à jeter l'éponge (ou alors ils sont tous sur Debian, donc sera leur problème dans 5 ans). Résultat, les thèmes sont cassés et tous les softs utilisant GTK3 sont moches ou inexploitables.

Les seuls thèmes complets et propres compatibles avec le GTK 3.20 étaient blancs ou clairs, je me suis dit que j'allais faire mon propre thème… La tâche avait l'air vraiment insurmontable, faire un thème compatible avec GTK1/2/3, Qt from scratch… Nan, trop long (enfin, ça a l'air long, je n'ai pas creusé plus que ça).

J'ai alors décidé de faire un script pour inverser les couleurs d'un thème blanc propre, a grand coup de regexp de sed et un peu d'imagemagick. Le résultat est pas trop mal, donc je le partage avec vous, en me disant que je ne dois pas être tout seul dans cette situation.

Exemple

Avec le thème Menta (le thème de linux mint) ça marche plutôt bien:

Menta:
Menta
Menta inversé:
Menta_negate

Utilisation

Le script est dispo ici:
https://github.com/bnurb/negate-theme-color

Il faut installer imagemagick pour qu'il fonctionne

./negate-theme-color.sh [theme directory]

Le dossier du thème sera copié dans ~/.thèmes/ avec se verra ajouter un "_negate" à la fin.

Fonctionnement

Toutes les couleurs telles que: #123456789ABC, #123456, #123, rgb(1,2,3), rgba(1,2,3,x) sont remplacées par leur opposée dans les fichiers .css, .rc, .theme et .xml
Et toutes les images PNG sont inversées grâce à imagemagick.

En espérant que cela servira pas à que nal.. dal… bon ok j'y vais --->[]

  • # N'imp

    Posté par  (site Web personnel) . Évalué à 3.

    Désolé, mais inverser aussi les images… ça va donner un travail de cochon.

    Il est si simple d'installer redshift. L'essayer c'est l'adopter.
    Fini les yeux explosés le soir.

    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

    • [^] # Re: N'imp

      Posté par  . Évalué à 4.

      Pas compatible Wayland

      • [^] # Re: N'imp

        Posté par  . Évalué à 1.

        Quand wayland sera imposé partout, je sens que ça va être un gros moment de remise en doute… plus de x2go, plus de redshift, et plus sans doute d'autres paquets très utiles… gasp…

        • [^] # Re: N'imp

          Posté par  . Évalué à 1.

          Ou alors il y aura des alternatives. La demande est là ;)

    • [^] # Re: N'imp

      Posté par  (site Web personnel) . Évalué à 7.

      J'ai mis un peu de temps à trouver ce qu'était Redshift, donc voici le lien:
      http://jonls.dk/redshift/

      Et la description du paquet debian :

      Ajuste la température de couleur de votre écran.

      La température de couleur est définie en fonction de la position du soleil. Une température de couleur différente est définie durant la nuit et le jour. Pendant le crépuscule et l'aube, la température de couleur change doucement depuis la température de nuit jusqu'à celle du jour afin de laisser vos yeux s'adapter doucement.

      • [^] # Re: N'imp

        Posté par  . Évalué à 2.

        Merci pour le lien, je ne connaissais pas et ça passe immédiatement en indispensable ;).

        La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

    • [^] # Re: N'imp

      Posté par  . Évalué à 3.

      Je confirme largement. Depuis que je fais tourner redshift, je ne peux plus m'en passer. Et lorsqu'il n'est pas lancé, ça me saute immédiatement aux yeux.

      Par contre, j'espère que l'on aura une solution compatible avec Wayland si ce que je lis plus haut est vrai. Je ne me vois pas revenir en arrière.

      • [^] # Re: N'imp

        Posté par  (site Web personnel) . Évalué à 1.

        Par contre, j'espère que l'on aura une solution compatible avec Wayland si ce que je lis plus haut est vrai. Je ne me vois pas revenir en arrière.

        Les gens de GNOME projettent de l'implémenter eux-même.

    • [^] # Re: N'imp

      Posté par  (site Web personnel) . Évalué à 6.

      J’utilise redshift avec satisfaction (que dis-je, plaisir même !) en plus d’un thème sombre. L’un n’empêche pas l’autre. J’ai les yeux reposés et je dors comme un bébé :-)

    • [^] # Re: N'imp

      Posté par  (site Web personnel) . Évalué à 1.

      Ce qu'il oublie c'est que GNOME gère la notion de thème sombre, typiquement le thème Adwaita par défaut a une variante sombre qui est activable dans gnome-tweak-tools et est bien travaillé. Les thèmes GTK+ peuvent tous fournir cela.

      Donc en théorie, pas besoin de faire un travail de cochon pour avoir un thème GTK+ sombre, ça existe déjà.

      • [^] # Re: N'imp

        Posté par  . Évalué à 3.

        Sur un environnement Gnome complet peut-être, mais avec openbox je n'ai jamais réussis à activer le thème sombre. Bon c'est sûrement possible mais je n'ai pas cherché beaucoup plus loin.

        • [^] # Re: N'imp

          Posté par  . Évalué à 3. Dernière modification le 04/11/16 à 16:17.

          Pour toutes les applis gtk(3?), doit fonctionner avec la plupart des thèmes de base :

          cat ~/.config/gtk-3.0/settings.ini
          [Settings]
          gtk-application-prefer-dark-theme=1
          

          La prise en compte de ce paramètre est désactivée dans Firefox par contre depuis la version 47 (seule la 46 prend donc en charge la version sombre des thèmes GTK3) :
          il lui faut la variable environnent : https://bbs.archlinux.org/viewtopic.php?id=213503

          MOZ_ALLOW_GTK_DARK_THEME=true

          Pour les sites ou extensions cassés, il y a l’extension Stylish. Par exemple, pour Keefox (qui devient illisible avec un thème sombre) : https://userstyles.org/styles/130599/keefox-dark-theme.

          • [^] # Re: N'imp

            Posté par  . Évalué à 1.

            Je viens de tester, ça fonctionne, mais le problème est que les soft qui sont en GTK2 ou Qt, restent sur le thème claire. Ce n'est pas uniforme.

            Pour Firefox j'utilise cette extention, jamais de problème de texte illisible avec sa.

    • [^] # Re: N'imp

      Posté par  . Évalué à 2.

      Je ne connaissais pas redshift, je testerai.

      Concernant l'inversion d'image, le résultat n'est pas si mal si tu regardes les radio/check button, sa marche très bien et la transparence n'est pas inversée.

      Après c'est sur qui s'il y a un photo de chat le rendu sera… différent.

    • [^] # Re: N'imp

      Posté par  (site Web personnel) . Évalué à 5.

      Oui mais non, moi par exemple je fais aussi de la photo, et des trucs comme ça qui font que j’ai besoin de couleurs fidèles. Et franchement, j’utilise un thème sombre (gtk2 ET gtk3) par défaut, avec une alternative manuelle pour les quelques applis qui ont un problème avec le thème gtk2 sombre, et c’est hyper confortable.

      J’utilise ce thème gtk2: https://github.com/axxapy/Adwaita-dark-gtk2
      Et je crée à coup de liens symboliques un thème Adwaita qui fusionne le thème gtk2 cité avec le thème gtk3 de la distro.

      mkdir -pv ~/.themes
      cd ~/.themes
      mkdir -v Adwaita
      find /usr/share/themes/Adwaita -maxdepth 1 ! -name gtk-2.0 -exec ln -sv {} Adwaita/ \;
      git clone https://github.com/axxapy/Adwaita-dark-gtk2.git
      ln -sv ../Adwaita-dark-gtk2/gtk-2.0 Adwaita/

      J’ai activé le thème sombre global (dans gnome-tweak-tool).

      J’ai remarqué que beaucoup d’applis (notamment les applis GTK2) doivent être relancées pour bénéficier du thème sombre.

      J’ai créé un lanceur très simple nommé gtkrun_light avec ça dedans :

      #! /bin/sh
      
      # GTK2
      export GTK2_RC_FILES='/usr/share/themes/Adwaita/gtk-2.0/gtkrc'
      # GTK3
      export GTK_THEME='Adwaita'
      
      ${@}
      
      #EOF

      Ça s’utilise ainsi : gtkrun_light monappli
      Toutes les applis seront foncées, sauf celles lancées explicitement avec ce lanceur.

      ce commentaire est sous licence cc by 4 et précédentes

  • # Joli !

    Posté par  . Évalué à 9.

    Vraiment pas mal comme résulta pour quelque chose fait automatiquement. Et pourquoi ne pas soumettre ce nouveau thème dans upstream pour que tout le monde en profite ?

    • [^] # Re: Joli !

      Posté par  . Évalué à 1.

      Pourquoi pas, je trouvais ça plus simple de partager le script directement.
      Sur gnome-look? Où est ce qu'il y a de nouveaux sites dans ce genre?

    • [^] # Re: Joli !

      Posté par  (site Web personnel) . Évalué à 5.

      Je trouve aussi le résultat surprenant je n'aurais pas parié sur un effet aussi cool de prime à bord.

  • # "sa"

    Posté par  . Évalué à 8. Dernière modification le 04/11/16 à 15:18.

    Vous ne voulez pas avoir les yeux détruits par l'obscurité, mais vous détruisez les yeux de vos lecteurs en écrivant "sa" au lieu de "ça" à 3 reprises. Je ne parle pas des confusions "à" et "a".

  • # Des thèmes GTK 3.20 sombres?

    Posté par  (site Web personnel) . Évalué à 4.

    Adwaita, Arc, Numix, …

    T'as pas du chercher longtemps…

    • [^] # Re: Des thèmes GTK 3.20 sombres?

      Posté par  (site Web personnel) . Évalué à 2.

      Perso, sur Sid, ça casse régulièrement avec gnome-flashback.
      Adwaita est juste devenu inutilisable (les listes ont un fond blanc).
      Heureusement j'ai trouvé Numix l'autre jour (même si la barre des tâches est plus très lisible, mais l'autre thème sombre qui marche lui n'a quasi aucune différence entre la fenêtre active et les autres…).
      Sinon pour le reste on arrive à avoir un truc potable même avec Firefox (module certains sites qui forcent des couleurs de texte mais pas de fond ou vice-versa, y compris dans les formulaires) :

      https://pod.g3l.org/p/56781

      • [^] # Re: Des thèmes GTK 3.20 sombres?

        Posté par  (site Web personnel) . Évalué à 2.

        C'est quoi que tu appelles Gnome flashback? Gnome classic?

      • [^] # Re: Des thèmes GTK 3.20 sombres?

        Posté par  (site Web personnel) . Évalué à 2.

        Tu mélanges les versions ? Parce qu'en ayant la même version d'Adwaita et de GTK+, il n'est pas censé y avoir ce genre de souci.

        Autre possibilité, dans le cas de Arc (et sans doute d'autres thèmes), je crois me souvenir qu'il faut réinstaller le thème si une version majeure de GTK+ a été mise à jour après coup, puisque il détecte la version installée et s'adapte en conséquence au moment de l'installation du thème.

  • # Très légère simplification

    Posté par  . Évalué à 4. Dernière modification le 05/11/16 à 07:58.

    Merci !

    Fixer une lampe (c’est en gros ce à quoi regarder un écran revient), c’est fatiguant pour les yeux, autant utiliser de meilleurs abat-jours.

    Entre le cassage régulier des thèmes pour Gtk 3, mon allergie à CSS (sa syntaxe absconse me rappelle celle du fichier de configuration de Sendmail…) et les innombrables couleurs à changer, ce script devrait m’être bien utile (jusque là, ma solution était d’éviter autant que possible les applications Gtk 3…).

    Le plus beau, c’est que les thèmes à la mode — fond blanc pétant, surlignage bleu — donnent, une fois inversés, les résultats les plus reposants pour les yeux.

    Je suggérerais juste une toute petite simplification : dans

    # Exchange black and white keywords
    sed -i 's/black/w_h_i_t_e/g' $FILES
    sed -i 's/white/b_l_a_c_zk/g' $FILES
    sed -i 's/w_h_i_t_e/white/g' $FILES
    sed -i 's/b_l_a_c_k/black/g' $FILES

    il y a à mon sens une étape superflue, ça doit suffire :

    # Exchange black and white keywords
    sed -i 's/black/w_h_i_t_e/g' $FILES
    sed -i 's/white/black/g'     $FILES
    sed -i 's/w_h_i_t_e/white/g' $FILES

    Guerres, déréglement climatique, effondrement de la biodiversité, épuisement des ressources, pandémie, montée du fascisme, de l’intégrisme et du complotisme… On vit une époque formidable…

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.