हो सकता है कि यह भी जवाब दे, हालांकि यह मेरा जवाब नहीं है (मेरे बॉस ने मुझे समाधान के साथ प्रदान किया) दूसरों को उसी ज़रूरत (या जिज्ञासु दिमाग) के साथ मदद करने के लिए।
tl; dr: लॉकस्क्रीन के सक्रिय / निष्क्रिय संकेतों को प्राप्त करने के लिए डी-बस का उपयोग करें।
ऐसा लगता है कि डी-बस मैसेजिंग को गनोम ऐप और स्क्रीनसेवर ऐप द्वारा विशेष रूप से समर्थित किया गया है , और ऐसा लगता है कि ग्नोम -स्क्रीनसेवर ऐप ग्नोम शेल के लिए आधिकारिक लॉकिंग ऐप है।
इसलिए, इसका परीक्षण करने के लिए, मैंने अभी - अभी डब-मॉनीटर चलाया और प्रतिक्रिया प्राप्त की:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
मैंने इस गतिविधि को एक फ़ाइल में लॉग करने के लिए एक छोटी अजगर स्क्रिप्ट लिखी है:
#!/usr/bin/env python
from datetime import datetime
import os
import pwd
import subprocess
import time
LOG_FILE = os.path.expanduser('~/hours_log.csv')
cmd = subprocess.Popen(["dbus-monitor \"type='signal',interface="
"'org.gnome.ScreenSaver'\""], shell=True,
stdout=subprocess.PIPE)
running = 0
while 1:
time.sleep(0.1)
if running:
output = cmd.stdout.readline()
status = 'unlocked' if 'true' in output else 'locked'
new_line = "{time} {user} {status} the screen\n".format(
time=datetime.now().ctime(),
user=pwd.getpwuid(os.getuid())[0],
status=status
)
with open(LOG_FILE, 'a') as f:
f.write(new_line)
running = 0
line = cmd.stdout.readline()
if "ActiveChange" in line and 'org.gnome.ScreenSaver' in line:
running = 1
.shफाइल में डाला और इसे गनोम के स्टार्टअप एप्लिकेशन में जोड़ा। क्या यह टिन पर कहते है, THX