diff -ru xfce4-session-4.14.0.orig/libxfsm/xfsm-shutdown-common.h xfce4-session-4.14.0.new/libxfsm/xfsm-shutdown-common.h --- xfce4-session-4.14.0.orig/libxfsm/xfsm-shutdown-common.h 2019-08-11 22:11:06.000000000 +0200 +++ xfce4-session-4.14.0.new/libxfsm/xfsm-shutdown-common.h 2019-12-11 12:39:48.330850000 +0100 @@ -32,6 +32,9 @@ #ifdef UP_BACKEND_HIBERNATE_COMMAND #undef UP_BACKEND_HIBERNATE_COMMAND #endif +#ifdef UP_BACKEND_HYBRIDSLEEP_COMMAND +#undef UP_BACKEND_HYBRIDSLEEP_COMMAND +#endif /* On FreeBSD, NetBSD and DragonFly BSD users with write access to * /dev/acpi can suspend/hibernate the system */ @@ -63,6 +66,7 @@ #ifdef BACKEND_TYPE_LINUX #define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/pm-suspend" #define UP_BACKEND_HIBERNATE_COMMAND "/usr/sbin/pm-hibernate" +#define UP_BACKEND_HYBRIDSLEEP_COMMAND "/usr/sbin/pm-suspend-hybrid" #endif #ifdef BACKEND_TYPE_OPENBSD diff -ru xfce4-session-4.14.0.orig/xfsm-shutdown-helper/main.c xfce4-session-4.14.0.new/xfsm-shutdown-helper/main.c --- xfce4-session-4.14.0.orig/xfsm-shutdown-helper/main.c 2019-08-11 22:11:06.000000000 +0200 +++ xfce4-session-4.14.0.new/xfsm-shutdown-helper/main.c 2019-12-11 12:43:19.851206000 +0100 @@ -119,12 +119,14 @@ gboolean restart = FALSE; gboolean suspend = FALSE; gboolean hibernate = FALSE; + gboolean hybridsleep = FALSE; const GOptionEntry options[] = { { "shutdown", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &shutdown, "Shutdown the system", NULL }, { "restart", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &restart, "Restart the system", NULL }, { "suspend", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &suspend, "Suspend the system", NULL }, { "hibernate", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &hibernate, "Hibernate the system", NULL }, + { "hybrid-sleep", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &hybridsleep, "Hybrid sleep", NULL }, { NULL } }; @@ -135,7 +137,7 @@ g_option_context_free (context); /* no input */ - if (!shutdown && !restart && !suspend && !hibernate) + if (!shutdown && !restart && !suspend && !hibernate && !hybridsleep) { puts ("No valid option was specified"); return EXIT_CODE_ARGUMENTS_INVALID; @@ -198,6 +200,17 @@ { return EXIT_CODE_SUCCESS; } + else + { + return EXIT_CODE_FAILED; + } + } + else if(hybridsleep) + { + if (run (UP_BACKEND_HYBRIDSLEEP_COMMAND)) + { + return EXIT_CODE_SUCCESS; + } else { return EXIT_CODE_FAILED;