Merge lp:~3v1n0/unity-settings-daemon/use-ubuntu-schemas-for-scaling into lp:unity-settings-daemon

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Didier Roche-Tolomelli
Approved revision: 4176
Merged at revision: 4172
Proposed branch: lp:~3v1n0/unity-settings-daemon/use-ubuntu-schemas-for-scaling
Merge into: lp:unity-settings-daemon
Diff against target: 270 lines (+106/-16)
3 files modified
debian/control (+1/-1)
plugins/media-keys/gsd-media-keys-manager.c (+42/-4)
plugins/xsettings/gsd-xsettings-manager.c (+63/-11)
To merge this branch: bzr merge lp:~3v1n0/unity-settings-daemon/use-ubuntu-schemas-for-scaling
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
Unity Settings Daemon Development Team Pending
Review via email: mp+331178@code.launchpad.net

Commit message

XSettings: under unity use com.ubuntu.user-interface.desktop keys for scaling settings

Unity would override them with computed values, so we need to store them in different keys
not to interfere with any other installed gnome out there.

Also migrate changes to old keys to the new ones, if they happen when running unity.

To post a comment you must log in.
Revision history for this message
Andrea Azzarone (azzar1) wrote :

Looks good now. +1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/control'
--- debian/control 2017-09-06 14:47:10 +0000
+++ debian/control 2017-10-03 05:07:54 +0000
@@ -57,7 +57,7 @@
57 gsettings-desktop-schemas (>= 3.15.4),57 gsettings-desktop-schemas (>= 3.15.4),
58 nautilus-data (>= 2.91.3-1),58 nautilus-data (>= 2.91.3-1),
59 gnome-settings-daemon-schemas (>= 3.16),59 gnome-settings-daemon-schemas (>= 3.16),
60 gsettings-ubuntu-schemas (>= 0.0.1+14.04.20140224),60 gsettings-ubuntu-schemas (>= 0.0.7+17.10.20170922),
61Recommends: ibus (>= 1.5.0),61Recommends: ibus (>= 1.5.0),
62 pulseaudio,62 pulseaudio,
63 systemd-services63 systemd-services
6464
=== modified file 'plugins/media-keys/gsd-media-keys-manager.c'
--- plugins/media-keys/gsd-media-keys-manager.c 2017-04-18 11:51:12 +0000
+++ plugins/media-keys/gsd-media-keys-manager.c 2017-10-03 05:07:54 +0000
@@ -113,8 +113,12 @@
113#define SETTINGS_POWER_DIR "org.gnome.settings-daemon.plugins.power"113#define SETTINGS_POWER_DIR "org.gnome.settings-daemon.plugins.power"
114#define SETTINGS_XSETTINGS_DIR "org.gnome.settings-daemon.plugins.xsettings"114#define SETTINGS_XSETTINGS_DIR "org.gnome.settings-daemon.plugins.xsettings"
115#define SETTINGS_TOUCHPAD_DIR "org.gnome.desktop.peripherals.touchpad"115#define SETTINGS_TOUCHPAD_DIR "org.gnome.desktop.peripherals.touchpad"
116#define UNITY_SETTINGS_INTERFACE_DIR "com.canonical.Unity.Interface"
117
116#define TOUCHPAD_ENABLED_KEY "send-events"118#define TOUCHPAD_ENABLED_KEY "send-events"
117#define HIGH_CONTRAST "HighContrast"119#define HIGH_CONTRAST "HighContrast"
120#define TEXT_SCALING_FACTOR_KEY (in_desktop ("Unity") ? \
121 "text-scale-factor" : "text-scaling-factor")
118122
119#define VOLUME_STEP 6 /* percents for one volume button press */123#define VOLUME_STEP 6 /* percents for one volume button press */
120124
@@ -313,6 +317,29 @@
313 NULL317 NULL
314};318};
315319
320static gboolean
321in_desktop (const gchar *name)
322{
323 const gchar *desktop_name_list;
324 gchar **names;
325 gboolean in_list = FALSE;
326 gint i;
327
328 desktop_name_list = g_getenv ("XDG_CURRENT_DESKTOP");
329 if (!desktop_name_list)
330 return FALSE;
331
332 names = g_strsplit (desktop_name_list, ":", -1);
333 for (i = 0; names[i] && !in_list; i++)
334 if (strcmp (names[i], name) == 0) {
335 in_list = TRUE;
336 break;
337 }
338 g_strfreev (names);
339
340 return in_list;
341}
342
316static const char *343static const char *
317calculate_icon_name (gint value, const char **icon_names)344calculate_icon_name (gint value, const char **icon_names)
318{345{
@@ -2070,7 +2097,8 @@
2070do_text_size_action (GsdMediaKeysManager *manager,2097do_text_size_action (GsdMediaKeysManager *manager,
2071 MediaKeyType type)2098 MediaKeyType type)
2072{2099{
2073 gdouble factor, best, distance;2100 GSettings *settings;
2101 gdouble factor, best, distance;
2074 guint i;2102 guint i;
20752103
2076 /* Same values used in the Seeing tab of the Universal Access panel */2104 /* Same values used in the Seeing tab of the Universal Access panel */
@@ -2081,8 +2109,16 @@
2081 1.52109 1.5
2082 };2110 };
20832111
2112 const gchar *text_scaling_key = TEXT_SCALING_FACTOR_KEY;
2113
2114 if (in_desktop ("Unity")) {
2115 settings = g_settings_new (UNITY_SETTINGS_INTERFACE_DIR);
2116 } else {
2117 settings = g_object_ref (manager->priv->interface_settings);
2118 }
2119
2084 /* Figure out the current DPI scaling factor */2120 /* Figure out the current DPI scaling factor */
2085 factor = g_settings_get_double (manager->priv->interface_settings, "text-scaling-factor");2121 factor = g_settings_get_double (settings, text_scaling_key);
2086 factor += (type == INCREASE_TEXT_KEY ? 0.25 : -0.25);2122 factor += (type == INCREASE_TEXT_KEY ? 0.25 : -0.25);
20872123
2088 /* Try to find a matching value */2124 /* Try to find a matching value */
@@ -2098,9 +2134,11 @@
2098 }2134 }
20992135
2100 if (best == 1.0)2136 if (best == 1.0)
2101 g_settings_reset (manager->priv->interface_settings, "text-scaling-factor");2137 g_settings_reset (settings, text_scaling_key);
2102 else2138 else
2103 g_settings_set_double (manager->priv->interface_settings, "text-scaling-factor", best);2139 g_settings_set_double (settings, text_scaling_key, best);
2140
2141 g_object_unref (settings);
2104}2142}
21052143
2106static void2144static void
21072145
=== modified file 'plugins/xsettings/gsd-xsettings-manager.c'
--- plugins/xsettings/gsd-xsettings-manager.c 2016-08-18 10:59:20 +0000
+++ plugins/xsettings/gsd-xsettings-manager.c 2017-10-03 05:07:54 +0000
@@ -50,6 +50,7 @@
5050
51#define MOUSE_SETTINGS_SCHEMA "org.gnome.settings-daemon.peripherals.mouse"51#define MOUSE_SETTINGS_SCHEMA "org.gnome.settings-daemon.peripherals.mouse"
52#define INTERFACE_SETTINGS_SCHEMA "org.gnome.desktop.interface"52#define INTERFACE_SETTINGS_SCHEMA "org.gnome.desktop.interface"
53#define UNITY_INTERFACE_SETTINGS_SCHEMA "com.ubuntu.user-interface.desktop"
53#define SOUND_SETTINGS_SCHEMA "org.gnome.desktop.sound"54#define SOUND_SETTINGS_SCHEMA "org.gnome.desktop.sound"
54#define PRIVACY_SETTINGS_SCHEMA "org.gnome.desktop.privacy"55#define PRIVACY_SETTINGS_SCHEMA "org.gnome.desktop.privacy"
55#define WM_SETTINGS_SCHEMA "org.gnome.desktop.wm.preferences"56#define WM_SETTINGS_SCHEMA "org.gnome.desktop.wm.preferences"
@@ -69,6 +70,12 @@
69#define FONT_HINTING_KEY "hinting"70#define FONT_HINTING_KEY "hinting"
70#define FONT_RGBA_ORDER_KEY "rgba-order"71#define FONT_RGBA_ORDER_KEY "rgba-order"
7172
73#define SCALING_SETTINGS_SCHEMA_FOR_DESKTOP (in_desktop ("Unity") ? \
74 UNITY_INTERFACE_SETTINGS_SCHEMA : \
75 INTERFACE_SETTINGS_SCHEMA)
76
77static gboolean in_desktop (const gchar *name);
78
72/* As we cannot rely on the X server giving us good DPI information, and79/* As we cannot rely on the X server giving us good DPI information, and
73 * that we don't want multi-monitor screens to have different DPIs (thus80 * that we don't want multi-monitor screens to have different DPIs (thus
74 * different text sizes), we'll hard-code the value of the DPI81 * different text sizes), we'll hard-code the value of the DPI
@@ -255,6 +262,7 @@
255 gboolean have_unity;262 gboolean have_unity;
256263
257 guint notify_idle_id;264 guint notify_idle_id;
265 guint freeze_settings_migrate_id;
258};266};
259267
260#define GSD_XSETTINGS_ERROR gsd_xsettings_error_quark ()268#define GSD_XSETTINGS_ERROR gsd_xsettings_error_quark ()
@@ -426,7 +434,7 @@
426 double dpi;434 double dpi;
427 double factor;435 double factor;
428436
429 interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA);437 interface_settings = g_hash_table_lookup (manager->priv->settings, SCALING_SETTINGS_SCHEMA_FOR_DESKTOP);
430 factor = g_settings_get_double (interface_settings, TEXT_SCALING_FACTOR_KEY);438 factor = g_settings_get_double (interface_settings, TEXT_SCALING_FACTOR_KEY);
431439
432 dpi = DPI_FALLBACK;440 dpi = DPI_FALLBACK;
@@ -469,7 +477,7 @@
469 int monitor_scale;477 int monitor_scale;
470 double dpi_x, dpi_y;478 double dpi_x, dpi_y;
471479
472 interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA);480 interface_settings = g_hash_table_lookup (manager->priv->settings, SCALING_SETTINGS_SCHEMA_FOR_DESKTOP);
473 window_scale =481 window_scale =
474 g_settings_get_uint (interface_settings, SCALING_FACTOR_KEY);482 g_settings_get_uint (interface_settings, SCALING_FACTOR_KEY);
475 if (window_scale == 0) {483 if (window_scale == 0) {
@@ -526,7 +534,7 @@
526xft_settings_get (GnomeXSettingsManager *manager,534xft_settings_get (GnomeXSettingsManager *manager,
527 GnomeXftSettings *settings)535 GnomeXftSettings *settings)
528{536{
529 GSettings *interface_settings;537 GSettings *interface_settings, *scaling_settings;
530 GsdFontAntialiasingMode antialiasing;538 GsdFontAntialiasingMode antialiasing;
531 GsdFontHinting hinting;539 GsdFontHinting hinting;
532 GsdFontRgbaOrder order;540 GsdFontRgbaOrder order;
@@ -535,6 +543,7 @@
535 int cursor_size;543 int cursor_size;
536544
537 interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA);545 interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA);
546 scaling_settings = g_hash_table_lookup (manager->priv->settings, SCALING_SETTINGS_SCHEMA_FOR_DESKTOP);
538547
539 antialiasing = g_settings_get_enum (manager->priv->plugin_settings, FONT_ANTIALIASING_KEY);548 antialiasing = g_settings_get_enum (manager->priv->plugin_settings, FONT_ANTIALIASING_KEY);
540 hinting = g_settings_get_enum (manager->priv->plugin_settings, FONT_HINTING_KEY);549 hinting = g_settings_get_enum (manager->priv->plugin_settings, FONT_HINTING_KEY);
@@ -546,7 +555,7 @@
546 dpi = get_dpi_from_gsettings (manager);555 dpi = get_dpi_from_gsettings (manager);
547 settings->dpi = dpi * 1024; /* Xft wants 1/1024ths of an inch */556 settings->dpi = dpi * 1024; /* Xft wants 1/1024ths of an inch */
548 settings->scaled_dpi = dpi * settings->window_scale * 1024;557 settings->scaled_dpi = dpi * settings->window_scale * 1024;
549 cursor_size = g_settings_get_int (interface_settings, CURSOR_SIZE_KEY);558 cursor_size = g_settings_get_int (scaling_settings, CURSOR_SIZE_KEY);
550 settings->cursor_size = cursor_size * settings->window_scale;559 settings->cursor_size = cursor_size * settings->window_scale;
551 settings->cursor_theme = g_settings_get_string (interface_settings, CURSOR_THEME_KEY);560 settings->cursor_theme = g_settings_get_string (interface_settings, CURSOR_THEME_KEY);
552 settings->rgba = "rgb";561 settings->rgba = "rgb";
@@ -943,11 +952,38 @@
943952
944 if (g_str_equal (key, TEXT_SCALING_FACTOR_KEY) ||953 if (g_str_equal (key, TEXT_SCALING_FACTOR_KEY) ||
945 g_str_equal (key, SCALING_FACTOR_KEY) ||954 g_str_equal (key, SCALING_FACTOR_KEY) ||
946 g_str_equal (key, CURSOR_SIZE_KEY) ||955 g_str_equal (key, CURSOR_SIZE_KEY)) {
947 g_str_equal (key, CURSOR_THEME_KEY)) {956 gchar *schema_id;
948 xft_callback (NULL, key, manager);957 g_object_get (settings, "schema-id", &schema_id, NULL);
949 return;958
950 }959 if (g_str_equal (schema_id, SCALING_SETTINGS_SCHEMA_FOR_DESKTOP)) {
960 update_xft_settings (manager);
961 queue_notify (manager);
962 } else if (manager->priv->freeze_settings_migrate_id == 0 &&
963 in_desktop ("Unity") &&
964 g_str_equal (schema_id, INTERFACE_SETTINGS_SCHEMA)) {
965 GSettings *unity_interface_settings;
966 GVariant *setting_value;
967
968 setting_value = g_settings_get_value (settings, key);
969 unity_interface_settings =
970 g_hash_table_lookup (manager->priv->settings,
971 UNITY_INTERFACE_SETTINGS_SCHEMA);
972
973 g_settings_set_value (unity_interface_settings, key,
974 setting_value);
975 g_variant_unref (setting_value);
976 }
977
978 g_free (schema_id);
979 return;
980 }
981
982 if (g_str_equal (key, CURSOR_THEME_KEY)) {
983 update_xft_settings (manager);
984 queue_notify (manager);
985 return;
986 }
951987
952 trans = find_translation_entry (settings, key);988 trans = find_translation_entry (settings, key);
953 if (trans == NULL) {989 if (trans == NULL) {
@@ -1051,6 +1087,14 @@
1051 NULL);1087 NULL);
1052}1088}
10531089
1090static gboolean
1091on_freeze_settings_migrate_timeout (gpointer data)
1092{
1093 GnomeXSettingsManager *manager = data;
1094 manager->priv->freeze_settings_migrate_id = 0;
1095 return FALSE;
1096}
1097
1054gboolean1098gboolean
1055gnome_xsettings_manager_start (GnomeXSettingsManager *manager,1099gnome_xsettings_manager_start (GnomeXSettingsManager *manager,
1056 GError **error)1100 GError **error)
@@ -1077,6 +1121,8 @@
1077 g_hash_table_insert (manager->priv->settings,1121 g_hash_table_insert (manager->priv->settings,
1078 INTERFACE_SETTINGS_SCHEMA, g_settings_new (INTERFACE_SETTINGS_SCHEMA));1122 INTERFACE_SETTINGS_SCHEMA, g_settings_new (INTERFACE_SETTINGS_SCHEMA));
1079 g_hash_table_insert (manager->priv->settings,1123 g_hash_table_insert (manager->priv->settings,
1124 UNITY_INTERFACE_SETTINGS_SCHEMA, g_settings_new (UNITY_INTERFACE_SETTINGS_SCHEMA));
1125 g_hash_table_insert (manager->priv->settings,
1080 SOUND_SETTINGS_SCHEMA, g_settings_new (SOUND_SETTINGS_SCHEMA));1126 SOUND_SETTINGS_SCHEMA, g_settings_new (SOUND_SETTINGS_SCHEMA));
1081 g_hash_table_insert (manager->priv->settings,1127 g_hash_table_insert (manager->priv->settings,
1082 PRIVACY_SETTINGS_SCHEMA, g_settings_new (PRIVACY_SETTINGS_SCHEMA));1128 PRIVACY_SETTINGS_SCHEMA, g_settings_new (PRIVACY_SETTINGS_SCHEMA));
@@ -1135,6 +1181,9 @@
1135 queue_notify (manager);1181 queue_notify (manager);
1136 g_variant_unref (overrides);1182 g_variant_unref (overrides);
11371183
1184 /* Ingore migration of gnome settings to unity at startup */
1185 manager->priv->freeze_settings_migrate_id =
1186 g_timeout_add_seconds (5, on_freeze_settings_migrate_timeout, manager);
11381187
1139 gnome_settings_profile_end (NULL);1188 gnome_settings_profile_end (NULL);
11401189
@@ -1168,8 +1217,11 @@
11681217
1169 stop_fontconfig_monitor (manager);1218 stop_fontconfig_monitor (manager);
11701219
1171 if (manager->priv->unity_name_watch_id > 0)1220 if (p->unity_name_watch_id > 0)
1172 g_bus_unwatch_name (manager->priv->unity_name_watch_id);1221 g_bus_unwatch_name (p->unity_name_watch_id);
1222
1223 if (p->freeze_settings_migrate_id != 0)
1224 g_source_remove (p->freeze_settings_migrate_id);
11731225
1174 if (p->settings != NULL) {1226 if (p->settings != NULL) {
1175 g_hash_table_destroy (p->settings);1227 g_hash_table_destroy (p->settings);

Subscribers

People subscribed via source and target branches