diff -urN -x '*.orig' gnome-session-2.27.4/gnome-session/gsm-manager.c ../SUNWgnome-session-2.26.1.hacked/gnome-session-2.27.4/gnome-session/gsm-manager.c --- gnome-session-2.27.4/gnome-session/gsm-manager.c 2009-07-23 15:42:09.679931892 +0100 +++ ../SUNWgnome-session-2.26.1.hacked/gnome-session-2.27.4/gnome-session/gsm-manager.c 2009-07-23 15:50:29.967601535 +0100 @@ -376,6 +376,22 @@ } static void start_phase (GsmManager *manager); +#define ABOUT_PROMPT_KEY "/desktop/gnome/session/sun_extensions/viewed_about_jds_three" + +static gint +show_gnome_about (gpointer data) +{ + int status; + + if (g_spawn_command_line_async("gnome-about", NULL)) + { + GConfClient *gconf_client = gconf_client_get_default (); + gconf_client_set_bool (gconf_client, ABOUT_PROMPT_KEY, TRUE, NULL); + g_object_unref (gconf_client); + } + + return FALSE; +} static void quit_request_completed (GsmConsolekit *consolekit, @@ -1276,6 +1292,9 @@ void gsm_manager_start (GsmManager *manager) { + gboolean show_about; + GConfClient *gconf_client; + g_debug ("GsmManager: GSM starting to manage"); g_return_if_fail (GSM_IS_MANAGER (manager)); @@ -1283,6 +1302,13 @@ gsm_manager_set_phase (manager, GSM_MANAGER_PHASE_INITIALIZATION); debug_app_summary (manager); start_phase (manager); + + /* Do not attempt to show gnome-about dialog if user is gdm (uid 50) */ + if (getuid()==50) + return; + gconf_client = gconf_client_get_default (); + show_about = gconf_client_get_bool (gconf_client, ABOUT_PROMPT_KEY, NULL); + if (!show_about) gtk_timeout_add (4000, show_gnome_about, NULL); } static gboolean