session: Optionally do logout/shutdown via dbus commands

This commit is contained in:
Kim Woelders 2024-03-08 14:07:41 +01:00
parent cd517589b3
commit d54702b071
1 changed files with 33 additions and 0 deletions

View File

@ -31,6 +31,9 @@
#include "snaps.h"
#include "user.h"
#include "xwin.h"
#if USE_DBUS
#include "edbus.h"
#endif
#ifdef USE_EXT_INIT_WIN
static EX_Window new_init_win_ext = NoXID;
@ -533,6 +536,31 @@ doSMExit(int mode, const char *params)
#define LOGOUT_SUSPEND 5
#define LOGOUT_HIBERNATE 6
#if USE_DBUS
static int
_SessionExitDbus(int how)
{
if (Mode.wm.window)
return -1;
switch (how)
{
default:
case LOGOUT_LOCK:
case LOGOUT_SUSPEND:
case LOGOUT_HIBERNATE:
return -1;
case LOGOUT_EXIT:
return DbusRequestLogout();
case LOGOUT_REBOOT:
case LOGOUT_HALT:
return DbusRequestShutdown();
}
}
#endif /* USE_DBUS */
static void
_SessionLogout(int how)
{
@ -552,6 +580,11 @@ _SessionLogout(int how)
#endif /* USE_SM */
#if USE_DBUS
if (_SessionExitDbus(how) == 0)
return;
#endif
switch (how)
{
default: