같은 요구 (혹은 호기심)를 가진 다른 사람들을 돕는 것은 나의 대답 (나의 상사가 해결책을 제공하지는 않았지만)에도 대답 할 수 있습니다.
tl; dr : D-Bus를 사용하여 잠금 화면의 활성화 / 비활성화 신호를 얻습니다.
보인다 D-버스 메시징 널리 GNOME 응용 프로그램에 의해 지원되고, 화면 보호기 응용 프로그램은 특히 , 보인다 그놈 - 화면 보호기 응용 프로그램은 그놈 쉘의 공식 잠금 응용 프로그램입니다.
그래서 그것을 테스트하기 위해 dbus-monitor를 실행 하고 응답을 얻었습니다.
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
파일에 넣고 Gnome의 시작 응용 프로그램에 추가했습니다. 이 주석에 말씀합니까, 들으