mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-29 01:06:27 -05:00
Detect session lock on Xfce/XUbuntu 16.04
The current code does not work with XUbuntu 16.04, which uses light-locker to lock the screen. I am not using a screensaver, but I suspect the screensaver activation may have been detected by the existing events, and using it could thus mask the issue.
This commit is contained in:
parent
0c3f352c63
commit
263bee3c09
@ -20,6 +20,7 @@
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusReply>
|
||||
#include <QProcessEnvironment>
|
||||
|
||||
ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent):
|
||||
ScreenLockListenerPrivate(parent)
|
||||
@ -34,7 +35,7 @@ ScreenLockListenerDBus::ScreenLockListenerDBus(QWidget *parent):
|
||||
"ActiveChanged", // signal name
|
||||
this, //receiver
|
||||
SLOT(freedesktopScreenSaver(bool)));
|
||||
|
||||
|
||||
sessionBus.connect(
|
||||
"org.gnome.SessionManager", // service
|
||||
"/org/gnome/SessionManager/Presence", // path
|
||||
@ -51,6 +52,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 +94,4 @@ void ScreenLockListenerDBus::freedesktopScreenSaver(bool status)
|
||||
if (status) {
|
||||
emit screenLocked();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user