diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-07-25 20:27:04 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-07-25 20:27:36 +0200 |
commit | 9f1041988dc333cc1ef7a158b341cb56c11dd516 (patch) | |
tree | 5c47c485f40f96384a75e1ff5d69d4802c314726 | |
parent | fa034a1a6a5bdc78ae2ea4575635dd8f81330033 (diff) | |
download | fiv-9f1041988dc333cc1ef7a158b341cb56c11dd516.tar.gz fiv-9f1041988dc333cc1ef7a158b341cb56c11dd516.tar.xz fiv-9f1041988dc333cc1ef7a158b341cb56c11dd516.zip |
Add a dark theme toggle to GSettings
-rw-r--r-- | fiv.c | 23 | ||||
-rw-r--r-- | fiv.gschema.xml | 4 |
2 files changed, 20 insertions, 7 deletions
@@ -1099,6 +1099,16 @@ show_help_shortcuts(void) gtk_widget_show(window); } +static void +toggle_sunlight(void) +{ + GtkSettings *settings = gtk_settings_get_default(); + const char *property = "gtk-application-prefer-dark-theme"; + gboolean set = FALSE; + g_object_get(settings, property, &set, NULL); + g_object_set(settings, property, !set, NULL); +} + // Cursor keys, e.g., simply cannot be bound through accelerators // (and GtkWidget::keynav-failed would arguably be an awful solution). // @@ -1116,13 +1126,8 @@ on_key_press(G_GNUC_UNUSED GtkWidget *widget, GdkEventKey *event, { switch (event->state & gtk_accelerator_get_default_mod_mask()) { case GDK_MOD1_MASK | GDK_SHIFT_MASK: - if (event->keyval == GDK_KEY_D) { - GtkSettings *settings = gtk_settings_get_default(); - const char *property = "gtk-application-prefer-dark-theme"; - gboolean set = FALSE; - g_object_get(settings, property, &set, NULL); - g_object_set(settings, property, !set, NULL); - } + if (event->keyval == GDK_KEY_D) + toggle_sunlight(); break; case GDK_CONTROL_MASK: case GDK_CONTROL_MASK | GDK_SHIFT_MASK: @@ -1907,6 +1912,10 @@ main(int argc, char *argv[]) gtk_icon_theme_add_resource_path( gtk_icon_theme_get_default(), "/org/gnome/design/IconLibrary/"); + GSettings *settings = g_settings_new(PROJECT_NS PROJECT_NAME); + if (g_settings_get_boolean(settings, "dark-theme")) + toggle_sunlight(); + GtkCssProvider *provider = gtk_css_provider_new(); gtk_css_provider_load_from_data( provider, stylesheet, sizeof stylesheet - 1, NULL); diff --git a/fiv.gschema.xml b/fiv.gschema.xml index d52eb46..dfddfd1 100644 --- a/fiv.gschema.xml +++ b/fiv.gschema.xml @@ -10,5 +10,9 @@ double buffering. </description> </key> + <key name='dark-theme' type='b'> + <default>false</default> + <summary>Use a dark theme variant</summary> + </key> </schema> </schemalist> |