summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Mikhaylenko <alexm@gnome.org>2023-03-21 22:59:39 +0400
committerAlexander Mikhaylenko <alexm@gnome.org>2023-03-23 11:25:12 +0400
commit957a162a99a6482452f81d8b7f4dc876cf87e11f (patch)
tree9a204d354de4f71188bc5dfca4d95e7258d8b532
parent028a2d25f7a84645b583bef597b87d71964d564e (diff)
downloadgnome-shell-957a162a99a6482452f81d8b7f4dc876cf87e11f.tar.gz
st/settings: Add :accent-color
-rw-r--r--src/st/meson.build2
-rw-r--r--src/st/st-settings.c26
-rw-r--r--src/st/st-settings.h14
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)