diff options
-rw-r--r-- | hardinfo2/hardinfo.c | 37 | ||||
-rw-r--r-- | modules/benchmark/guibench.c | 13 |
2 files changed, 48 insertions, 2 deletions
diff --git a/hardinfo2/hardinfo.c b/hardinfo2/hardinfo.c index 5da28488..a663341d 100644 --- a/hardinfo2/hardinfo.c +++ b/hardinfo2/hardinfo.c @@ -26,12 +26,32 @@ #include <stock.h> #include <vendor.h> #include <syncmanager.h> +#include "callbacks.h" #include <binreloc.h> #include "dmi_util.h" ProgramParameters params = { 0 }; +gulong interface_changed_sh; +GSettings *settings=NULL; + +void interface_changed_cb(GSettings *settings, gchar *name, gpointer user_data) { + gchar *theme = g_settings_get_string(settings, name); + //g_print("theme_changed: %s:%s\n", name, theme); + params.darkmode=0; + if(strstr(theme,"Dark")||strstr(theme,"dark")) params.darkmode=1; + if(params.theme==-1) cb_disable_theme(); + if(params.theme==1) cb_theme1(); + if(params.theme==2) cb_theme2(); + if(params.theme==3) cb_theme3(); + if(params.theme==4) cb_theme4(); + if(params.theme==5) cb_theme5(); + if(params.theme==6) cb_theme6(); + g_free(theme); +} + + int main(int argc, char **argv) { int exit_code = 0; @@ -101,7 +121,21 @@ int main(int argc, char **argv) } //Get DarkMode state from system - if(params.gui_running) g_object_get(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", ¶ms.darkmode, NULL); + if(params.gui_running) { + //get darkmode via gtk-theme has (d/D)ark as part of theme name from gsettings + settings=g_settings_new("org.gnome.desktop.interface"); + interface_changed_sh = g_signal_connect(settings, "changed", G_CALLBACK(interface_changed_cb), NULL); + char *theme=g_settings_get_string(settings,"gtk-theme"); + params.darkmode=0; + if(strstr(theme,"Dark")||strstr(theme,"dark")) params.darkmode=1; + g_free(theme); + //get darkmode override from gtk-3.0/settings.ini - gtksettings + gint dark=-1; + g_object_get(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", &dark, NULL); + if(dark==1) params.darkmode=1; + //if(dark==0) params.darkmode=0; + + } /* load all modules */ DEBUG("loading all modules"); @@ -164,6 +198,7 @@ int main(int argc, char **argv) vendor_cleanup(); dmidecode_cache_free(); free_auto_free_final(); + g_object_unref(settings); DEBUG("finished"); return exit_code; diff --git a/modules/benchmark/guibench.c b/modules/benchmark/guibench.c index dc43b8fe..7bef8a04 100644 --- a/modules/benchmark/guibench.c +++ b/modules/benchmark/guibench.c @@ -131,7 +131,18 @@ double guibench(double *frameTime, int *frameCount) GtkWindow * window; //Get DarkMode state from system - g_object_get(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", &darkmode, NULL); + //get darkmode via gtk-theme has (d/D)ark as part of theme name from gsettings + GSettings *settings=g_settings_new("org.gnome.desktop.interface"); + char *theme=g_settings_get_string(settings,"gtk-theme"); + darkmode=0; + if(strstr(theme,"Dark")||strstr(theme,"dark")) darkmode=1; + g_free(theme); + g_object_unref(settings); + //get darkmode override from gtk-3.0/settings.ini - gtksettings + gint dark=-1; + g_object_get(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", &dark, NULL); + if(dark==1) darkmode=1; + //if(dark==0) darkmode=0; frametime=frameTime; framecount=frameCount; |