[grisbi-bugs] [Grisbi 0002074]: Détecter le mode sombre automatiquement
Grisbi Bug Tracker
bugtracker at grisbi.org
Jeu 3 Déc 23:21:32 CET 2020
The following issue has been RESOLVED.
======================================================================
https://www.grisbi.org/bugsreports/view.php?id=2074
======================================================================
Reported By: LudovicRousseau
Assigned To: LudovicRousseau
======================================================================
Project: Grisbi
Issue ID: 2074
Category: Main
Reproducibility: always
Severity: tweak
Priority: normal
Status: resolved
Target Version: 1.9.x
OS: Mac OS X
Unstable Impact: No
Version OS:
Version GTK:
Resolution: fixed
Fixed in Version: development (git)
======================================================================
Date Submitted: 2020-11-29 10:23 CET
Last Modified: 2020-12-03 23:21 CET
======================================================================
Summary: Détecter le mode sombre automatiquement
Description:
Maintenant que Grisbi utilise un launcher il devrait être possible de détecter
le mode sombre ou clair.
Éventuellement il faut ajouter un argument au lancement du « vrai » Grisbi
pour indiquer le mode.
======================================================================
----------------------------------------------------------------------
(0005709) pbiava (administrator) - 2020-11-29 11:19
https://www.grisbi.org/bugsreports/view.php?id=2074#c5709
----------------------------------------------------------------------
peux-tu facilement regarder ce que ramène la commande :
g_object_get (G_OBJECT (settings),
"gtk-shell-shows-app-menu", &has_app_menu,
"gtk-theme-name", &theme_name,
NULL);
Sinon le thème sombre porte-t-il "dark" dans son nom ?
Pour détecter automatiquement on a deux possibilités : soit un argument dans
la ligne de commande soit une variable systeme
----------------------------------------------------------------------
(0005710) LudovicRousseau (administrator) - 2020-11-29 15:14
https://www.grisbi.org/bugsreports/view.php?id=2074#c5710
----------------------------------------------------------------------
En mode sombre ou non "gtk-theme-name" a toujours la même valeur : Adwaita
Par contre je peux avoir l'état avec
NSString *osxMode = [[NSUserDefaults standardUserDefaults]
stringForKey:@"AppleInterfaceStyle"];
En mode sombre osxMode contient "Dark" sinon NULL.
Il faut juste que je passe cet état à Grisbi par un argument sur la ligne de
commande.
Genre --darkmode
----------------------------------------------------------------------
(0005711) LudovicRousseau (administrator) - 2020-11-29 16:19
https://www.grisbi.org/bugsreports/view.php?id=2074#c5711
----------------------------------------------------------------------
Pierre, J'ai un problème.
grisbi_app_startup() est appelé *avant* grisbi_app_cmdline().
Donc le choix du fichier CSS est fait avant que les arguments de la ligne de
commande ne soit traités.
Il faudrait déplacer la sélection du CSS ailleurs que dans
grisbi_app_startup() et après avoir exécuter grisbi_app_cmdline().
Tu as une idée de solution.
----------------------------------------------------------------------
(0005712) pbiava (administrator) - 2020-11-29 18:54
https://www.grisbi.org/bugsreports/view.php?id=2074#c5712
----------------------------------------------------------------------
On doit pouvoir décaler le traitement du thème et du CSS dans
grisbi_app_activate.
Je regarde ça.
----------------------------------------------------------------------
(0005713) pbiava (administrator) - 2020-11-29 19:23
https://www.grisbi.org/bugsreports/view.php?id=2074#c5713
----------------------------------------------------------------------
je t'ai fait un truc rapide dans grisbi_app.c joint
tu lances grisbi avec -m pour option ou --darkmode.
On réfléchira après à faire un truc plus propre.
----------------------------------------------------------------------
(0005714) LudovicRousseau (administrator) - 2020-11-29 21:33
https://www.grisbi.org/bugsreports/view.php?id=2074#c5714
----------------------------------------------------------------------
OK, "grisbi -m" utilise le mode sombre.
Par contre si après je lance "grisbi" j'ai encore le mode sombre alors que je
voudrais un mode clair.
Il faudrait que le mode reste sur automatique.
En mode automatique :
si pas d'argument alors mode claire
si --darkmode alors mode sombre
----------------------------------------------------------------------
(0005715) LudovicRousseau (administrator) - 2020-11-29 21:40
https://www.grisbi.org/bugsreports/view.php?id=2074#c5715
----------------------------------------------------------------------
Le mode sombre n'est pas complet sur macOS. Il y a encore plein de blanc à la
place du sombre.
Voir copie d'écran.
Un problème du CSS ?
----------------------------------------------------------------------
(0005716) LudovicRousseau (administrator) - 2020-11-29 22:47
https://www.grisbi.org/bugsreports/view.php?id=2074#c5716
----------------------------------------------------------------------
Le choix du mode sombre dans Grisbi macOS change la configuration pour certains
widgets et textes. Mais ça ne change PAS la configuration de GTK+.
C'est comme forcer l'utilisation d'un mode sombre sur GNU/Linux alors que GTK+
utilise Adwaita et pas Adwaita-sombre.
C'est possible de lancer une application GTK+ en demandant à utiliser le mode
Adwaita-dark ?
----------------------------------------------------------------------
(0005717) LudovicRousseau (administrator) - 2020-11-29 22:53
https://www.grisbi.org/bugsreports/view.php?id=2074#c5717
----------------------------------------------------------------------
Pour lancer en mode sombre :
$ GTK_THEME=Adwaita-dark grisbi
La détection automatique ne fonctionne pas. Grisbi détecte un mode clair.
Ça marche bien sur GNU/Linux. Mais pas sous macOS.
Comme si le theme Adwaita-dark n'était pas installé.
Je regarde ce que je peux faire.
----------------------------------------------------------------------
(0005718) pbiava (administrator) - 2020-11-30 08:19
https://www.grisbi.org/bugsreports/view.php?id=2074#c5718
----------------------------------------------------------------------
Point 1 c'est fait avec le nouveau fichier joint
----------------------------------------------------------------------
(0005719) pbiava (administrator) - 2020-11-30 08:22
https://www.grisbi.org/bugsreports/view.php?id=2074#c5719
----------------------------------------------------------------------
point 2 pourquoi ne pas mettre grisbi -m.
sous Linux GTK_THEME=Adwaita-dark grisbi -m
fonctionne
----------------------------------------------------------------------
(0005720) LudovicRousseau (administrator) - 2020-11-30 13:31
https://www.grisbi.org/bugsreports/view.php?id=2074#c5720
----------------------------------------------------------------------
Je n'ai pas le mode sombre de GTK+ disponible sur macOS.
J'ai ouvert un ticket https://gitlab.gnome.org/GNOME/gtk-osx/-/issues/27
À moins que Grisbi fournisse un CSS qui change aussi les widgets de GTK (comme
le ferait GTK_THEME=Adwaita-dark) je ne vois pas comment avoir un mode sombre
sur macOS.
à suivre...
----------------------------------------------------------------------
(0005721) pbiava (administrator) - 2020-11-30 14:10
https://www.grisbi.org/bugsreports/view.php?id=2074#c5721
----------------------------------------------------------------------
Regarde dans le fichier gtk+-3.24.21.tar.xz tu as la description du thème dark.
Tu pourras peut-être en faire quelque chose.
----------------------------------------------------------------------
(0005722) pbiava (administrator) - 2020-11-30 14:19
https://www.grisbi.org/bugsreports/view.php?id=2074#c5722
----------------------------------------------------------------------
Dans Ubuntu 20.10 gtk-contained-dark.css est intégré dans
lib/x86_64-linux-gnu/libgtk-3.so.0.2404.19. Ce serait curieux que ce soit pas le
cas dans gtk3. Il suffit peut être que tu copies le fichier css qui se trouve
dans /usr/share/themes/Adwaita-dark/gtk-3.0 il est ci-dessous.
----------------------------------------------------------------------
(0005725) pbiava (administrator) - 2020-12-01 06:50
https://www.grisbi.org/bugsreports/view.php?id=2074#c5725
----------------------------------------------------------------------
As-tu pu tester la commande GTK_THEME=Adwaita-dark grisbi -m et regardé la
présence de gtk-container-dark dans libgtk-3.so ?
----------------------------------------------------------------------
(0005726) LudovicRousseau (administrator) - 2020-12-01 10:22
https://www.grisbi.org/bugsreports/view.php?id=2074#c5726
----------------------------------------------------------------------
$ strings libgtk-3.0.dylib | grep Adwaita
Adwaita
@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained.css");
inkscape:export-filename="/home/jimmac/Projects/gtk/gtk/theme/Adwaita/assets/check at 2-symbolic.symbolic.png"
(uuay)Adwaita/
@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");
J'ai (à l’œil) pareil que sous GNU/Linux.
$ GTK_THEME=Adwaita-dark ./bin/grisbi -m
J'ai bien la config spécial du mode sombre de Grisbi mais le reste des widgets
reste en mode clair. Comme sur la copie d'écran que j'ai faite plus haut.
----------------------------------------------------------------------
(0005727) pbiava (administrator) - 2020-12-01 15:42
https://www.grisbi.org/bugsreports/view.php?id=2074#c5727
----------------------------------------------------------------------
Peux-tu mettre quelque part le fichier share/themes/Adwaita-dark/gtk-3.0/gtk.css
?
Je ne souviens plus comment est fabriqué le package mais il doit y avoir un
répertoire theme
----------------------------------------------------------------------
(0005728) LudovicRousseau (administrator) - 2020-12-01 19:03
https://www.grisbi.org/bugsreports/view.php?id=2074#c5728
----------------------------------------------------------------------
J'ai, dans les sources de gtk+ :
gtk+-3.24.20/gtk/theme/Adwaita/gtk.css
gtk+-3.24.20/gtk/theme/Adwaita/gtk-dark.css
Par contre ces fichiers ne sont pas installés.
Dans les fichiers installés j'ai :
$ find share/themes
share/themes
share/themes/Default
share/themes/Default/gtk-3.0
share/themes/Default/gtk-3.0/gtk-keys.css
share/themes/Emacs
share/themes/Emacs/gtk-3.0
share/themes/Emacs/gtk-3.0/gtk-keys.css
share/themes/Mac
share/themes/Mac/gtk-3.0
share/themes/Mac/gtk-3.0/gtk-keys.css
Je ne sais pas bien ce que tu veux me faire faire.
----------------------------------------------------------------------
(0005729) pbiava (administrator) - 2020-12-01 19:31
https://www.grisbi.org/bugsreports/view.php?id=2074#c5729
----------------------------------------------------------------------
Je voudrais que tu ajoutes dans share/themes un répertoire Adwaita-dark dans
lequel tu mets le gtk.css qui est au dessus.
le fichier contient :
@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");
J'espère que gtk utilise les mêmes adresses que sous Linux.
Il faudra peu-être aussi créer un répertoire Adwaita comme sous Ubuntu.
----------------------------------------------------------------------
(0005730) LudovicRousseau (administrator) - 2020-12-01 21:47
https://www.grisbi.org/bugsreports/view.php?id=2074#c5730
----------------------------------------------------------------------
J'ai fait comme décrit.
C'est pareil. Pas de mode sombre avec "grisbi -m".
Personne n'a encore demandé le support du mode sombre sur macOS. Donc c'est pas
un problème urgent.
----------------------------------------------------------------------
(0005731) pbiava (administrator) - 2020-12-02 06:57
https://www.grisbi.org/bugsreports/view.php?id=2074#c5731
----------------------------------------------------------------------
Dommage . Pourtant les éléments sont présents semble-t-il.
----------------------------------------------------------------------
(0005732) pbiava (administrator) - 2020-12-02 07:34
https://www.grisbi.org/bugsreports/view.php?id=2074#c5732
----------------------------------------------------------------------
Si quelqu'un à un besoin d'y passer on peut importer dans le fichier
grisbi-dark.css le contenu de gtk-contained-dark.css. ça semble fonctionner.
----------------------------------------------------------------------
(0005739) LudovicRousseau (administrator) - 2020-12-02 22:51
https://www.grisbi.org/bugsreports/view.php?id=2074#c5739
----------------------------------------------------------------------
Dans le fichier share/grisbi/ui/grisbi-dark.css j'ai ajouté la ligne :
@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");
Et maintenant j'ai un mode sombre complet avec "grisbi -m". Cool !
Quelle est la méthode la plus propre pour avoir un fichier grisbi-dark.css
custom pour macOS ?
On crée un grisbi-dark.css.in avec une macro M4 qui sera exécutée par
./configure ?
----------------------------------------------------------------------
(0005740) pbiava (administrator) - 2020-12-03 07:03
https://www.grisbi.org/bugsreports/view.php?id=2074#c5740
----------------------------------------------------------------------
Provisoirement on peut faire comme ça. Il faut vérifier quel impact ça a sur
la gestion des modifications faites pas les utilisateurs et qui crée un fichier
grisbi-dark.css personnalisé.
Il faudrait voir si la fonction gdk_x11_window_set_theme_variant () ne
fonctionnerait pas dans ce cas particulier.
----------------------------------------------------------------------
(0005745) LudovicRousseau (administrator) - 2020-12-03 23:21
https://www.grisbi.org/bugsreports/view.php?id=2074#c5745
----------------------------------------------------------------------
Implémenté dans d5a7fb2234ee110df547bdc8d26b27dc2c5fc2f8
Issue History
Date Modified Username Field Change
======================================================================
2020-11-29 10:23 LudovicRousseauNew Issue
2020-11-29 10:23 LudovicRousseauStatus new => assigned
2020-11-29 10:23 LudovicRousseauAssigned To => LudovicRousseau
2020-11-29 11:19 pbiava Note Added: 0005709
2020-11-29 15:14 LudovicRousseauNote Added: 0005710
2020-11-29 16:19 LudovicRousseauNote Added: 0005711
2020-11-29 18:54 pbiava Note Added: 0005712
2020-11-29 19:23 pbiava File Added: grisbi_app.c
2020-11-29 19:23 pbiava Note Added: 0005713
2020-11-29 21:33 LudovicRousseauNote Added: 0005714
2020-11-29 21:40 LudovicRousseauNote Added: 0005715
2020-11-29 21:40 LudovicRousseauFile Added: grisbi.png
2020-11-29 22:47 LudovicRousseauNote Added: 0005716
2020-11-29 22:53 LudovicRousseauNote Added: 0005717
2020-11-30 08:19 pbiava File Added: grisbi_app-2.c
2020-11-30 08:19 pbiava Note Added: 0005718
2020-11-30 08:22 pbiava Note Added: 0005719
2020-11-30 13:31 LudovicRousseauNote Added: 0005720
2020-11-30 14:10 pbiava File Added: extrait gtk3 package.png
2020-11-30 14:10 pbiava Note Added: 0005721
2020-11-30 14:19 pbiava File Added: gtk.css
2020-11-30 14:19 pbiava Note Added: 0005722
2020-12-01 06:50 pbiava Note Added: 0005725
2020-12-01 10:22 LudovicRousseauNote Added: 0005726
2020-12-01 15:42 pbiava Note Added: 0005727
2020-12-01 19:03 LudovicRousseauNote Added: 0005728
2020-12-01 19:31 pbiava Note Added: 0005729
2020-12-01 21:47 LudovicRousseauNote Added: 0005730
2020-12-02 06:57 pbiava Note Added: 0005731
2020-12-02 07:34 pbiava Note Added: 0005732
2020-12-02 22:51 LudovicRousseauNote Added: 0005739
2020-12-03 07:03 pbiava Note Added: 0005740
2020-12-03 23:21 LudovicRousseauNote Added: 0005745
2020-12-03 23:21 LudovicRousseauStatus assigned => resolved
2020-12-03 23:21 LudovicRousseauResolution open => fixed
2020-12-03 23:21 LudovicRousseauFixed in Version => development (git)
======================================================================
Plus d'informations sur la liste de diffusion bugsreports