diff --git a/bumblebee/modules/caffeine.py b/bumblebee/modules/caffeine.py new file mode 100644 index 0000000..bf67b2b --- /dev/null +++ b/bumblebee/modules/caffeine.py @@ -0,0 +1,40 @@ +import subprocess +import shlex + +import bumblebee.module + +def description(): + return "Enable/disable auto screen lock." + +class Module(bumblebee.module.Module): + def __init__(self, output, config, alias): + super(Module, self).__init__(output, config, alias) + self._activated = 0 + # output.add_callback(module="caffeine.activate", button=1, cmd='notify-send "Consuming caffeine"; xset s off') + # output.add_callback(module="caffeine.deactivate", button=1, cmd='notify-send "Out of coffee"; xset s 600 600') + output.add_callback(module="caffeine.activate", button=1, cmd='xset s off') + output.add_callback(module="caffeine.deactivate", button=1, cmd='xset s 600 600') + + def widgets(self): + output = subprocess.check_output(shlex.split("xset q")) + xset_out = output.decode().split("\n") + for line in xset_out: + if line.startswith(" timeout"): + timeout = int(line.split(" ")[4]) + if timeout == 0: + self._activated = 1; + else: + self._activated = 0; + break + + if self._activated == 0: + return bumblebee.output.Widget(self, "", instance="caffeine.activate") + elif self._activated == 1: + return bumblebee.output.Widget(self, "", instance="caffeine.deactivate") + + def state(self, widget): + if self._activated == 1: + return "activated" + else: + return "deactivated" +