Ini solusi lain menggunakan "dbus-monitor". Sedikit aktivitas layar logging skrip 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
Coba lihat /var/log/auth.log
. Anda akan melihat beberapa pesan terkait dari PAM dan/atau aplikasi screensaver.
Ya, sepertinya tidak dicatat di mana pun untuk Anda. @tutuDajuju memiliki solusi yang bagus jadi saya pikir saya akan mem-portingnya ke bash (dan menghapus ketergantungan pada penggunaan gnome, ini akan berfungsi terlepas dari lingkungan desktop) bagi mereka yang tertarik.
Jika Anda menjalankan ini di latar belakang dan menyalurkannya ke file log, Anda akan memiliki log Anda.
#!/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
Ini berjalan dengan baik di Fedora saya dengan KDE, tapi saya kira ini harus bekerja pada hal-hal lain seperti Debian dengan gnome dan lain-lain.
Anda mungkin mengalami masalah jika grep
Anda tidak mendukung -P
(dalam hal ini Anda cukup menggunakan sed
).