polybar: display dunst state for notifications

This commit is contained in:
Vincent Bernat 2021-07-14 17:14:52 +02:00
parent 80c4605916
commit 295e13f1c4
2 changed files with 50 additions and 2 deletions

View file

@ -62,6 +62,8 @@ icons = {
"wifi-medium": icon(2, ""),
"wifi-high": icon(2, ""),
"wired": icon(2, ""),
"notifications-enabled": icon(2, ""),
"notifications-disabled": icon(2, ""),
}
application_icons_nomatch = icon(2, "")
application_icons_alone = {application_icons[k] for k in {"vbeterm"}}
@ -550,6 +552,46 @@ async def bluetooth_notifications(
)
@on(
DBusSignal(
system=False,
path="/org/freedesktop/Notifications",
interface="org.freedesktop.DBus.Properties",
member="PropertiesChanged",
signature="sa{sv}as",
)
)
async def dunst_status_update(
i3, event, path, interface, changed, invalid
):
"""Update notification status in polybar."""
if interface != "org.dunstproject.cmd0":
return
if "paused" not in changed:
return
polybar(
"dunst",
icons[
changed["paused"][1]
and "notifications-disabled"
or "notifications-enabled"
],
)
@on(StartEvent)
async def dunst_status_check(i3, event):
"""Display notification status for polybar."""
conn = i3.session_bus["org.freedesktop.Notifications"]
obj = conn["/org/freedesktop/Notifications"]
dunst = await obj.get_async_interface("org.dunstproject.cmd0")
paused = await dunst.paused
polybar(
"dunst",
icons[paused and "notifications-disabled" or "notifications-enabled"],
)
@on(
DBusSignal(
system=True,