Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 372368 Details for
Bug 504044
xfce-base/xfce4-session: add systemd/login1 hibernate/suspend support
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to the xfce4-session sources to add systemd support for hibernate/suspend
xfce4-session-4.10.1-systemd-support-for-suspend-hibernate.patch (text/plain), 11.81 KB, created by
pelopor
on 2014-03-11 12:08:24 UTC
(
hide
)
Description:
patch to the xfce4-session sources to add systemd support for hibernate/suspend
Filename:
MIME Type:
Creator:
pelopor
Created:
2014-03-11 12:08:24 UTC
Size:
11.81 KB
patch
obsolete
>diff -buwr xfce4-session-4.10.1.orig/configure.ac xfce4-session-4.10.1/configure.ac >--- xfce4-session-4.10.1.orig/configure.ac 2013-05-06 00:33:55.000000000 +0900 >+++ xfce4-session-4.10.1/configure.ac 2014-03-11 18:55:09.000000000 +0900 >@@ -103,7 +103,7 @@ > > dnl Check for polkit / systemd integration > XDT_CHECK_OPTIONAL_PACKAGE([SYSTEMD], [polkit-gobject-1], [0.100], >- [systemd], [Systemd support (through polit)]) >+ [systemd], [Systemd support (through polkit)]) > > dnl Check for debugging support > XDT_FEATURE_DEBUG([xfsm_debug_default]) >@@ -207,10 +207,10 @@ > else > echo " * Legacy session management: no" > fi >-if test x"$GNOME_KEYRING_FOUND" = x"yes"; then >-echo " * Gnome Keyring support: yes" >+if test x"$SYSTEMD_FOUND" = x"yes"; then >+echo " * Systemd support (through polkit): yes" > else >-echo " * Gnome Keyring support: no" >+echo " * Systemd support (through polkit): no" > fi > > echo >diff -buwr xfce4-session-4.10.1.orig/xfce4-session/Makefile.am xfce4-session-4.10.1/xfce4-session/Makefile.am >--- xfce4-session-4.10.1.orig/xfce4-session/Makefile.am 2013-05-06 00:33:55.000000000 +0900 >+++ xfce4-session-4.10.1/xfce4-session/Makefile.am 2014-03-11 18:55:09.000000000 +0900 >@@ -38,6 +38,8 @@ > xfsm-compat-gnome.h \ > xfsm-compat-kde.c \ > xfsm-compat-kde.h \ >+ xfsm-consolekit.c \ >+ xfsm-consolekit.h \ > xfsm-dns.c \ > xfsm-dns.h \ > xfsm-error.c \ >@@ -67,10 +69,6 @@ > xfce4_session_SOURCES += \ > xfsm-systemd.c \ > xfsm-systemd.h >-else >-xfce4_session_SOURCES += \ >- xfsm-consolekit.c \ >- xfsm-consolekit.h > endif > > xfce4_session_CFLAGS = \ >diff -buwr xfce4-session-4.10.1.orig/xfce4-session/xfsm-shutdown.c xfce4-session-4.10.1/xfce4-session/xfsm-shutdown.c >--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-shutdown.c 2013-05-06 00:33:55.000000000 +0900 >+++ xfce4-session-4.10.1/xfce4-session/xfsm-shutdown.c 2014-03-11 18:55:09.000000000 +0900 >@@ -63,6 +63,7 @@ > #include <xfce4-session/xfsm-shutdown.h> > #include <xfce4-session/xfsm-compat-gnome.h> > #include <xfce4-session/xfsm-compat-kde.h> >+#include <xfce4-session/xfsm-consolekit.h> > #include <xfce4-session/xfsm-fadeout.h> > #include <xfce4-session/xfsm-global.h> > #include <xfce4-session/xfsm-legacy.h> >@@ -70,8 +71,6 @@ > > #ifdef HAVE_SYSTEMD > #include <xfce4-session/xfsm-systemd.h> >-#else >-#include <xfce4-session/xfsm-consolekit.h> > #endif > > static void xfsm_shutdown_finalize (GObject *object); >@@ -98,9 +97,8 @@ > > #ifdef HAVE_SYSTEMD > XfsmSystemd *systemd; >-#else >- XfsmConsolekit *consolekit; > #endif >+ XfsmConsolekit *consolekit; > XfsmUPower *upower; > > /* kiosk settings */ >@@ -139,10 +137,14 @@ > XfceKiosk *kiosk; > > #ifdef HAVE_SYSTEMD >+ shutdown->consolekit = NULL; >+ shutdown->systemd = NULL; >+ if (LOGIND_RUNNING()) > shutdown->systemd = xfsm_systemd_get (); >-#else >- shutdown->consolekit = xfsm_consolekit_get (); >+ else > #endif >+ shutdown->consolekit = xfsm_consolekit_get (); >+ > shutdown->upower = xfsm_upower_get (); > shutdown->helper_state = SUDO_NOT_INITIAZED; > shutdown->helper_require_password = FALSE; >@@ -162,10 +164,11 @@ > XfsmShutdown *shutdown = XFSM_SHUTDOWN (object); > > #ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) > g_object_unref (G_OBJECT (shutdown->systemd)); >-#else >- g_object_unref (G_OBJECT (shutdown->consolekit)); > #endif >+ if (shutdown->consolekit != NULL) >+ g_object_unref (G_OBJECT (shutdown->consolekit)); > g_object_unref (G_OBJECT (shutdown->upower)); > > /* close down helper */ >@@ -657,10 +660,11 @@ > return xfsm_shutdown_sudo_try_action (shutdown, XFSM_SHUTDOWN_RESTART, error); > else > #ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) > return xfsm_systemd_try_restart (shutdown->systemd, error); >-#else >- return xfsm_consolekit_try_restart (shutdown->consolekit, error); >+ else > #endif >+ return xfsm_consolekit_try_restart (shutdown->consolekit, error); > } > > >@@ -678,10 +682,11 @@ > return xfsm_shutdown_sudo_try_action (shutdown, XFSM_SHUTDOWN_SHUTDOWN, error); > else > #ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) > return xfsm_systemd_try_shutdown (shutdown->systemd, error); >-#else >- return xfsm_consolekit_try_shutdown (shutdown->consolekit, error); >+ else > #endif >+ return xfsm_consolekit_try_shutdown (shutdown->consolekit, error); > } > > >@@ -692,6 +697,11 @@ > { > g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE); > >+#ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ return xfsm_systemd_try_suspend (shutdown->systemd, error); >+ else >+#endif > return xfsm_upower_try_suspend (shutdown->upower, error); > } > >@@ -703,6 +713,11 @@ > { > g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE); > >+#ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ return xfsm_systemd_try_hibernate (shutdown->systemd, error); >+ else >+#endif > return xfsm_upower_try_hibernate (shutdown->upower, error); > } > >@@ -722,10 +737,14 @@ > } > > #ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ { > if (xfsm_systemd_can_restart (shutdown->systemd, can_restart, error)) >-#else >- if (xfsm_consolekit_can_restart (shutdown->consolekit, can_restart, error)) >+ return TRUE; >+ } >+ else > #endif >+ if (xfsm_consolekit_can_restart (shutdown->consolekit, can_restart, error)) > return TRUE; > > if (xfsm_shutdown_sudo_init (shutdown, error)) >@@ -753,10 +772,14 @@ > } > > #ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ { > if (xfsm_systemd_can_shutdown (shutdown->systemd, can_shutdown, error)) >-#else >- if (xfsm_consolekit_can_shutdown (shutdown->consolekit, can_shutdown, error)) >+ return TRUE; >+ } >+ else > #endif >+ if (xfsm_consolekit_can_shutdown (shutdown->consolekit, can_shutdown, error)) > return TRUE; > > if (xfsm_shutdown_sudo_init (shutdown, error)) >@@ -784,6 +807,12 @@ > return TRUE; > } > >+#ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ return xfsm_systemd_can_suspend (shutdown->systemd, can_suspend, >+ auth_suspend, error); >+ else >+#endif > return xfsm_upower_can_suspend (shutdown->upower, can_suspend, > auth_suspend, error); > } >@@ -804,6 +833,12 @@ > return TRUE; > } > >+#ifdef HAVE_SYSTEMD >+ if (shutdown->systemd != NULL) >+ return xfsm_systemd_can_hibernate (shutdown->systemd, can_hibernate, >+ auth_hibernate, error); >+ else >+#endif > return xfsm_upower_can_hibernate (shutdown->upower, can_hibernate, > auth_hibernate, error); > } >diff -buwr xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.c xfce4-session-4.10.1/xfce4-session/xfsm-systemd.c >--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.c 2013-05-06 00:33:55.000000000 +0900 >+++ xfce4-session-4.10.1/xfce4-session/xfsm-systemd.c 2014-03-11 18:55:09.000000000 +0900 >@@ -24,6 +24,7 @@ > #include <dbus/dbus-glib.h> > #include <dbus/dbus-glib-lowlevel.h> > >+#include <libxfsm/xfsm-util.h> > #include <xfce4-session/xfsm-systemd.h> > > >@@ -33,8 +34,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" > > > >@@ -93,6 +98,22 @@ > } > > >+ >+static gboolean >+xfsm_systemd_lock_screen (GError **error) >+{ >+ XfconfChannel *channel; >+ gboolean ret = TRUE; >+ >+ channel = xfsm_open_config (); >+ if (xfconf_channel_get_bool (channel, "/shutdown/LockScreen", FALSE)) >+ ret = g_spawn_command_line_async ("xflock4", error); >+ >+ return ret; >+} >+ >+ >+ > static gboolean > xfsm_systemd_can_method (XfsmSystemd *systemd, > gboolean *can_method, >@@ -205,6 +226,34 @@ > > > gboolean >+xfsm_systemd_try_suspend (XfsmSystemd *systemd, >+ GError **error) >+{ >+ if (!xfsm_systemd_lock_screen (error)) >+ return FALSE; >+ >+ return xfsm_systemd_try_method (systemd, >+ SYSTEMD_SUSPEND_ACTION, >+ error); >+} >+ >+ >+ >+gboolean >+xfsm_systemd_try_hibernate (XfsmSystemd *systemd, >+ GError **error) >+{ >+ if (!xfsm_systemd_lock_screen (error)) >+ return FALSE; >+ >+ return xfsm_systemd_try_method (systemd, >+ SYSTEMD_HIBERNATE_ACTION, >+ error); >+} >+ >+ >+ >+gboolean > xfsm_systemd_can_restart (XfsmSystemd *systemd, > gboolean *can_restart, > GError **error) >@@ -227,3 +276,39 @@ > SYSTEMD_POWEROFF_TEST, > error); > } >+ >+ >+ >+gboolean >+xfsm_systemd_can_suspend (XfsmSystemd *systemd, >+ gboolean *can_suspend, >+ gboolean *auth_suspend, >+ GError **error) >+{ >+ gboolean ret = FALSE; >+ >+ ret = xfsm_systemd_can_method (systemd, >+ can_suspend, >+ SYSTEMD_SUSPEND_TEST, >+ error); >+ *auth_suspend = *can_suspend; >+ return ret; >+} >+ >+ >+ >+gboolean >+xfsm_systemd_can_hibernate (XfsmSystemd *systemd, >+ gboolean *can_hibernate, >+ gboolean *auth_hibernate, >+ GError **error) >+{ >+ gboolean ret = FALSE; >+ >+ ret = xfsm_systemd_can_method (systemd, >+ can_hibernate, >+ SYSTEMD_HIBERNATE_TEST, >+ error); >+ *auth_hibernate = *can_hibernate; >+ return ret; >+} >diff -buwr xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.h xfce4-session-4.10.1/xfce4-session/xfsm-systemd.h >--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.h 2013-05-06 00:33:55.000000000 +0900 >+++ xfce4-session-4.10.1/xfce4-session/xfsm-systemd.h 2014-03-11 18:55:09.000000000 +0900 >@@ -22,6 +22,8 @@ > #ifndef __XFSM_SYSTEMD_H__ > #define __XFSM_SYSTEMD_H__ > >+#define LOGIND_RUNNING() (access ("/run/systemd/seats/", F_OK) >= 0) >+ > typedef struct _XfsmSystemdClass XfsmSystemdClass; > typedef struct _XfsmSystemd XfsmSystemd; > >@@ -42,6 +44,12 @@ > 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 +58,16 @@ > gboolean *can_shutdown, > GError **error); > >+gboolean xfsm_systemd_can_suspend (XfsmSystemd *systemd, >+ gboolean *can_suspend, >+ gboolean *auth_suspend, >+ GError **error); >+ >+gboolean xfsm_systemd_can_hibernate (XfsmSystemd *systemd, >+ gboolean *can_hibernate, >+ gboolean *auth_hibernate, >+ GError **error); >+ > G_END_DECLS > > #endif /* __XFSM_SYSTEMD_H__ */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 504044
:
372252
|
372254
| 372368 |
372370
|
378566
|
378568