From 02465ea0c2e54a68654ad4fd26981286581a3e75 Mon Sep 17 00:00:00 2001 From: James Baumgarten Date: Mon, 23 Nov 2020 17:31:12 -0800 Subject: [PATCH] add rofication module --- .../modules/contrib/rofication.py | 48 +++++++++++++++++++ themes/icons/awesome-fonts.json | 3 ++ 2 files changed, 51 insertions(+) create mode 100644 bumblebee_status/modules/contrib/rofication.py diff --git a/bumblebee_status/modules/contrib/rofication.py b/bumblebee_status/modules/contrib/rofication.py new file mode 100644 index 0000000..79e6afd --- /dev/null +++ b/bumblebee_status/modules/contrib/rofication.py @@ -0,0 +1,48 @@ +"""Rofication indicator + + https://github.com/DaveDavenport/Rofication + simple module to show an icon + the number of notifications stored in rofication + module will have normal highlighting if there are zero notifications, + "warning" highlighting if there are nonzero notifications, + "critical" highlighting if there are any critical notifications +""" + +import core.module +import core.widget +import core.decorators + +import sys +import socket + +class Module(core.module.Module): + @core.decorators.every(seconds=5) + def __init__(self, config, theme): + super().__init__(config, theme, core.widget.Widget(self.full_text)) + self.__critical = False + self.__numnotifications = 0 + + + def full_text(self, widgets): + with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as client: + client.connect("/tmp/rofi_notification_daemon") + # below code will fetch two numbers in a list, e.g. ['22', '1'] + # first is total number of notifications, second is number of critical notifications + client.sendall(bytes("num", "utf-8")) + val = client.recv(512) + val = val.decode("utf-8") + l = val.split('\n',2) + self.__numnotifications = int(l[0]) + self.__critical = bool(int(l[1])) + return self.__numnotifications + + def state(self, widget): + # rofication doesn't really support the idea of seen vs unseen notifications + # marking a message as "seen" actually just sets its urgency to normal + # so, doing highlighting if any notifications are present + if self.__critical: + return ["critical"] + elif self.__numnotifications: + return ["warning"] + return [] + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index 2d05dc6..9f14da9 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -262,6 +262,9 @@ "unmuted": { "prefix": "" }, "unknown": { "prefix": "" } }, + "rofication": { + "prefix": "" + }, "twmn": { "muted": { "prefix": "" }, "unmuted": { "prefix": "" }