--- gnome-panel-2.18.1/gnome-panel/panel-util.c.rootlock 2007-04-10 21:16:55.000000000 +0200 +++ gnome-panel-2.18.1/gnome-panel/panel-util.c 2007-04-11 07:48:38.000000000 +0200 @@ -732,17 +732,19 @@ if (panel_is_program_in_path ("gnome-screensaver-command") && panel_is_program_in_path ("gnome-screensaver-preferences")) use_gscreensaver = TRUE; - else if (!panel_is_program_in_path ("xscreensaver-command")) + else if (!(getuid() == 0) && panel_is_program_in_path ("xlockmore") && !((getuid() != 0) && panel_is_program_in_path ("xscreensaver-command"))) return NULL; if (strcmp (action, "prefs") == 0) { if (use_gscreensaver) { command = g_strdup ("gnome-screensaver-preferences"); - } else if (panel_is_program_in_path ("xscreensaver-demo")) { + } else if (getuid() && panel_is_program_in_path ("xscreensaver-demo")) { command = g_strdup ("xscreensaver-demo"); } else { command = NULL; } + } else if (getuid () == 0 && strcmp( action, "lock") == 0) { + command = g_strdup ("xlock"); } else if (strcmp (action, "activate") == 0 || strcmp (action, "lock") == 0) { /* Neither gnome-screensaver or xscreensaver allow root --- gnome-panel-2.18.1/gnome-panel/panel-action-button.c.rootlock 2007-04-10 21:16:55.000000000 +0200 +++ gnome-panel-2.18.1/gnome-panel/panel-action-button.c 2007-04-11 07:46:35.000000000 +0200 @@ -27,6 +27,8 @@ #include <config.h> #include <string.h> #include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> #include "panel-action-button.h" @@ -119,23 +121,25 @@ static void panel_action_lock_setup_menu (PanelActionButton *button) { + if (getuid() != 0) { panel_applet_add_callback (button->priv->info, "activate", NULL, _("_Activate Screensaver"), screensaver_enabled); - + } panel_applet_add_callback (button->priv->info, "lock", NULL, _("_Lock Screen"), screensaver_enabled); - + if (getuid() != 0) { panel_applet_add_callback (button->priv->info, "prefs", GTK_STOCK_PROPERTIES, _("_Properties"), screensaver_properties_enabled); + } } static void