Index: xfce4-session-4.8.2/xfce4-session/xfsm-shutdown-helper.c =================================================================== --- xfce4-session-4.8.2.orig/xfce4-session/xfsm-shutdown-helper.c +++ xfce4-session-4.8.2/xfce4-session/xfsm-shutdown-helper.c @@ -71,6 +71,8 @@ #include +#include + #include "xfsm-shutdown-helper.h" #include "xfsm-global.h" @@ -1722,6 +1724,24 @@ gboolean xfsm_shutdown_helper_send_passw return TRUE; } +static void +lock_screen (void) +{ + XfconfChannel *channel; + gboolean ret; + gint exit_status; + + channel = xfconf_channel_get ("xfce4-power-manager"); + if (xfconf_channel_get_bool (channel, "/xfce4-power-manager/lock-screen-suspend-hibernate", TRUE)) + { + ret = g_spawn_command_line_sync ("xflock4", NULL, NULL, &exit_status, NULL); + if (!ret || exit_status != 0) + { + g_warning ("Could not lock screen"); + } + } +} + /** * xfsm_shutdown_helper_shutdown: * @@ -1785,6 +1805,8 @@ gboolean xfsm_shutdown_helper_suspend (X { g_return_val_if_fail (!error || !*error, FALSE); + lock_screen (); + #ifdef ENABLE_UPOWER if ( helper->sleep_backend == XFSM_SLEEP_BACKEND_UPOWER ) { @@ -1812,6 +1834,8 @@ gboolean xfsm_shutdown_helper_hibernate { g_return_val_if_fail (!error || !*error, FALSE); + lock_screen (); + #ifdef ENABLE_UPOWER if ( helper->sleep_backend == XFSM_SLEEP_BACKEND_UPOWER ) {