Voici une autre solution utilisant "dbus-monitor". Une petite activité d'écran de journalisation du script bash.
exit_report(){
echo "$(date) Monitoring Terminated."
}
trap "exit_report; exit;" 0
lockmon() {
adddate() {
while IFS= read -r line; do
echo "$(date) $line" | grep "boolean" | sed 's/ boolean true/Screen Locked/' | sed 's/ boolean false/Screen Unlocked/'
done
}
echo "$(date) Monitoring Started."
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | adddate
}
lockmon >> lock_screen.log
Essayez de jeter un oeil à /var/log/auth.log
. Vous devriez voir des messages connexes de PAM et/ou de l'application d'économiseur d'écran.
Oui, il ne semble pas être connecté n'importe où pour vous. @tutuDajuju a une bonne solution, j'ai donc pensé la porter sur bash (et supprimer la dépendance à l'utilisation de gnome, cela devrait fonctionner quel que soit l'environnement de bureau) pour ceux qui sont intéressés.
Si vous l'exécutez en arrière-plan et que vous le redirigez vers un fichier journal, vous aurez votre journal.
#!/bin/bash
#prints out, among other things;
# string "org.kde.screensaver"
#transform it to 'org.kde.screensaver'
service=$(\
dbus-send \
--session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus org.freedesktop.DBus.ListNames \
| grep -o '[^"]*.screensaver'
)
#prints out, among other things;
#method bool org.freedesktop.ScreenSaver.SetActive(bool e)
#transform it to 'org.freedesktop.ScreenSaver'
interface=$(
qdbus \
$service /ScreenSaver \
| grep -oP '[^ ]*(?=.SetActive)'
)
path='/ScreenSaver'
#monitor it with a while loop
dbus-monitor "type='signal',interface='$interface',member='ActiveChanged',path='$path'" \
| while read -r line; do
#ignore the metadata and pull the 'boolean <true/false>' line
read line
#check if it is set to true
if echo $line | grep -q 'true'; then
echo "Locked at $(date)"
else
echo "Unlocked at $(date)"
fi
done
Cela a bien fonctionné sur mon Fedora avec KDE, mais je suppose que cela devrait fonctionner sur d'autres choses comme Debian avec gnome et cetera.
Vous pouvez avoir des problèmes si votre grep
ne prend pas en charge -P
(auquel cas vous pouvez simplement utiliser sed
).