এটির উত্তরও দিতে পারে যদিও অন্যদের অনুরূপ প্রয়োজন (বা কৌতূহলী মন) দিয়ে সহায়তা করার জন্য এটি আমার উত্তর না (আমার বস আমাকে সমাধানটি সরবরাহ করেছিলেন)।
tl; dr: লকস্ক্রিনের সক্রিয় / নিষ্ক্রিয় সংকেত পেতে ডি-বাস ব্যবহার করুন।
দেখে মনে হচ্ছে ডি-বাস মেসেজিং ব্যাপকভাবে জিনোম অ্যাপ্লিকেশনগুলি এবং স্ক্রিনস্যাভার অ্যাপ্লিকেশন দ্বারা বিশেষত সমর্থিত এবং এটি দেখে মনে হয় যে জিনোম-স্ক্রীনসেভার অ্যাপ্লিকেশনটি জিনোম শেলের জন্য সরকারী লকিং অ্যাপ্লিকেশন।
সুতরাং, এটি পরীক্ষা করার জন্য, আমি কেবল dbus- মনিটরের উপর দৌড়েছি এবং প্রতিক্রিয়াটি পেয়েছি :
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