summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-misc/sddm/files/sddm-0.11.0-consolekit2.patch')
-rw-r--r--x11-misc/sddm/files/sddm-0.11.0-consolekit2.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/x11-misc/sddm/files/sddm-0.11.0-consolekit2.patch b/x11-misc/sddm/files/sddm-0.11.0-consolekit2.patch
new file mode 100644
index 000000000000..7f6f3f7f8113
--- /dev/null
+++ b/x11-misc/sddm/files/sddm-0.11.0-consolekit2.patch
@@ -0,0 +1,91 @@
+From 7a8024639ee3ae7e128a9dc3efce90a07b4d316c Mon Sep 17 00:00:00 2001
+From: Eric Koegel <eric.koegel@gmail.com>
+Date: Mon, 6 Jul 2015 11:16:38 +0300
+Subject: [PATCH] ConsoleKit2 support for system actions
+
+This adds support for calling ConsoleKit2's DBUS API for shutdown,
+reboot, suspend, and hibernate. It does so by using the exact same
+interface as login1, making it a shared seat manager backend.
+---
+ INSTALL | 4 ++--
+ src/daemon/PowerManager.cpp | 26 +++++++++++++++++---------
+ 2 files changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/INSTALL b/INSTALL
+index 77b6a8b..5d16710 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -30,8 +30,8 @@ its home set to `/var/lib/sddm` by default.
+ SDDM depends on PAM for authorization and XCB to communicate with the X server.
+ Apart from other things, it also depends on Qt for the user interface and event
+ loop management.
+-SDDM can optionally make use of logind (the systemd login manager API) or
+-upower to enable support for suspend, hibernate etc.
++SDDM can optionally make use of logind (the systemd login manager API), or
++ConsoleKit2, or upower to enable support for suspend, hibernate etc.
+ In order to build the man pages, you will need `rst2man` installed. It is
+ provided by the python `docutils` package
+
+diff --git a/src/daemon/PowerManager.cpp b/src/daemon/PowerManager.cpp
+index 3a4d25d..6329032 100644
+--- a/src/daemon/PowerManager.cpp
++++ b/src/daemon/PowerManager.cpp
+@@ -59,8 +59,8 @@ namespace SDDM {
+
+ class UPowerBackend : public PowerManagerBackend {
+ public:
+- UPowerBackend() {
+- m_interface = new QDBusInterface(UPOWER_SERVICE, UPOWER_PATH, UPOWER_OBJECT, QDBusConnection::systemBus());
++ UPowerBackend(const QString & service, const QString & path, const QString & interface) {
++ m_interface = new QDBusInterface(service, path, interface, QDBusConnection::systemBus());
+ }
+
+ ~UPowerBackend() {
+@@ -110,20 +110,24 @@ namespace SDDM {
+ };
+
+ /**********************************************/
+- /* LOGIN1 BACKEND */
++ /* LOGIN1 && ConsoleKit2 BACKEND */
+ /**********************************************/
+
+ #define LOGIN1_SERVICE QStringLiteral("org.freedesktop.login1")
+ #define LOGIN1_PATH QStringLiteral("/org/freedesktop/login1")
+ #define LOGIN1_OBJECT QStringLiteral("org.freedesktop.login1.Manager")
+
+- class Login1Backend : public PowerManagerBackend {
++#define CK2_SERVICE QStringLiteral("org.freedesktop.ConsoleKit")
++#define CK2_PATH QStringLiteral("/org/freedesktop/ConsoleKit/Manager")
++#define CK2_OBJECT QStringLiteral("org.freedesktop.ConsoleKit.Manager")
++
++ class SeatManagerBackend : public PowerManagerBackend {
+ public:
+- Login1Backend() {
+- m_interface = new QDBusInterface(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_OBJECT, QDBusConnection::systemBus());
++ SeatManagerBackend(const QString & service, const QString & path, const QString & interface) {
++ m_interface = new QDBusInterface(service, path, interface, QDBusConnection::systemBus());
+ }
+
+- ~Login1Backend() {
++ ~SeatManagerBackend() {
+ delete m_interface;
+ }
+
+@@ -194,11 +198,15 @@ namespace SDDM {
+
+ // check if login1 interface exists
+ if (interface->isServiceRegistered(LOGIN1_SERVICE))
+- m_backends << new Login1Backend();
++ m_backends << new SeatManagerBackend(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_OBJECT);
++
++ // check if ConsoleKit2 interface exists
++ if (interface->isServiceRegistered(CK2_SERVICE))
++ m_backends << new SeatManagerBackend(CK2_SERVICE, CK2_PATH, CK2_OBJECT);
+
+ // check if upower interface exists
+ if (interface->isServiceRegistered(UPOWER_SERVICE))
+- m_backends << new UPowerBackend();
++ m_backends << new UPowerBackend(UPOWER_SERVICE, UPOWER_PATH, UPOWER_OBJECT);
+ }
+
+ PowerManager::~PowerManager() {