Ubuntu 14.04에서 화면 잠금/잠금 해제를 모니터링하는 방법

Ubuntu 14.04에서 화면 잠금/잠금 해제를 모니터링하는 방법

화면 잠금/잠금 해제를 모니터링하는 기능을 구현해야 합니다. 다음 기사를 참고했습니다.
화면이 잠기거나 잠금 해제되면 스크립트 실행

내 Python 스크립트 코드는 Ubuntu 12.04에서는 제대로 작동하지만 Ubuntu 14.04에서는 작동하지 않습니다.

#!/usr/bin/env python  
import gobject  
import dbus  
from dbus.mainloop.glib import DBusGMainLoop  

def filter_cb(bus, message):
    if message.get_member() != "ActiveChanged":
        return
    args = message.get_args_list()
    if args[0] == True:
        print("Lock Screen")
    else:
        print("Unlock Screen")

DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string("type='signal',interface='org.gnome.ScreenSaver'")
bus.add_message_filter(filter_cb)
mainloop = gobject.MainLoop()
mainloop.run()

나는 또한 다음 명령을 시도했습니다.

dbus-monitor --session "interface='org.gnome.ScreenSaver'"  

화면을 수동으로 잠그거나 잠금 해제하면 아무 것도 출력되지 않습니다.

Ubuntu 14.04에서 화면 잠금/잠금 해제를 모니터링하는 방법은 무엇입니까?

답변1

당신 말이 맞아요. 따라서 여기서 올바른 답을 얻기 위해 코드가 작동하도록 수정했습니다(적어도 Ubuntu 15.10, Unify에서는).

#!/usr/bin/env python
import gobject
import dbus
from dbus.mainloop.glib import DBusGMainLoop

def filter_cb(bus, message):
if message.get_member() != "EventEmitted":
    return
args = message.get_args_list()
if args[0] == "desktop-lock":
    print("Lock Screen")
elif args[0] == "desktop-unlock":
    print("Unlock Screen")

DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string("type='signal',interface='com.ubuntu.Upstart0_6'")
bus.add_message_filter(filter_cb)
mainloop = gobject.MainLoop()
mainloop.run()

답변2

답을 찾은 것 같습니다.
Ubuntu 14.014에서는 "org.gnome.ScreenSaver" 대신 "com.ubuntu.Upstart0_6" 인터페이스를 모니터링해야 합니다.

관련 정보