From 36eee131c20dd850e5f59bc844fd1ca243458d04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 19 Aug 2024 17:26:24 +0200 Subject: [PATCH] settings: Allow overriding experimental settings with an env var This makes it simpler to experiment with experimental settings without having to make changes to any gsettings fields one might not want to change. Part-of: --- src/backends/meta-settings.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c index ff5e0f0ed..811b8aaae 100644 --- a/src/backends/meta-settings.c +++ b/src/backends/meta-settings.c @@ -43,6 +43,14 @@ enum N_SIGNALS }; +static GDebugKey experimental_feature_keys[] = { + { "scale-monitor-framebuffer", META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER }, + { "kms-modifiers", META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS }, + { "autoclose-xwayland", META_EXPERIMENTAL_FEATURE_AUTOCLOSE_XWAYLAND }, + { "variable-refresh-rate", META_EXPERIMENTAL_FEATURE_VARIABLE_REFRESH_RATE }, + { "xwayland-native-scaling", META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING }, +}; + static guint signals[N_SIGNALS]; struct _MetaSettings @@ -544,6 +552,8 @@ meta_settings_dispose (GObject *object) static void meta_settings_init (MetaSettings *settings) { + const char *experimental_features_env; + settings->interface_settings = g_settings_new ("org.gnome.desktop.interface"); g_signal_connect (settings->interface_settings, "changed", G_CALLBACK (interface_settings_changed), @@ -567,6 +577,21 @@ meta_settings_init (MetaSettings *settings) g_signal_connect (settings, "ui-scaling-factor-changed", G_CALLBACK (meta_settings_update_font_dpi), NULL); + experimental_features_env = getenv ("MUTTER_DEBUG_EXPERIMENTAL_FEATURES"); + if (experimental_features_env) + { + MetaExperimentalFeature experimental_features; + + experimental_features = + g_parse_debug_string (experimental_features_env, + experimental_feature_keys, + G_N_ELEMENTS (experimental_feature_keys)); + + meta_settings_override_experimental_features (settings); + meta_settings_enable_experimental_feature (settings, + experimental_features); + } + update_global_scaling_factor (settings); update_experimental_features (settings); update_xwayland_grab_access_rules (settings);