【问题标题】:Use gnome-screensaver-command on python在 python 上使用 gnome-screensaver-command
【发布时间】:2013-03-30 00:38:42
【问题描述】:
【问题讨论】:
标签:
python
ubuntu-12.04
gnome
【解决方案1】:
您也可以通过D-Bus 与 gnome-screensaver 交谈:
import dbus
def screensaver_active():
bus = dbus.SessionBus()
screensaver = bus.get_object('org.gnome.ScreenSaver', '/')
return bool(screensaver.GetActive())
variable = screensaver_active()
【解决方案2】:
import dbus
def screensaver_status():
session_bus = dbus.SessionBus()
screensaver_list = ['org.gnome.ScreenSaver',
'org.cinnamon.ScreenSaver',
'org.kde.screensaver',
'org.freedesktop.ScreenSaver']
for each in screensaver_list:
try:
object_path = '/{0}'.format(each.replace('.', '/'))
get_object = session_bus.get_object(each, object_path)
get_interface = dbus.Interface(get_object, each)
return bool(get_interface.GetActive())
except dbus.exceptions.DBusException:
pass
status = screensaver_status()
print(status)
这会捕获所有屏幕保护程序,而不仅仅是 Gnome。它也不会通过使用类似的东西来阻止
*-screensaver-command
【解决方案3】:
你可以使用subprocess在Python中执行shell命令,然后grep它的stdout for is active这一行:
def isScreenLocked():
import subprocess
com = subprocess.Popen(['gnome-screensaver-command', '-q'], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
return "is active" in com.communicate()[0]