diff options
author | Alexander Mikhaylenko <alexm@gnome.org> | 2023-03-21 22:59:39 +0400 |
---|---|---|
committer | Alexander Mikhaylenko <alexm@gnome.org> | 2023-03-23 11:25:12 +0400 |
commit | 957a162a99a6482452f81d8b7f4dc876cf87e11f (patch) | |
tree | 9a204d354de4f71188bc5dfca4d95e7258d8b532 | |
parent | 028a2d25f7a84645b583bef597b87d71964d564e (diff) | |
download | gnome-shell-957a162a99a6482452f81d8b7f4dc876cf87e11f.tar.gz |
st/settings: Add :accent-color
-rw-r--r-- | src/st/meson.build | 2 | ||||
-rw-r--r-- | src/st/st-settings.c | 26 | ||||
-rw-r--r-- | src/st/st-settings.h | 14 |
3 files changed, 41 insertions, 1 deletions
diff --git a/src/st/meson.build b/src/st/meson.build index 456860d56..d77e43ba8 100644 --- a/src/st/meson.build +++ b/src/st/meson.build @@ -183,7 +183,7 @@ st_cflags = [ libst = shared_library('st-' + mutter_api_version, sources: st_gir_sources + st_nogir_sources + croco_sources, c_args: st_cflags, - dependencies: [clutter_dep, mutter_dep, libxml_dep, gdk_pixbuf_dep, m_dep], + dependencies: [clutter_dep, mutter_dep, libxml_dep, gdk_pixbuf_dep, m_dep, schemas_dep], build_rpath: mutter_typelibdir, install_rpath: mutter_typelibdir, install_dir: pkglibdir, diff --git a/src/st/st-settings.c b/src/st/st-settings.c index 04bf68f40..90afc2e33 100644 --- a/src/st/st-settings.c +++ b/src/st/st-settings.c @@ -26,11 +26,13 @@ #include "st-private.h" #include "st-settings.h" +#include "st-enum-types.h" #define KEY_ENABLE_ANIMATIONS "enable-animations" #define KEY_PRIMARY_PASTE "gtk-enable-primary-paste" #define KEY_DRAG_THRESHOLD "drag-threshold" #define KEY_FONT_NAME "font-name" +#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" @@ -42,6 +44,7 @@ enum { PROP_PRIMARY_PASTE, PROP_DRAG_THRESHOLD, PROP_FONT_NAME, + PROP_ACCENT_COLOR, PROP_HIGH_CONTRAST, PROP_GTK_ICON_THEME, PROP_MAGNIFIER_ACTIVE, @@ -62,6 +65,7 @@ struct _StSettings GSettings *lockdown_settings; gchar *font_name; + StSystemAccentColor accent_color; gboolean high_contrast; gchar *gtk_icon_theme; int inhibit_animations_count; @@ -179,6 +183,9 @@ st_settings_get_property (GObject *object, case PROP_FONT_NAME: g_value_set_string (value, settings->font_name); break; + case PROP_ACCENT_COLOR: + g_value_set_enum (value, settings->accent_color); + break; case PROP_HIGH_CONTRAST: g_value_set_boolean (value, settings->high_contrast); break; @@ -254,6 +261,18 @@ st_settings_class_init (StSettingsClass *klass) 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:high-contrast: * * Whether the accessibility high contrast mode is enabled. @@ -332,6 +351,11 @@ on_interface_settings_changed (GSettings *g_settings, settings->font_name = g_settings_get_string (g_settings, key); g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_FONT_NAME]); } + 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]); + } else if (g_str_equal (key, KEY_GTK_ICON_THEME)) { g_free (settings->gtk_icon_theme); @@ -420,6 +444,8 @@ st_settings_init (StSettings *settings) KEY_PRIMARY_PASTE); settings->font_name = g_settings_get_string (settings->interface_settings, KEY_FONT_NAME); + settings->accent_color = g_settings_get_enum (settings->interface_settings, + KEY_ACCENT_COLOR); settings->gtk_icon_theme = g_settings_get_string (settings->interface_settings, KEY_GTK_ICON_THEME); settings->drag_threshold = g_settings_get_int (settings->mouse_settings, diff --git a/src/st/st-settings.h b/src/st/st-settings.h index 8b2549469..2e9f28c1c 100644 --- a/src/st/st-settings.h +++ b/src/st/st-settings.h @@ -25,9 +25,23 @@ #define __ST_SETTINGS_H__ #include <glib-object.h> +#include <gdesktop-enums.h> G_BEGIN_DECLS +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_BROWN = G_DESKTOP_ACCENT_COLOR_BROWN, + 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) |