Merge pull request #705 from cristianmiranda/dunstctl

[modules/dunstctl]: Toggle dunst v1.5.0+ notifications using dunstctl
This commit is contained in:
tobi-wan-kenobi 2020-09-06 07:10:58 +02:00 committed by GitHub
commit f180c7cc58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 0 deletions

View file

@ -0,0 +1,42 @@
# pylint: disable=C0111,R0903
"""
Toggle dunst notifications using dunstctl.
When notifications are paused using this module dunst doesn't get killed and you'll keep getting notifications on the background that will be displayed when unpausing.
This is specially useful if you're using dunst's scripting (https://wiki.archlinux.org/index.php/Dunst#Scripting), which requires dunst to be running. Scripts will be executed when dunst gets unpaused.
Requires:
* dunst v1.5.0+
contributed by `cristianmiranda <https://github.com/cristianmiranda>`_ - many thanks!
"""
import core.module
import core.widget
import core.input
import util.cli
class Module(core.module.Module):
def __init__(self, config, theme):
super().__init__(config, theme, core.widget.Widget(""))
self._paused = self.__isPaused()
core.input.register(self, button=core.input.LEFT_MOUSE, cmd=self.toggle_status)
def toggle_status(self, event):
self._paused = self.__isPaused()
if self._paused:
util.cli.execute("dunstctl set-paused false")
else:
util.cli.execute("dunstctl set-paused true")
self._paused = not self._paused
def __isPaused(self):
return util.cli.execute("dunstctl is-paused").strip() == "true"
def state(self, widget):
if self._paused:
return ["muted", "warning"]
return ["unmuted"]

View file

@ -257,6 +257,10 @@
"muted": { "prefix": "" }, "muted": { "prefix": "" },
"unmuted": { "prefix": "" } "unmuted": { "prefix": "" }
}, },
"dunstctl": {
"muted": { "prefix": "" },
"unmuted": { "prefix": "" }
},
"twmn": { "twmn": {
"muted": { "prefix": "" }, "muted": { "prefix": "" },
"unmuted": { "prefix": "" } "unmuted": { "prefix": "" }