Use Gnome-screensaver-command On Python
I have the following code to check whether the screen is locked or not (using gnome-screensaver) gnome-screensaver-command -q | grep 'is active' From this link, https://askubuntu.
Solution 1:
You can also talk to the gnome-screensaver via D-Bus:
import dbus
def screensaver_active():
bus = dbus.SessionBus()
screensaver = bus.get_object('org.gnome.ScreenSaver', '/')
return bool(screensaver.GetActive())
variable = screensaver_active()
Solution 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)
This catches all screensavers, not just Gnome. It also doesn't block by using something like
*-screensaver-command
Solution 3:
You can execute the shell command in Python using subprocess
, and then grep its stdout for is active
line:
def isScreenLocked():
importsubprocesscom= subprocess.Popen(['gnome-screensaver-command', '-q'], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
return"is active" in com.communicate()[0]
Post a Comment for "Use Gnome-screensaver-command On Python"