[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