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> | 
