在python上使用gnome屏幕保护程序命令

在python上使用gnome屏幕保护程序命令,python,ubuntu-12.04,gnome,Python,Ubuntu 12.04,Gnome,我有以下代码来检查屏幕是否被锁定(使用gnome屏幕保护程序) 在这个链接中,有一个关于在shell脚本中使用它的代码。但是如何使用python中的代码呢?并将其存储在变量表中,无论其是否处于活动状态。您可以使用在Python中执行shell命令,然后grep其stdout for处于活动状态行: def isScreenLocked(): import subprocess com = subprocess.Popen(['gnome-screensaver-command',

我有以下代码来检查屏幕是否被锁定(使用gnome屏幕保护程序)


在这个链接中,有一个关于在shell脚本中使用它的代码。但是如何使用python中的代码呢?并将其存储在变量表中,无论其是否处于活动状态。

您可以使用在Python中执行shell命令,然后grep其stdout for
处于活动状态
行:

def isScreenLocked():
    import subprocess
    com = subprocess.Popen(['gnome-screensaver-command', '-q'], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    return "is active" in com.communicate()[0]

您可以使用在Python中执行shell命令,然后grep其stdout for
处于活动状态
行:

def isScreenLocked():
    import subprocess
    com = subprocess.Popen(['gnome-screensaver-command', '-q'], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    return "is active" in com.communicate()[0]

您还可以通过以下方式与gnome屏幕保护程序对话:


您还可以通过以下方式与gnome屏幕保护程序对话:

导入DBU

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
导入DBU

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