From ec9217bc0d69d11df11341c3c2bcb9c871993707 Mon Sep 17 00:00:00 2001 From: Alice Mikhaylenko Date: Tue, 21 Mar 2023 22:59:39 +0400 Subject: [PATCH] st/settings: Add :accent-color Part-of: --- meson.build | 2 +- src/st/st-settings.c | 25 +++++++++++++++++++++++++ src/st/st-settings.h | 12 ++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 0b265ad92..7ba28a3d8 100644 --- a/meson.build +++ b/meson.build @@ -28,7 +28,7 @@ gjs_req = '>= 1.73.1' gtk_req = '>= 4.0' mutter_req = '>= 46.0' polkit_req = '>= 0.100' -schemas_req = '>= 46.beta' +schemas_req = '>= 47.alpha' systemd_req = '>= 246' ibus_req = '>= 1.5.19' gnome_desktop_req = '>= 40' diff --git a/src/st/st-settings.c b/src/st/st-settings.c index 07e60abce..0101a00c7 100644 --- a/src/st/st-settings.c +++ b/src/st/st-settings.c @@ -33,6 +33,7 @@ #define KEY_DRAG_THRESHOLD "drag-threshold" #define KEY_FONT_NAME "font-name" #define KEY_COLOR_SCHEME "color-scheme" +#define KEY_ACCENT_COLOR "accent-color" #define KEY_HIGH_CONTRAST "high-contrast" #define KEY_GTK_ICON_THEME "icon-theme" #define KEY_MAGNIFIER_ACTIVE "screen-magnifier-enabled" @@ -45,6 +46,7 @@ enum { PROP_DRAG_THRESHOLD, PROP_FONT_NAME, PROP_COLOR_SCHEME, + PROP_ACCENT_COLOR, PROP_HIGH_CONTRAST, PROP_GTK_ICON_THEME, PROP_MAGNIFIER_ACTIVE, @@ -75,6 +77,7 @@ struct _StSettings gint drag_threshold; double slow_down_factor; StSystemColorScheme color_scheme; + StSystemAccentColor accent_color; }; G_DEFINE_TYPE (StSettings, st_settings, G_TYPE_OBJECT) @@ -192,6 +195,9 @@ st_settings_get_property (GObject *object, case PROP_COLOR_SCHEME: g_value_set_enum (value, settings->color_scheme); break; + case PROP_ACCENT_COLOR: + g_value_set_enum (value, settings->accent_color); + break; case PROP_MAGNIFIER_ACTIVE: g_value_set_boolean (value, settings->magnifier_active); break; @@ -294,6 +300,18 @@ st_settings_class_init (StSettingsClass *klass) ST_SYSTEM_COLOR_SCHEME_DEFAULT, ST_PARAM_READABLE); + /** + * StSettings:accent-color: + * + * The current accent color. + */ + props[PROP_ACCENT_COLOR] = g_param_spec_enum ("accent-color", + "accent color", + "accent color", + ST_TYPE_SYSTEM_ACCENT_COLOR, + ST_SYSTEM_ACCENT_COLOR_BLUE, + ST_PARAM_READABLE); + /** * StSettings:magnifier-active: * @@ -364,6 +382,11 @@ on_interface_settings_changed (GSettings *g_settings, g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_COLOR_SCHEME]); } + else if (g_str_equal (key, KEY_ACCENT_COLOR)) + { + settings->accent_color = g_settings_get_enum (g_settings, key); + g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_ACCENT_COLOR]); + } } static void @@ -447,6 +470,8 @@ st_settings_init (StSettings *settings) KEY_GTK_ICON_THEME); settings->color_scheme = g_settings_get_enum (settings->interface_settings, KEY_COLOR_SCHEME); + settings->accent_color = g_settings_get_enum (settings->interface_settings, + KEY_ACCENT_COLOR); settings->drag_threshold = g_settings_get_int (settings->mouse_settings, KEY_DRAG_THRESHOLD); settings->magnifier_active = g_settings_get_boolean (settings->a11y_applications_settings, diff --git a/src/st/st-settings.h b/src/st/st-settings.h index f12c4b5da..272a4ad39 100644 --- a/src/st/st-settings.h +++ b/src/st/st-settings.h @@ -35,6 +35,18 @@ typedef enum { ST_SYSTEM_COLOR_SCHEME_PREFER_LIGHT = G_DESKTOP_COLOR_SCHEME_PREFER_LIGHT, } StSystemColorScheme; +typedef enum { + ST_SYSTEM_ACCENT_COLOR_BLUE = G_DESKTOP_ACCENT_COLOR_BLUE, + ST_SYSTEM_ACCENT_COLOR_TEAL = G_DESKTOP_ACCENT_COLOR_TEAL, + ST_SYSTEM_ACCENT_COLOR_GREEN = G_DESKTOP_ACCENT_COLOR_GREEN, + ST_SYSTEM_ACCENT_COLOR_YELLOW = G_DESKTOP_ACCENT_COLOR_YELLOW, + ST_SYSTEM_ACCENT_COLOR_ORANGE = G_DESKTOP_ACCENT_COLOR_ORANGE, + ST_SYSTEM_ACCENT_COLOR_RED = G_DESKTOP_ACCENT_COLOR_RED, + ST_SYSTEM_ACCENT_COLOR_PINK = G_DESKTOP_ACCENT_COLOR_PINK, + ST_SYSTEM_ACCENT_COLOR_PURPLE = G_DESKTOP_ACCENT_COLOR_PURPLE, + ST_SYSTEM_ACCENT_COLOR_SLATE = G_DESKTOP_ACCENT_COLOR_SLATE, +} StSystemAccentColor; + #define ST_TYPE_SETTINGS (st_settings_get_type ()) G_DECLARE_FINAL_TYPE (StSettings, st_settings, ST, SETTINGS, GObject)