From 20b7dfc0f11d43df2fe851f565c9103ab610c18f Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Fri, 19 Jul 2019 14:05:00 +0200 Subject: [PATCH 1/2] xfsettingsd: Start settings prior to complete startup (Bug #15725) On startup, different gtk based applications are launched concurently. If we start the settings simulatenously, those applications fail to detect the settings and ignore the various preferences set via xsettings (themes, icons, etc.). Make sure we spawn all settings prior to declare ourself ready with the session manager. Signed-off-by: Olivier Fourdan --- xfsettingsd/main.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/xfsettingsd/main.c b/xfsettingsd/main.c index dd34c3f0..e41248e9 100644 --- a/xfsettingsd/main.c +++ b/xfsettingsd/main.c @@ -125,19 +125,6 @@ on_name_acquired (GDBusConnection *connection, s_data = (struct t_data_set*) user_data; - /* connect to session always, even if we quit below. this way the - * session manager won't wait for us to time out. */ - s_data->sm_client = xfce_sm_client_get (); - xfce_sm_client_set_restart_style (s_data->sm_client, XFCE_SM_CLIENT_RESTART_IMMEDIATELY); - xfce_sm_client_set_desktop_file (s_data->sm_client, XFSETTINGS_DESKTOP_FILE); - xfce_sm_client_set_priority (s_data->sm_client, XFCE_SM_CLIENT_PRIORITY_HIGHEST); - g_signal_connect (G_OBJECT (s_data->sm_client), "quit", G_CALLBACK (gtk_main_quit), NULL); - if (!xfce_sm_client_connect (s_data->sm_client, &error) && error) - { - g_printerr ("Failed to connect to session manager: %s\n", error->message); - g_clear_error (&error); - } - /* launch settings manager */ s_data->xsettings_helper = g_object_new (XFCE_TYPE_XSETTINGS_HELPER, NULL); xfce_xsettings_helper_register (XFCE_XSETTINGS_HELPER (s_data->xsettings_helper), @@ -155,6 +142,19 @@ on_name_acquired (GDBusConnection *connection, s_data->workspaces_helper = g_object_new (XFCE_TYPE_WORKSPACES_HELPER, NULL); s_data->gtk_decorations_helper = g_object_new (XFCE_TYPE_DECORATIONS_HELPER, NULL); + /* connect to session always, even if we quit below. this way the + * session manager won't wait for us to time out. */ + s_data->sm_client = xfce_sm_client_get (); + xfce_sm_client_set_restart_style (s_data->sm_client, XFCE_SM_CLIENT_RESTART_IMMEDIATELY); + xfce_sm_client_set_desktop_file (s_data->sm_client, XFSETTINGS_DESKTOP_FILE); + xfce_sm_client_set_priority (s_data->sm_client, XFCE_SM_CLIENT_PRIORITY_HIGHEST); + g_signal_connect (G_OBJECT (s_data->sm_client), "quit", G_CALLBACK (gtk_main_quit), NULL); + if (!xfce_sm_client_connect (s_data->sm_client, &error) && error) + { + g_printerr ("Failed to connect to session manager: %s\n", error->message); + g_clear_error (&error); + } + if (g_getenv ("XFSETTINGSD_NO_CLIPBOARD") == NULL) { s_data->clipboard_daemon = g_object_new (GSD_TYPE_CLIPBOARD_MANAGER, NULL); -- 2.21.0