File takeabreak-locker-dbus.patch of Package takeabreak
--- a/code/takeabreak_run
+++ b/code/takeabreak_run
@@ -13,6 +13,7 @@ should have received a copy of the GNU G
program. If not, see <http://www.gnu.org/licenses/>.
"""
+from gi.repository import Gio
import subprocess
import sys
import time
@@ -60,6 +61,19 @@ def idle_sleep():
break
else:
curr_idle1 = curr_idle2
+
+def screensaver_command(method, value):
+ names = ["org.freedesktop.ScreenSaver",
+ "org.gnome.ScreenSaver",
+ "org.mate.ScreenSaver"]
+ paths = ["/org/freedesktop/ScreenSaver",
+ "/org/gnome/ScreenSaver",
+ "/org/mate/ScreenSaver"]
+
+ bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
+ for i in range(len(names)):
+ proxy = Gio.DBusProxy.new_sync(bus, 0, None, names[i], paths[i], names[i], None)
+ proxy.call(method, value, 0, 0, None, None)
def take_a_break():
get = subprocess.check_output(["xrandr"]).decode("utf-8").split()
@@ -78,18 +92,13 @@ def take_a_break():
"xrandr", "--output", scr, "--brightness", "0"
])
elif mode == "lock":
- subprocess.Popen([
- "gnome-screensaver-command", "-l"
- ])
+ screensaver_command("Lock", None)
elif mode == "screensaver":
- subprocess.Popen([
- "gnome-screensaver-command", "-al"
- ])
+ screensaver_command("SetActive", GLib.Variant("(b)", (True,)))
+ screensaver_command("Lock", None)
time.sleep(sleeptime)
for scr in screens:
- subprocess.Popen([
- "gnome-screensaver-command", "-d"
- ])
+ screensaver_command("SetActive", GLib.Variant("(b)", (False,)))
time.sleep(2)
if mode == "rotate":
subprocess.call([