--- src/gpm-manager.c.orig	2008-01-05 00:26:15.424255671 +0100
+++ src/gpm-manager.c	2008-01-05 00:42:32.699947439 +0100
@@ -474,11 +474,17 @@
 		gpm_control_shutdown (manager->priv->control, NULL);
 
 	} else if (strcmp (action, ACTION_INTERACTIVE) == 0) {
+		const gchar *const argv[] = { "gnome-panel-logout", "--shutdown", NULL };
 		gpm_info_explain_reason (manager->priv->info, GPM_EVENT_NOTIFICATION,
 					_("GNOME interactive logout"), reason);
-		gnome_client_request_save (gnome_master_client (),
-					   GNOME_SAVE_GLOBAL,
-					   TRUE, GNOME_INTERACT_ANY, FALSE, TRUE);
+		if (!g_spawn_async (NULL, (gchar **) argv, NULL, G_SPAWN_SEARCH_PATH,
+				    NULL, NULL, NULL, NULL)) {
+			/* gnome-panel-logout doesn't exist *
+			 * use the classical session save request instead */
+			gnome_client_request_save (gnome_master_client (),
+						   GNOME_SAVE_GLOBAL,
+						   TRUE, GNOME_INTERACT_ANY, FALSE, TRUE);
+		}
 	} else {
 		gpm_warning ("unknown action %s", action);
 	}
