From 5b069364d96ed1d499ed69baa01390c4f81ac302 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Fri, 19 Jul 2019 14:05:00 +0200 Subject: [PATCH 2/5] xfsettingsd: Start settings prior to complete startup (Bug #15725) On startup, different gtk based applications are launched concurently. If we start the settings simultaneously, 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 4afc85ae..ccb19ac2 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, 20); - 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, 20); + 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