From a3a7def2045c19bbac3cb5e5aad4032606d710aa Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sun, 10 Mar 2024 17:45:38 +0100 Subject: [PATCH] night-mode: check for GTK_THEME env var and prefer-dark setting GTK_THEME env var does not influence gtk-theme-name property. So it has to be checked by hand. --- .../content/android_content_Context.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/api-impl-jni/content/android_content_Context.c b/src/api-impl-jni/content/android_content_Context.c index 98d5a973..7bf696b7 100644 --- a/src/api-impl-jni/content/android_content_Context.c +++ b/src/api-impl-jni/content/android_content_Context.c @@ -11,10 +11,18 @@ JNIEXPORT void JNICALL Java_android_content_Context_native_1updateConfig(JNIEnv *env, jclass class, jobject config) { GtkSettings *settings = gtk_settings_get_default(); - gchar *theme_name; - g_object_get(settings, "gtk-theme-name", &theme_name, NULL); - bool night_mode = strcasestr(theme_name, "dark") || strcasestr(theme_name, "black"); + char *theme_name; + gboolean prefer_dark = false; + gboolean theme_name_from_env = false; + + theme_name = getenv("GTK_THEME"); + theme_name_from_env = theme_name != NULL; + if (!theme_name_from_env) + g_object_get(settings, "gtk-theme-name", &theme_name, "gtk-application-prefer-dark-theme", &prefer_dark, NULL); + bool night_mode = prefer_dark || strcasestr(theme_name, "dark") || strcasestr(theme_name, "black"); if (night_mode) { _SET_INT_FIELD(config, "uiMode", /*UI_MODE_NIGHT_YES*/ 0x20); } -} \ No newline at end of file + if (!theme_name_from_env) + g_free(theme_name); +}