mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-07 15:43:49 +02:00
xfce4-session: use logind to suspend/resume.
This commit is contained in:
parent
91362f1960
commit
1d64034a2c
2 changed files with 284 additions and 4 deletions
|
@ -0,0 +1,275 @@
|
||||||
|
From b076b5592579b397b7d4888eb8062e646b9a4dec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mikhail Efremov <sem@altlinux.org>
|
||||||
|
Date: Wed, 10 Apr 2013 17:10:09 +0400
|
||||||
|
Subject: [PATCH] Add systemd-logind support for suspend/hibernate.
|
||||||
|
|
||||||
|
---
|
||||||
|
xfce4-session/Makefile.am | 8 +++----
|
||||||
|
xfce4-session/xfsm-shutdown.c | 42 +++++++++++++++++++++++++++-------
|
||||||
|
xfce4-session/xfsm-systemd.c | 52 +++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
xfce4-session/xfsm-systemd.h | 14 ++++++++++++
|
||||||
|
4 files changed, 104 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xfce4-session/Makefile.am b/xfce4-session/Makefile.am
|
||||||
|
index 5472b33..5e2973b 100644
|
||||||
|
--- xfce4-session/Makefile.am
|
||||||
|
+++ xfce4-session/Makefile.am
|
||||||
|
@@ -59,9 +59,7 @@ xfce4_session_SOURCES = \
|
||||||
|
xfsm-splash-screen.c \
|
||||||
|
xfsm-splash-screen.h \
|
||||||
|
xfsm-startup.c \
|
||||||
|
- xfsm-startup.h \
|
||||||
|
- xfsm-upower.c \
|
||||||
|
- xfsm-upower.h
|
||||||
|
+ xfsm-startup.h
|
||||||
|
|
||||||
|
if HAVE_SYSTEMD
|
||||||
|
xfce4_session_SOURCES += \
|
||||||
|
@@ -70,7 +68,9 @@ xfce4_session_SOURCES += \
|
||||||
|
else
|
||||||
|
xfce4_session_SOURCES += \
|
||||||
|
xfsm-consolekit.c \
|
||||||
|
- xfsm-consolekit.h
|
||||||
|
+ xfsm-consolekit.h \
|
||||||
|
+ xfsm-upower.c \
|
||||||
|
+ xfsm-upower.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
xfce4_session_CFLAGS = \
|
||||||
|
diff --git a/xfce4-session/xfsm-shutdown.c b/xfce4-session/xfsm-shutdown.c
|
||||||
|
index 4c483a7..8a2ba8d 100644
|
||||||
|
--- xfce4-session/xfsm-shutdown.c
|
||||||
|
+++ xfce4-session/xfsm-shutdown.c
|
||||||
|
@@ -66,12 +66,12 @@
|
||||||
|
#include <xfce4-session/xfsm-fadeout.h>
|
||||||
|
#include <xfce4-session/xfsm-global.h>
|
||||||
|
#include <xfce4-session/xfsm-legacy.h>
|
||||||
|
-#include <xfce4-session/xfsm-upower.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SYSTEMD
|
||||||
|
#include <xfce4-session/xfsm-systemd.h>
|
||||||
|
#else
|
||||||
|
#include <xfce4-session/xfsm-consolekit.h>
|
||||||
|
+#include <xfce4-session/xfsm-upower.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void xfsm_shutdown_finalize (GObject *object);
|
||||||
|
@@ -100,8 +100,8 @@ struct _XfsmShutdown
|
||||||
|
XfsmSystemd *systemd;
|
||||||
|
#else
|
||||||
|
XfsmConsolekit *consolekit;
|
||||||
|
-#endif
|
||||||
|
XfsmUPower *upower;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* kiosk settings */
|
||||||
|
gboolean kiosk_can_shutdown;
|
||||||
|
@@ -142,8 +142,8 @@ xfsm_shutdown_init (XfsmShutdown *shutdown)
|
||||||
|
shutdown->systemd = xfsm_systemd_get ();
|
||||||
|
#else
|
||||||
|
shutdown->consolekit = xfsm_consolekit_get ();
|
||||||
|
-#endif
|
||||||
|
shutdown->upower = xfsm_upower_get ();
|
||||||
|
+#endif
|
||||||
|
shutdown->helper_state = SUDO_NOT_INITIAZED;
|
||||||
|
shutdown->helper_require_password = FALSE;
|
||||||
|
|
||||||
|
@@ -165,8 +165,8 @@ xfsm_shutdown_finalize (GObject *object)
|
||||||
|
g_object_unref (G_OBJECT (shutdown->systemd));
|
||||||
|
#else
|
||||||
|
g_object_unref (G_OBJECT (shutdown->consolekit));
|
||||||
|
-#endif
|
||||||
|
g_object_unref (G_OBJECT (shutdown->upower));
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* close down helper */
|
||||||
|
xfsm_shutdown_sudo_free (shutdown);
|
||||||
|
@@ -692,7 +692,11 @@ xfsm_shutdown_try_suspend (XfsmShutdown *shutdown,
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||||
|
|
||||||
|
+#ifdef HAVE_SYSTEMD
|
||||||
|
+ return xfsm_systemd_try_suspend (shutdown->systemd, error);
|
||||||
|
+#else
|
||||||
|
return xfsm_upower_try_suspend (shutdown->upower, error);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -703,7 +707,11 @@ xfsm_shutdown_try_hibernate (XfsmShutdown *shutdown,
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||||
|
|
||||||
|
+#ifdef HAVE_SYSTEMD
|
||||||
|
+ return xfsm_systemd_try_hibernate (shutdown->systemd, error);
|
||||||
|
+#else
|
||||||
|
return xfsm_upower_try_hibernate (shutdown->upower, error);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -776,6 +784,8 @@ xfsm_shutdown_can_suspend (XfsmShutdown *shutdown,
|
||||||
|
gboolean *auth_suspend,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
+ gboolean ret;
|
||||||
|
+
|
||||||
|
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||||
|
|
||||||
|
if (!xfsm_shutdown_kiosk_can_shutdown (shutdown, NULL))
|
||||||
|
@@ -784,8 +794,15 @@ xfsm_shutdown_can_suspend (XfsmShutdown *shutdown,
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return xfsm_upower_can_suspend (shutdown->upower, can_suspend,
|
||||||
|
- auth_suspend, error);
|
||||||
|
+#ifdef HAVE_SYSTEMD
|
||||||
|
+ ret = xfsm_systemd_can_suspend (shutdown->systemd, can_suspend, error);
|
||||||
|
+ *auth_suspend = *can_suspend;
|
||||||
|
+#else
|
||||||
|
+ ret = xfsm_upower_can_suspend (shutdown->upower, can_suspend,
|
||||||
|
+ auth_suspend, error);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -796,6 +813,8 @@ xfsm_shutdown_can_hibernate (XfsmShutdown *shutdown,
|
||||||
|
gboolean *auth_hibernate,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
+ gboolean ret;
|
||||||
|
+
|
||||||
|
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||||
|
|
||||||
|
if (!xfsm_shutdown_kiosk_can_shutdown (shutdown, NULL))
|
||||||
|
@@ -804,8 +823,15 @@ xfsm_shutdown_can_hibernate (XfsmShutdown *shutdown,
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return xfsm_upower_can_hibernate (shutdown->upower, can_hibernate,
|
||||||
|
- auth_hibernate, error);
|
||||||
|
+#ifdef HAVE_SYSTEMD
|
||||||
|
+ ret = xfsm_systemd_can_hibernate (shutdown->systemd, can_hibernate, error);
|
||||||
|
+ *auth_hibernate = *can_hibernate;
|
||||||
|
+#else
|
||||||
|
+ ret = xfsm_upower_can_hibernate (shutdown->upower, can_hibernate,
|
||||||
|
+ auth_hibernate, error);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/xfce4-session/xfsm-systemd.c b/xfce4-session/xfsm-systemd.c
|
||||||
|
index 7bdd39d..cfe7bf4 100644
|
||||||
|
--- xfce4-session/xfsm-systemd.c
|
||||||
|
+++ xfce4-session/xfsm-systemd.c
|
||||||
|
@@ -33,8 +33,12 @@
|
||||||
|
#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
|
||||||
|
#define SYSTEMD_REBOOT_ACTION "Reboot"
|
||||||
|
#define SYSTEMD_POWEROFF_ACTION "PowerOff"
|
||||||
|
+#define SYSTEMD_SUSPEND_ACTION "Suspend"
|
||||||
|
+#define SYSTEMD_HIBERNATE_ACTION "Hibernate"
|
||||||
|
#define SYSTEMD_REBOOT_TEST "org.freedesktop.login1.reboot"
|
||||||
|
#define SYSTEMD_POWEROFF_TEST "org.freedesktop.login1.power-off"
|
||||||
|
+#define SYSTEMD_SUSPEND_TEST "org.freedesktop.login1.suspend"
|
||||||
|
+#define SYSTEMD_HIBERNATE_TEST "org.freedesktop.login1.hibernate"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -205,6 +209,28 @@ xfsm_systemd_try_shutdown (XfsmSystemd *systemd,
|
||||||
|
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
+xfsm_systemd_try_suspend (XfsmSystemd *systemd,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ return xfsm_systemd_try_method (systemd,
|
||||||
|
+ SYSTEMD_SUSPEND_ACTION,
|
||||||
|
+ error);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
+xfsm_systemd_try_hibernate (XfsmSystemd *systemd,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ return xfsm_systemd_try_method (systemd,
|
||||||
|
+ SYSTEMD_HIBERNATE_ACTION,
|
||||||
|
+ error);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
xfsm_systemd_can_restart (XfsmSystemd *systemd,
|
||||||
|
gboolean *can_restart,
|
||||||
|
GError **error)
|
||||||
|
@@ -227,3 +253,29 @@ xfsm_systemd_can_shutdown (XfsmSystemd *systemd,
|
||||||
|
SYSTEMD_POWEROFF_TEST,
|
||||||
|
error);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
+xfsm_systemd_can_suspend (XfsmSystemd *systemd,
|
||||||
|
+ gboolean *can_suspend,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ return xfsm_systemd_can_method (systemd,
|
||||||
|
+ can_suspend,
|
||||||
|
+ SYSTEMD_SUSPEND_TEST,
|
||||||
|
+ error);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
+xfsm_systemd_can_hibernate (XfsmSystemd *systemd,
|
||||||
|
+ gboolean *can_hibernate,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ return xfsm_systemd_can_method (systemd,
|
||||||
|
+ can_hibernate,
|
||||||
|
+ SYSTEMD_HIBERNATE_TEST,
|
||||||
|
+ error);
|
||||||
|
+}
|
||||||
|
diff --git a/xfce4-session/xfsm-systemd.h b/xfce4-session/xfsm-systemd.h
|
||||||
|
index 8223622..6cf803f 100644
|
||||||
|
--- xfce4-session/xfsm-systemd.h
|
||||||
|
+++ xfce4-session/xfsm-systemd.h
|
||||||
|
@@ -42,6 +42,12 @@ gboolean xfsm_systemd_try_restart (XfsmSystemd *systemd,
|
||||||
|
gboolean xfsm_systemd_try_shutdown (XfsmSystemd *systemd,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
+gboolean xfsm_systemd_try_suspend (XfsmSystemd *systemd,
|
||||||
|
+ GError **error);
|
||||||
|
+
|
||||||
|
+gboolean xfsm_systemd_try_hibernate (XfsmSystemd *systemd,
|
||||||
|
+ GError **error);
|
||||||
|
+
|
||||||
|
gboolean xfsm_systemd_can_restart (XfsmSystemd *systemd,
|
||||||
|
gboolean *can_restart,
|
||||||
|
GError **error);
|
||||||
|
@@ -50,6 +56,14 @@ gboolean xfsm_systemd_can_shutdown (XfsmSystemd *systemd,
|
||||||
|
gboolean *can_shutdown,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
+gboolean xfsm_systemd_can_suspend (XfsmSystemd *systemd,
|
||||||
|
+ gboolean *can_suspend,
|
||||||
|
+ GError **error);
|
||||||
|
+
|
||||||
|
+gboolean xfsm_systemd_can_hibernate (XfsmSystemd *systemd,
|
||||||
|
+ gboolean *can_hibernate,
|
||||||
|
+ GError **error);
|
||||||
|
+
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __XFSM_SYSTEMD_H__ */
|
||||||
|
--
|
||||||
|
1.8.1.5
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Template file for 'xfce4-session'
|
# Template file for 'xfce4-session'
|
||||||
pkgname=xfce4-session
|
pkgname=xfce4-session
|
||||||
version=4.10.1
|
version=4.10.1
|
||||||
revision=1
|
revision=2
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
configure_args="--disable-static --enable-systemd"
|
configure_args="--disable-static --enable-systemd"
|
||||||
hostmakedepends="pkg-config intltool"
|
hostmakedepends="pkg-config intltool xfce4-dev-tools gettext-devel"
|
||||||
makedepends="libxfce4ui-devel gtk+-devel xfconf-devel dbus-glib-devel
|
makedepends="libxfce4ui-devel gtk+-devel xfconf-devel dbus-glib-devel
|
||||||
libwnck2-devel xfce4-panel-devel systemd-devel polkit-devel desktop-file-utils
|
libwnck2-devel xfce4-panel-devel systemd-devel polkit-devel desktop-file-utils
|
||||||
libgnome-keyring-devel libSM-devel iceauth upower udisks hicolor-icon-theme"
|
libgnome-keyring-devel libSM-devel iceauth upower udisks hicolor-icon-theme"
|
||||||
|
@ -15,17 +15,22 @@ homepage="http://xfce.org"
|
||||||
distfiles="http://archive.se.xfce.org/src/xfce/xfce4-session/4.10/$pkgname-$version.tar.bz2"
|
distfiles="http://archive.se.xfce.org/src/xfce/xfce4-session/4.10/$pkgname-$version.tar.bz2"
|
||||||
checksum=0154fabdc398798c3445374ccc52a2f5bcb2d867fc94bc54114395b24f9cfc83
|
checksum=0154fabdc398798c3445374ccc52a2f5bcb2d867fc94bc54114395b24f9cfc83
|
||||||
|
|
||||||
|
pre_configure() {
|
||||||
|
xdt-autogen
|
||||||
|
}
|
||||||
|
|
||||||
xfce4-session-devel_package() {
|
xfce4-session-devel_package() {
|
||||||
depends="libxfce4ui-devel xfconf-devel ${sourcepkg}>=${version}"
|
depends="libxfce4ui-devel xfconf-devel ${sourcepkg}>=${version}_${revision}"
|
||||||
short_desc+=" - development files"
|
short_desc+=" - development files"
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
vmove usr/include
|
vmove usr/include
|
||||||
vmove usr/lib/pkgconfig
|
vmove usr/lib/pkgconfig
|
||||||
|
vmove "usr/lib/*.so"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xfce4-session_package() {
|
xfce4-session_package() {
|
||||||
depends="upower udisks hicolor-icon-theme desktop-file-utils"
|
depends="upower hicolor-icon-theme desktop-file-utils"
|
||||||
conf_files="/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml"
|
conf_files="/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml"
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
vmove all
|
vmove all
|
||||||
|
|
Loading…
Add table
Reference in a new issue