Vraag Detecteer screen-lock in shell / c ++


Ik heb een platformonafhankelijke applicatie die draait op Ubuntu 14.04 (GNOME). Daar moet ik bepalen of de screensaver actief is of niet en of het scherm is vergrendeld of niet.

Ik kwam erachter dat ik de screensaver-info kan krijgen met: gnome-screensaver-command -q

Maar ik kan er niet achter komen hoe ik een schermvergrendeling kan detecteren. Bijvoorbeeld over Unity kan ik gebruiken:

gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked

maar dat is een Unity-specifiek item. Dus idee├źn voor het verkrijgen van deze informatie over Gnome-machines?


2
2017-10-31 08:01


oorsprong


Heb je hier ooit een oplossing voor gevonden? :) - Noitidart
@Noitidart Eigenlijk wel, ik log het in als de aswer :) - Mathieu
Heel erg bedankt, Mathieu! Is deze oplossing Ubuntu specifiek? Of zou het ook op andere linuxes werken? Ik ben op zoek naar een cross-linux-oplossing maar begon met Ubuntu :) - Noitidart


antwoorden:


Erachter gekomen dat / org / gnome / SessionManager / Presence de huidige status van de gebruikerssessie bevat.

Het kan hierdoor worden genoemd:

gdbus call -e -d org.gnome.SessionManager -o /org/gnome/SessionManager/Presence -m org.freedesktop.DBus.Properties.Get /org/gnome/SessionManager/Presence status

Snelle bash-test:

#!/bin/bash
while true; do
 echo "PRESENCE "
gdbus call -e -d org.gnome.SessionManager -o /org/gnome/SessionManager/Presence -m org.freedesktop.DBus.Properties.Get /org/gnome/SessionManager/Presence status
        echo -e "\n"
        sleep 1
done

Bijvoorbeeld in Qt:

QProcess process;
process.start("sh", QStringList() << "-c"<< "gdbus call -e -d org.gnome.SessionManager -o /org/gnome/SessionManager/Presence -m org.freedesktop.DBus.Properties.Get /org/gnome/SessionManager/Presence status");
process.waitForFinished();
result = QString::fromLatin1(process.readAllStandardOutput());
int state = result.remove("(<uint32 ").remove(">,)").toInt();
if(state != 0) {
    // user not active!
}

1
2018-01-08 09:14