try to run gnome-screensaver, and if that fails, run xscreensaver.

2005-07-20  Rodrigo Moya <rodrigo@novell.com>

	* gnome-settings-screensaver.c (gnome_settings_screensaver_load):
	* gnome-settings-multimedia-keys.c (do_action): try to run
	gnome-screensaver, and if that fails, run xscreensaver.
This commit is contained in:
Rodrigo Moya 2005-07-25 11:55:59 +00:00 committed by Rodrigo Moya
parent cf87a9a2c9
commit 6e25211b2f
3 changed files with 37 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2005-07-20 Rodrigo Moya <rodrigo@novell.com>
* gnome-settings-screensaver.c (gnome_settings_screensaver_load):
* gnome-settings-multimedia-keys.c (do_action): try to run
gnome-screensaver, and if that fails, run xscreensaver.
2005-07-12 Sebastien Bacher <seb128@debian.org> 2005-07-12 Sebastien Bacher <seb128@debian.org>
* modmap-dialog.glade: fix a label form (Closes: #167739). * modmap-dialog.glade: fix a label form (Closes: #167739).

View file

@ -804,6 +804,8 @@ do_sound_action (Acme *acme, int type)
static void static void
do_action (Acme *acme, int type) do_action (Acme *acme, int type)
{ {
gchar *cmd;
switch (type) { switch (type) {
case MUTE_KEY: case MUTE_KEY:
case VOLUME_DOWN_KEY: case VOLUME_DOWN_KEY:
@ -829,7 +831,12 @@ do_action (Acme *acme, int type)
do_sleep_action ("apm", "xset dpms force off"); do_sleep_action ("apm", "xset dpms force off");
break; break;
case SCREENSAVER_KEY: case SCREENSAVER_KEY:
execute ("xscreensaver-command -lock", FALSE); if ((cmd = g_find_program_in_path ("gnome-screensaver-command")))
execute ("gnome-screensaver-command --lock", FALSE);
else
execute ("xscreensaver-command -lock", FALSE);
g_free (cmd);
break; break;
case HELP_KEY: case HELP_KEY:
do_help_action (acme); do_help_action (acme);

View file

@ -35,6 +35,7 @@
#define START_SCREENSAVER_KEY "/apps/gnome_settings_daemon/screensaver/start_screensaver" #define START_SCREENSAVER_KEY "/apps/gnome_settings_daemon/screensaver/start_screensaver"
#define SHOW_STARTUP_ERRORS_KEY "/apps/gnome_settings_daemon/screensaver/show_startup_errors" #define SHOW_STARTUP_ERRORS_KEY "/apps/gnome_settings_daemon/screensaver/show_startup_errors"
#define XSCREENSAVER_COMMAND "xscreensaver -nosplash" #define XSCREENSAVER_COMMAND "xscreensaver -nosplash"
#define GSCREENSAVER_COMMAND "gnome-screensaver"
void void
gnome_settings_screensaver_init (GConfClient *client) gnome_settings_screensaver_init (GConfClient *client)
@ -42,8 +43,12 @@ gnome_settings_screensaver_init (GConfClient *client)
/* /*
* do nothing. * do nothing.
* *
* our settings only apply to startup, and the screensaver * with gnome-screensaver, all settings are loaded internally
* settings are all in xscreensaver and not gconf. * from gconf at startup
*
* with xscreensaver, our settings only apply to startup, and
* the screensaver settings are all in xscreensaver and not
* gconf.
* *
* we could have xscreensaver-demo run gconftool-2 directly, * we could have xscreensaver-demo run gconftool-2 directly,
* and start / stop xscreensaver here * and start / stop xscreensaver here
@ -69,16 +74,30 @@ void
gnome_settings_screensaver_load (GConfClient *client) gnome_settings_screensaver_load (GConfClient *client)
{ {
GError *gerr = NULL; GError *gerr = NULL;
gboolean start_screensaver; gboolean start_screensaver, use_gscreensaver = FALSE;
gboolean show_error; gboolean show_error;
GtkWidget *dialog, *toggle; GtkWidget *dialog, *toggle;
gchar *ss_command;
start_screensaver = gconf_client_get_bool (client, START_SCREENSAVER_KEY, NULL); start_screensaver = gconf_client_get_bool (client, START_SCREENSAVER_KEY, NULL);
if (!start_screensaver) if (!start_screensaver)
return; return;
if (g_spawn_command_line_async (XSCREENSAVER_COMMAND, &gerr)) if ((ss_command = g_find_program_in_path ("gnome-screensaver")))
use_gscreensaver = TRUE;
else {
if (!(ss_command = g_find_program_in_path ("xscreensaver")))
return;
}
g_free (ss_command);
if (use_gscreensaver)
ss_command = GSCREENSAVER_COMMAND;
else
ss_command = XSCREENSAVER_COMMAND;
if (g_spawn_command_line_async (ss_command, &gerr))
return; return;
show_error = gconf_client_get_bool (client, SHOW_STARTUP_ERRORS_KEY, NULL); show_error = gconf_client_get_bool (client, SHOW_STARTUP_ERRORS_KEY, NULL);