diff options
Diffstat (limited to 'src/core/ScreenLockListenerDBus.cpp')
-rw-r--r-- | src/core/ScreenLockListenerDBus.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/core/ScreenLockListenerDBus.cpp b/src/core/ScreenLockListenerDBus.cpp index 1976b47ea..03eed58ad 100644 --- a/src/core/ScreenLockListenerDBus.cpp +++ b/src/core/ScreenLockListenerDBus.cpp @@ -20,6 +20,7 @@ #include <QDBusConnection> #include <QDBusInterface> #include <QDBusReply> +#include <QProcessEnvironment> ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent): ScreenLockListenerPrivate(parent) @@ -34,7 +35,15 @@ ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent): "ActiveChanged", // signal name this, //receiver SLOT(freedesktopScreenSaver(bool))); - + + sessionBus.connect( + "org.gnome.ScreenSaver", // service + "/org/gnome/ScreenSaver", // path + "org.gnome.ScreenSaver", // interface + "ActiveChanged", // signal name + this, //receiver + SLOT(freedesktopScreenSaver(bool))); + sessionBus.connect( "org.gnome.SessionManager", // service "/org/gnome/SessionManager/Presence", // path @@ -51,6 +60,15 @@ ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent): this, //receiver SLOT(logindPrepareForSleep(bool))); + QString sessionId = QProcessEnvironment::systemEnvironment().value("XDG_SESSION_ID"); + systemBus.connect( + "", // service + QString("/org/freedesktop/login1/session/") + sessionId, // path + "org.freedesktop.login1.Session", // interface + "Lock", // signal name + this, //receiver + SLOT(unityLocked())); + sessionBus.connect( "com.canonical.Unity", // service "/com/canonical/Unity/Session", // path @@ -84,4 +102,4 @@ void ScreenLockListenerDBus::freedesktopScreenSaver(bool status) if (status) { emit screenLocked(); } -}
\ No newline at end of file +} |