diff --git a/xfce4-session/xfsm-shutdown-helper.c b/xfce4-session/xfsm-shutdown-helper.c index 3debeb2..04fbde3 100644 --- a/xfce4-session/xfsm-shutdown-helper.c +++ b/xfce4-session/xfsm-shutdown-helper.c @@ -70,6 +70,7 @@ #include #include +#include #include "xfsm-shutdown-helper.h" #include "xfsm-global.h" @@ -1777,6 +1778,50 @@ gboolean xfsm_shutdown_helper_restart (XfsmShutdownHelper *helper, GError **erro } +/* Check xfce4-power-manager settings + * and lock screen if needed + */ +void +lock_screen (void) +{ + XfconfChannel *xpm_channel; + + xpm_channel = xfconf_channel_new("xfce4-power-manager"); + g_return_if_fail (xpm_channel != NULL); + + if (xfconf_channel_get_bool (xpm_channel, + "/xfce4-power-manager/lock-screen-suspend-hibernate", + FALSE)) + { + /* Copy & paste from xfce4-power-manager */ + + gboolean ret = g_spawn_command_line_async ("xflock4", NULL); + + if ( !ret ) + { + g_spawn_command_line_async ("gnome-screensaver-command -l", NULL); + } + + if ( !ret ) + { + /* this should be the default*/ + ret = g_spawn_command_line_async ("xdg-screensaver lock", NULL); + } + + if ( !ret ) + { + ret = g_spawn_command_line_async ("xscreensaver-command -lock", NULL); + } + + if ( !ret ) + { + g_critical ("Connot lock screen\n"); + } + } + + g_object_unref (xpm_channel); +} + /** * xfsm_shutdown_helper_suspend: * @@ -1785,6 +1830,8 @@ gboolean xfsm_shutdown_helper_suspend (XfsmShutdownHelper *helper, GError **erro { g_return_val_if_fail (!error || !*error, FALSE); + lock_screen (); + #ifdef ENABLE_UPOWER if ( helper->sleep_backend == XFSM_SLEEP_BACKEND_UPOWER ) { @@ -1812,6 +1859,8 @@ gboolean xfsm_shutdown_helper_hibernate (XfsmShutdownHelper *helper, GError **er { g_return_val_if_fail (!error || !*error, FALSE); + lock_screen (); + #ifdef ENABLE_UPOWER if ( helper->sleep_backend == XFSM_SLEEP_BACKEND_UPOWER ) {