画面のロック/ロック解除を監視する機能を実装する必要があります。私は次の記事を参照しました:
画面のロック/ロック解除でスクリプトを実行
私のpythonスクリプトコードはUbuntu12.04では正常に機能しますが、Ubuntu14.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で画面のロック/ロック解除を監視するにはどうすればよいですか?
あなたが正しいです。したがって、ここで適切な答えを得るために、コードを機能するものに変更しました(少なくとも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()
私は答えを見つけたと思います:
Ubuntu 14.014では、「org.gnome.ScreenSaver」ではなく「com.ubuntu.Upstart0_6」インターフェースを監視する必要があります。