Skip to content

Commit dfb2a9c

Browse files
committed
Merge commit '84903e7ae7b7ff6ba102558948cd15e5a361a555' into multi-screenlock
* commit '84903e7ae7b7ff6ba102558948cd15e5a361a555': Add screensaver detection for MacOS
2 parents 4607ee5 + 84903e7 commit dfb2a9c

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

ntfy/screensaver.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from shlex import split
22
from subprocess import check_output, check_call, CalledProcessError, PIPE
3+
import sys
34

45
# some adapted from
56
# https://github.com/mtorromeo/xdg-utils/blob/master/scripts/xdg-screensaver.in#L540
@@ -91,6 +92,19 @@ def matescreensaver_is_locked():
9192
return bool(dbus_iface.GetActive())
9293

9394

95+
def macos_detect():
96+
return sys.platform == 'darwin'
97+
98+
99+
def macos_is_locked():
100+
# Strictly-speaking, this detects whether or not the screensaver is running. The screensaver
101+
# may or may not be locked.
102+
cmd = '''tell application "System Events"
103+
get running of screen saver preferences
104+
end tell'''
105+
return check_output([ 'osascript', '-e', cmd ]) == b'true\n'
106+
107+
94108
def is_locked():
95109
if xscreensaver_detect():
96110
return xscreensaver_is_locked()
@@ -100,4 +114,6 @@ def is_locked():
100114
return gnomescreensaver_is_locked()
101115
if matescreensaver_detect():
102116
return matescreensaver_is_locked()
117+
if macos_detect():
118+
return macos_is_locked()
103119
return True

0 commit comments

Comments
 (0)