Могу также ответить на это, хотя это не мой ответ (мой начальник предоставил мне решение), чтобы помочь другим с такой же потребностью (или любопытным умом). 
tl; dr: Используйте D-Bus для получения сигналов активного / деактивированного экрана блокировки.
Похоже, что обмен сообщениями по шине D-Bus широко поддерживается приложениями GNOME, в частности приложением ScreenSaver, и кажется, что приложение gnome-screensaver является официальным приложением для блокировки оболочки Gnome.
Итак, чтобы проверить это, я просто запустил dbus-monitor и получил ответ:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
Я написал небольшой скрипт на Python для записи этого действия в файл:
#!/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