diff --git a/bumblebee_status/modules/contrib/aur-update.py b/bumblebee_status/modules/contrib/aur-update.py new file mode 100644 index 0000000..f1b85ea --- /dev/null +++ b/bumblebee_status/modules/contrib/aur-update.py @@ -0,0 +1,57 @@ +"""Check updates for AUR. + +Requires the following executable: + * yay (https://github.com/Jguer/yay) + +contributed by `ishaanbhimwal `_ - many thanks! +""" + +import logging + +import core.module +import core.widget +import core.decorators + +import util.cli + + +class Module(core.module.Module): + @core.decorators.every(minutes=60) + def __init__(self, config, theme): + super().__init__(config, theme, core.widget.Widget(self.utilization)) + self.background = True + self.__packages = 0 + self.__error = False + + @property + def __format(self): + return self.parameter("format", "Update AUR: {}") + + def utilization(self, widget): + return self.__format.format(self.__packages) + + def hidden(self): + return self.__packages == 0 and not self.__error + + def update(self): + self.__error = False + code, result = util.cli.execute( + "yay -Qum", ignore_errors=True, return_exitcode=True + ) + + if code == 0: + if result == "": + self.__packages = 0 + else: + self.__packages = len(result.strip().split("\n")) + else: + self.__error = True + logging.error("aur-update exited with {}: {}".format(code, result)) + + def state(self, widget): + if self.__error: + return "warning" + return self.threshold_state(self.__packages, 1, 100) + + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/bumblebee_status/modules/contrib/blugon.py b/bumblebee_status/modules/contrib/blugon.py new file mode 100644 index 0000000..4fa0079 --- /dev/null +++ b/bumblebee_status/modules/contrib/blugon.py @@ -0,0 +1,97 @@ +"""Displays temperature of blugon and Controls it. + +Use wheel up and down to change temperature, middle click to toggle and right click to reset temprature. + +Default Values: + * Minimum temperature: 1000 (red) + * Maximum temperature: 20000 (blue) + * Default temperature: 6600 + +Requires the following executable: + * blugon + +Parameters: + * blugon.step: The amount of increase/decrease on scroll (default: 200) + +contributed by `DTan13 ` +""" + +import core.module +import core.widget + +import util.cli +import util.format + +import os + + +class Module(core.module.Module): + def __init__(self, config, theme): + super().__init__(config, theme, core.widget.Widget(self.full_text)) + self.__state = True + self.__default = 6600 + self.__step = ( + util.format.asint(self.parameter("step")) if self.parameter("step") else 200 + ) + self.__max, self.__min = 20000, 1000 + + file = open(os.path.expanduser("~/.config/blugon/current")) + self.__current = int(float(file.read())) + + events = [ + { + "type": "toggle", + "action": self.toggle, + "button": core.input.MIDDLE_MOUSE, + }, + { + "type": "blue", + "action": self.blue, + "button": core.input.WHEEL_UP, + }, + { + "type": "red", + "action": self.red, + "button": core.input.WHEEL_DOWN, + }, + { + "type": "reset", + "action": self.reset, + "button": core.input.RIGHT_MOUSE, + }, + ] + + for event in events: + core.input.register(self, button=event["button"], cmd=event["action"]) + + def set_temp(self): + temp = self.__current if self.__state else self.__default + util.cli.execute("blugon --setcurrent={}".format(temp)) + + def full_text(self, widget): + return self.__current if self.__state else self.__default + + def state(self, widget): + if not self.__state: + return ["critical"] + + def toggle(self, event): + self.__state = not self.__state + self.set_temp() + + def reset(self, event): + self.__current = 6600 + self.set_temp() + + def blue(self, event): + if self.__state and (self.__current < self.__max): + self.__current += self.__step + self.set_temp() + + def red(self, event): + if self.__state and (self.__current > self.__min): + self.__current -= self.__step + self.set_temp() + + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/bumblebee_status/modules/contrib/mpd.py b/bumblebee_status/modules/contrib/mpd.py index 3efffff..92568d1 100644 --- a/bumblebee_status/modules/contrib/mpd.py +++ b/bumblebee_status/modules/contrib/mpd.py @@ -94,6 +94,12 @@ class Module(core.module.Module): "cmd": "mpc toggle" + self._hostcmd, } widget.full_text(self.description) + elif widget_name == "mpd.toggle": + widget_map[widget] = { + "button": core.input.LEFT_MOUSE, + "cmd": "mpc toggle" + self._hostcmd, + } + widget.full_text(self.toggle) elif widget_name == "mpd.next": widget_map[widget] = { "button": core.input.LEFT_MOUSE, @@ -127,6 +133,9 @@ class Module(core.module.Module): def description(self, widget): return string.Formatter().vformat(self._fmt, (), self._tags) + def toggle(self, widget): + return str(util.cli.execute("mpc status %currenttime%/%totaltime%", ignore_errors=True)).strip() + def update(self): self._load_song() diff --git a/bumblebee_status/modules/contrib/pactl.py b/bumblebee_status/modules/contrib/pactl.py deleted file mode 100644 index cd62c9a..0000000 --- a/bumblebee_status/modules/contrib/pactl.py +++ /dev/null @@ -1,141 +0,0 @@ -# pylint: disable=C0111,R0903 - -""" Displays the current default sink. - - Left click opens a popup menu that lists all available sinks and allows to change the default sink. - - Per default, this module uses the sink names returned by "pactl list sinks short" - - sample output of "pactl list sinks short": - - 2 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED - 3 alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDE - - As "alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo" is not a particularly nice name, its possible to map the name to more a - user friendly name. e.g to map "alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo" to the name "Headset", add the following - bumblebee-status config entry: pactl.alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo=Headset - - The module also allows to specify individual (unicode) icons for all the sinks. e.g in order to use the icon 🎧 for the - "alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo" sink, add the following bumblebee-status config entry: - pactl.icon.alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo=🎧 - - Requirements: - * pulseaudio - * pactl -""" - -import logging -import functools - -import core.module -import core.widget -import core.input - -import util.cli -import util.popup - - -class Sink(object): - def __init__(self, id, internal_name, friendly_name, icon): - super().__init__() - self.__id = id - self.__internal_name = internal_name - self.__friendly_name = friendly_name - self.__icon = icon - - @property - def id(self): - return self.__id - - @property - def internal_name(self): - return self.__internal_name - - @property - def friendly_name(self): - return self.__friendly_name - - @property - def icon(self): - return self.__icon - - @property - def display_name(self): - display_name = ( - self.__icon + " " + self.__friendly_name - if self.__icon != "" - else self.__friendly_name - ) - return display_name - - -class Module(core.module.Module): - def __init__(self, config, theme): - super().__init__(config, theme, core.widget.Widget(self.default_sink)) - - self.__default_sink = None - - res = util.cli.execute("pactl list sinks short") - lines = res.splitlines() - - self.__sinks = [] - for line in lines: - info = line.split("\t") - try: - friendly_name = self.parameter(info[1], info[1]) - icon = self.parameter("icon." + info[1], "") - self.__sinks.append(Sink(info[0], info[1], friendly_name, icon)) - except: - logging.exception("Couldn't parse sink") - pass - - core.input.register(self, button=core.input.LEFT_MOUSE, cmd=self.popup) - - def __sink(self, internal_sink_name): - for sink in self.__sinks: - if internal_sink_name == sink.internal_name: - return sink - return None - - def update(self): - try: - res = util.cli.execute("pactl info") - lines = res.splitlines() - self.__default_sink = None - for line in lines: - if not line.startswith("Default Sink:"): - continue - internal_sink_name = line.replace("Default Sink: ", "") - self.__default_sink = self.__sink(internal_sink_name) - break - except Exception as e: - logging.exception("Could not get pactl info") - self.__default_sink = None - - def default_sink(self, widget): - if self.__default_sink is None: - return "unknown" - return self.__default_sink.display_name - - def __on_sink_selected(self, sink): - try: - util.cli.execute("pactl set-default-sink {}".format(sink.id)) - self.__default_sink = sink - except Exception as e: - logging.exception("Couldn't set default sink") - - def popup(self, widget): - menu = util.popup.menu() - - for sink in self.__sinks: - menu.add_menuitem( - sink.friendly_name, - callback=functools.partial(self.__on_sink_selected, sink), - ) - menu.show(widget) - - def state(self, widget): - return [] - - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/bumblebee_status/modules/contrib/persian_date.py b/bumblebee_status/modules/contrib/persian_date.py index 6e3eded..9873e1a 100644 --- a/bumblebee_status/modules/contrib/persian_date.py +++ b/bumblebee_status/modules/contrib/persian_date.py @@ -10,36 +10,22 @@ Parameters: * datetime.locale: locale to use. default: "fa_IR" """ -from __future__ import absolute_import import jdatetime -import locale -import core.module -import core.widget -import core.input +import core.decorators +from modules.core.datetime import Module as dtmodule -class Module(core.module.Module): +class Module(dtmodule): + @core.decorators.every(minutes=1) def __init__(self, config, theme): - super().__init__(config, theme, core.widget.Widget(self.full_text)) - - l = ("fa_IR", "UTF-8") - lcl = self.parameter("locale", ".".join(l)) - try: - locale.setlocale(locale.LC_ALL, lcl.split(".")) - except Exception as e: - locale.setlocale(locale.LC_ALL, ("fa_IR", "UTF-8")) + super().__init__(config, theme, dtlibrary=jdatetime) def default_format(self): return "%A %d %B" - def full_text(self, widget): - enc = locale.getpreferredencoding() - fmt = self.parameter("format", self.default_format()) - retval = jdatetime.datetime.now().strftime(fmt) - if hasattr(retval, "decode"): - return retval.decode(enc) - return retval + def default_locale(self): + return ("fa_IR", "UTF-8") # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/bumblebee_status/modules/contrib/title.py b/bumblebee_status/modules/contrib/title.py index 33af47a..055369e 100644 --- a/bumblebee_status/modules/contrib/title.py +++ b/bumblebee_status/modules/contrib/title.py @@ -9,6 +9,7 @@ Parameters: * title.max : Maximum character length for title before truncating. Defaults to 64. * title.placeholder : Placeholder text to be placed if title was truncated. Defaults to '...'. * title.scroll : Boolean flag for scrolling title. Defaults to False + * title.short : Boolean flag for short title. Defaults to False contributed by `UltimatePancake `_ - many thanks! @@ -35,6 +36,7 @@ class Module(core.module.Module): # parsing of parameters self.__scroll = util.format.asbool(self.parameter("scroll", False)) + self.__short = util.format.asbool(self.parameter("short", False)) self.__max = int(self.parameter("max", 64)) self.__placeholder = self.parameter("placeholder", "...") self.__title = "" @@ -66,7 +68,9 @@ class Module(core.module.Module): def __pollTitle(self): """Updating current title.""" try: - self.__full_title = self.__i3.get_tree().find_focused().name + focused = self.__i3.get_tree().find_focused().name + self.__full_title = focused.split( + "-")[-1].strip() if self.__short else focused except: self.__full_title = no_title if self.__full_title is None: diff --git a/bumblebee_status/modules/core/datetime.py b/bumblebee_status/modules/core/datetime.py index febb5fb..0a15c70 100644 --- a/bumblebee_status/modules/core/datetime.py +++ b/bumblebee_status/modules/core/datetime.py @@ -17,26 +17,33 @@ import core.input class Module(core.module.Module): - def __init__(self, config, theme): + def __init__(self, config, theme, dtlibrary=None): super().__init__(config, theme, core.widget.Widget(self.full_text)) core.input.register(self, button=core.input.LEFT_MOUSE, cmd="calendar") - l = locale.getdefaultlocale() + self.dtlibrary = dtlibrary or datetime + + def set_locale(self): + l = self.default_locale() if not l or l == (None, None): l = ("en_US", "UTF-8") lcl = self.parameter("locale", ".".join(l)) try: - locale.setlocale(locale.LC_TIME, lcl.split(".")) + locale.setlocale(locale.LC_ALL, lcl.split(".")) except Exception as e: - locale.setlocale(locale.LC_TIME, ("en_US", "UTF-8")) + locale.setlocale(locale.LC_ALL, ("en_US", "UTF-8")) def default_format(self): return "%x %X" + def default_locale(self): + return locale.getdefaultlocale() + def full_text(self, widget): + self.set_locale() enc = locale.getpreferredencoding() fmt = self.parameter("format", self.default_format()) - retval = datetime.datetime.now().strftime(fmt) + retval = self.dtlibrary.datetime.now().strftime(fmt) if hasattr(retval, "decode"): return retval.decode(enc) return retval diff --git a/docs/modules.rst b/docs/modules.rst index 413f6cf..ad4a307 100644 --- a/docs/modules.rst +++ b/docs/modules.rst @@ -401,6 +401,20 @@ Requires the following executable: contributed by `lucassouto `_ - many thanks! +.. image:: ../screenshots/arch-update.png + +aur-update +~~~~~~~~~~~ + +Check updates for AUR. + +Requires the following executable: + * yay (https://github.com/Jguer/yay) + +contributed by `ishaanbhimwal `_ - many thanks! + +.. image:: ../screenshots/aur-update.png + battery ~~~~~~~ diff --git a/screenshots/arch-update.png b/screenshots/arch-update.png new file mode 100644 index 0000000..45613fc Binary files /dev/null and b/screenshots/arch-update.png differ diff --git a/screenshots/aur-update.png b/screenshots/aur-update.png new file mode 100644 index 0000000..dfe50de Binary files /dev/null and b/screenshots/aur-update.png differ diff --git a/tests/modules/contrib/test_blugon.py b/tests/modules/contrib/test_blugon.py new file mode 100644 index 0000000..6c9dd9b --- /dev/null +++ b/tests/modules/contrib/test_blugon.py @@ -0,0 +1,2 @@ +def test_load_module(): + __import__("modules.contrib.zpool") diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index f85dfd8..3f971d7 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -2,187 +2,489 @@ "defaults": { "separator": "", "padding": " ", - "unknown": { "prefix": "" }, + "unknown": { + "prefix": "" + }, "separator-block-width": 0, "default-separators": false }, - "date": { "prefix": "" }, - "persian_date": { "prefix": "" }, - "time": { "prefix": "" }, - "datetime": { "prefix": "" }, - "datetz": { "prefix": "" }, - "timetz": { "prefix": "" }, - "datetimetz": { "prefix": "" }, - "memory": { "prefix": "" }, - "cpu": { "prefix": "" }, - "cpu2": { - "freq": { "prefix": "" }, - "load": { "prefix": "" }, - "loads": { "prefix": "" }, - "temp": { "prefix": "" }, - "fan": { "prefix": "" } + "date": { + "prefix": "" + }, + "persian_date": { + "prefix": "" + }, + "time": { + "prefix": "" + }, + "datetime": { + "prefix": "" + }, + "datetz": { + "prefix": "" + }, + "timetz": { + "prefix": "" + }, + "datetimetz": { + "prefix": "" + }, + "memory": { + "prefix": "" + }, + "cpu": { + "prefix": "" + }, + "cpu2": { + "freq": { + "prefix": "" + }, + "load": { + "prefix": "" + }, + "loads": { + "prefix": "" + }, + "temp": { + "prefix": "" + }, + "fan": { + "prefix": "" + } + }, + "disk": { + "prefix": "" + }, + "smartstatus": { + "prefix": "" + }, + "dnf": { + "prefix": "" + }, + "apt": { + "prefix": "" + }, + "pacman": { + "prefix": "" + }, + "brightness": { + "prefix": "" + }, + "load": { + "prefix": "" + }, + "layout": { + "prefix": "" + }, + "layout-xkb": { + "prefix": "" + }, + "layout-xkbswitch": { + "prefix": "" }, - "disk": { "prefix": "" }, - "smartstatus": { "prefix": "" }, - "dnf": { "prefix": "" }, - "apt": { "prefix": "" }, - "pacman": { "prefix": "" }, - "brightness": { "prefix": "" }, - "load": { "prefix": "" }, - "layout": { "prefix": "" }, - "layout-xkb": { "prefix": "" }, - "layout-xkbswitch": { "prefix": "" }, "notmuch_count": { - "empty": { "prefix": "\uf0e0" }, - "items": { "prefix": "\uf0e0" } + "empty": { + "prefix": "\uf0e0" + }, + "items": { + "prefix": "\uf0e0" + } }, "portage_status": { - "idle": { "prefix": "" }, - "active": { "prefix": "" } + "idle": { + "prefix": "" + }, + "active": { + "prefix": "" + } }, "todo": { - "empty": { "prefix": "" }, - "items": { "prefix": "" }, - "uptime": { "prefix": "" } + "empty": { + "prefix": "" + }, + "items": { + "prefix": "" + }, + "uptime": { + "prefix": "" + } }, "zpool": { - "poolread": { "prefix": "→ " }, - "poolwrite": { "prefix": "← " }, - "ONLINE": { "prefix": "" }, - "FAULTED": { "prefix": "!" }, - "DEGRADED": { "prefix": "!" } + "poolread": { + "prefix": "→ " + }, + "poolwrite": { + "prefix": "← " + }, + "ONLINE": { + "prefix": "" + }, + "FAULTED": { + "prefix": "!" + }, + "DEGRADED": { + "prefix": "!" + } }, "cmus": { - "playing": { "prefix": "" }, - "paused": { "prefix": "" }, - "stopped": { "prefix": "" }, - "prev": { "prefix": "" }, - "next": { "prefix": "" }, - "shuffle-on": { "prefix": "" }, - "shuffle-off": { "prefix": "" }, - "repeat-on": { "prefix": "" }, - "repeat-off": { "prefix": "" } + "playing": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "stopped": { + "prefix": "" + }, + "prev": { + "prefix": "" + }, + "next": { + "prefix": "" + }, + "shuffle-on": { + "prefix": "" + }, + "shuffle-off": { + "prefix": "" + }, + "repeat-on": { + "prefix": "" + }, + "repeat-off": { + "prefix": "" + } }, "gpmdp": { - "playing": { "prefix": "" }, - "paused": { "prefix": "" }, - "stopped": { "prefix": "" }, - "prev": { "prefix": "" }, - "next": { "prefix": "" } + "playing": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "stopped": { + "prefix": "" + }, + "prev": { + "prefix": "" + }, + "next": { + "prefix": "" + } }, "playerctl": { - "playing": { "prefix": "" }, - "paused": { "prefix": "" }, - "stopped": { "prefix": "" }, - "prev": { "prefix": "" }, - "next": { "prefix": "" } + "playing": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "stopped": { + "prefix": "" + }, + "prev": { + "prefix": "" + }, + "next": { + "prefix": "" + } }, "pasink": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + } }, "amixer": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + } }, "pasource": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + } }, "kernel": { "prefix": "\uf17c" }, "nic": { - "wireless-up": { "prefix": "" }, - "wireless-down": { "prefix": "" }, - "wired-up": { "prefix": "" }, - "wired-down": { "prefix": "" }, - "tunnel-up": { "prefix": "" }, - "tunnel-down": { "prefix": "" } + "wireless-up": { + "prefix": "" + }, + "wireless-down": { + "prefix": "" + }, + "wired-up": { + "prefix": "" + }, + "wired-down": { + "prefix": "" + }, + "tunnel-up": { + "prefix": "" + }, + "tunnel-down": { + "prefix": "" + } }, "bluetooth": { - "ON": { "prefix": "" }, - "OFF": { "prefix": "" }, - "?": { "prefix": "" } + "ON": { + "prefix": "" + }, + "OFF": { + "prefix": "" + }, + "?": { + "prefix": "" + } }, "bluetooth2": { - "ON": { "prefix": "" }, - "warning": { "prefix": "" }, - "critical": { "prefix": "" } + "ON": { + "prefix": "" + }, + "warning": { + "prefix": "" + }, + "critical": { + "prefix": "" + } }, "battery-upower": { - "charged": { "prefix": "", "suffix": "" }, - "AC": { "suffix": "" }, - "charging": { - "prefix": ["", "", "", "", ""], + "charged": { + "prefix": "", "suffix": "" }, - "discharging-10": { "prefix": "", "suffix": "" }, - "discharging-25": { "prefix": "", "suffix": "" }, - "discharging-50": { "prefix": "", "suffix": "" }, - "discharging-80": { "prefix": "", "suffix": "" }, - "discharging-100": { "prefix": "", "suffix": "" }, - "unlimited": { "prefix": "", "suffix": "" }, - "estimate": { "prefix": "" }, - "unknown-10": { "prefix": "", "suffix": "" }, - "unknown-25": { "prefix": "", "suffix": "" }, - "unknown-50": { "prefix": "", "suffix": "" }, - "unknown-80": { "prefix": "", "suffix": "" }, - "unknown-100": { "prefix": "", "suffix": "" } + "AC": { + "suffix": "" + }, + "charging": { + "prefix": [ + "", + "", + "", + "", + "" + ], + "suffix": "" + }, + "discharging-10": { + "prefix": "", + "suffix": "" + }, + "discharging-25": { + "prefix": "", + "suffix": "" + }, + "discharging-50": { + "prefix": "", + "suffix": "" + }, + "discharging-80": { + "prefix": "", + "suffix": "" + }, + "discharging-100": { + "prefix": "", + "suffix": "" + }, + "unlimited": { + "prefix": "", + "suffix": "" + }, + "estimate": { + "prefix": "" + }, + "unknown-10": { + "prefix": "", + "suffix": "" + }, + "unknown-25": { + "prefix": "", + "suffix": "" + }, + "unknown-50": { + "prefix": "", + "suffix": "" + }, + "unknown-80": { + "prefix": "", + "suffix": "" + }, + "unknown-100": { + "prefix": "", + "suffix": "" + } }, "battery": { - "charged": { "prefix": "", "suffix": "" }, - "AC": { "suffix": "" }, - "charging": { - "prefix": ["", "", "", "", ""], + "charged": { + "prefix": "", "suffix": "" }, - "discharging-10": { "prefix": "", "suffix": "" }, - "discharging-25": { "prefix": "", "suffix": "" }, - "discharging-50": { "prefix": "", "suffix": "" }, - "discharging-80": { "prefix": "", "suffix": "" }, - "discharging-100": { "prefix": "", "suffix": "" }, - "unlimited": { "prefix": "", "suffix": "" }, - "estimate": { "prefix": "" }, - "unknown-10": { "prefix": "", "suffix": "" }, - "unknown-25": { "prefix": "", "suffix": "" }, - "unknown-50": { "prefix": "", "suffix": "" }, - "unknown-80": { "prefix": "", "suffix": "" }, - "unknown-100": { "prefix": "", "suffix": "" } + "AC": { + "suffix": "" + }, + "charging": { + "prefix": [ + "", + "", + "", + "", + "" + ], + "suffix": "" + }, + "discharging-10": { + "prefix": "", + "suffix": "" + }, + "discharging-25": { + "prefix": "", + "suffix": "" + }, + "discharging-50": { + "prefix": "", + "suffix": "" + }, + "discharging-80": { + "prefix": "", + "suffix": "" + }, + "discharging-100": { + "prefix": "", + "suffix": "" + }, + "unlimited": { + "prefix": "", + "suffix": "" + }, + "estimate": { + "prefix": "" + }, + "unknown-10": { + "prefix": "", + "suffix": "" + }, + "unknown-25": { + "prefix": "", + "suffix": "" + }, + "unknown-50": { + "prefix": "", + "suffix": "" + }, + "unknown-80": { + "prefix": "", + "suffix": "" + }, + "unknown-100": { + "prefix": "", + "suffix": "" + } }, "battery_all": { - "charged": { "prefix": "", "suffix": "" }, - "AC": { "suffix": "" }, - "charging": { - "prefix": ["", "", "", "", ""], + "charged": { + "prefix": "", "suffix": "" }, - "discharging-10": { "prefix": "", "suffix": "" }, - "discharging-25": { "prefix": "", "suffix": "" }, - "discharging-50": { "prefix": "", "suffix": "" }, - "discharging-80": { "prefix": "", "suffix": "" }, - "discharging-100": { "prefix": "", "suffix": "" }, - "unlimited": { "prefix": "", "suffix": "" }, - "estimate": { "prefix": "" }, - "unknown-10": { "prefix": "", "suffix": "" }, - "unknown-25": { "prefix": "", "suffix": "" }, - "unknown-50": { "prefix": "", "suffix": "" }, - "unknown-80": { "prefix": "", "suffix": "" }, - "unknown-100": { "prefix": "", "suffix": "" } + "AC": { + "suffix": "" + }, + "charging": { + "prefix": [ + "", + "", + "", + "", + "" + ], + "suffix": "" + }, + "discharging-10": { + "prefix": "", + "suffix": "" + }, + "discharging-25": { + "prefix": "", + "suffix": "" + }, + "discharging-50": { + "prefix": "", + "suffix": "" + }, + "discharging-80": { + "prefix": "", + "suffix": "" + }, + "discharging-100": { + "prefix": "", + "suffix": "" + }, + "unlimited": { + "prefix": "", + "suffix": "" + }, + "estimate": { + "prefix": "" + }, + "unknown-10": { + "prefix": "", + "suffix": "" + }, + "unknown-25": { + "prefix": "", + "suffix": "" + }, + "unknown-50": { + "prefix": "", + "suffix": "" + }, + "unknown-80": { + "prefix": "", + "suffix": "" + }, + "unknown-100": { + "prefix": "", + "suffix": "" + } }, "caffeine": { - "activated": { "prefix": " " }, - "deactivated": { "prefix": " " } + "activated": { + "prefix": " " + }, + "deactivated": { + "prefix": " " + } }, "xrandr": { - "on": { "prefix": " " }, - "off": { "prefix": " " }, - "refresh": { "prefix": "" } + "on": { + "prefix": " " + }, + "off": { + "prefix": " " + }, + "refresh": { + "prefix": "" + } }, "redshift": { - "day": { "prefix": "" }, - "night": { "prefix": "" }, - "transition": { "prefix": "" } + "day": { + "prefix": "" + }, + "night": { + "prefix": "" + }, + "transition": { + "prefix": "" + } }, "docker_ps": { "prefix": "" @@ -191,32 +493,67 @@ "prefix": "" }, "sensors2": { - "temp": { "prefix": "" }, - "fan": { "prefix": "" }, - "cpu": { "prefix": "" } + "temp": { + "prefix": "" + }, + "fan": { + "prefix": "" + }, + "cpu": { + "prefix": "" + } }, "traffic": { - "rx": { "prefix": "" }, - "tx": { "prefix": "" } + "rx": { + "prefix": "" + }, + "tx": { + "prefix": "" + } }, "network_traffic": { - "rx": { "prefix": "" }, - "tx": { "prefix": "" } + "rx": { + "prefix": "" + }, + "tx": { + "prefix": "" + } }, "mpd": { - "playing": { "prefix": "" }, - "paused": { "prefix": "" }, - "stopped": { "prefix": "" }, - "prev": { "prefix": "" }, - "next": { "prefix": "" }, - "shuffle-on": { "prefix": "" }, - "shuffle-off": { "prefix": "" }, - "repeat-on": { "prefix": "" }, - "repeat-off": { "prefix": "" } + "playing": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "stopped": { + "prefix": "" + }, + "prev": { + "prefix": "" + }, + "next": { + "prefix": "" + }, + "shuffle-on": { + "prefix": "" + }, + "shuffle-off": { + "prefix": "" + }, + "repeat-on": { + "prefix": "" + }, + "repeat-off": { + "prefix": "" + } }, "arch-update": { "prefix": " " }, + "aur-update": { + "prefix": " " + }, "github": { "prefix": "  " }, @@ -224,21 +561,41 @@ "prefix": "  " }, "spotify": { - "song": { "prefix": "" }, - "playing": { "prefix": "" }, - "paused": { "prefix": "" }, - "prev": { "prefix": "" }, - "next": { "prefix": "" } + "song": { + "prefix": "" + }, + "playing": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "prev": { + "prefix": "" + }, + "next": { + "prefix": "" + } }, "publicip": { "prefix": "  " }, "weather": { - "clouds": { "prefix": "" }, - "rain": { "prefix": "" }, - "snow": { "prefix": "" }, - "clear": { "prefix": "" }, - "thunder": { "prefix": "" } + "clouds": { + "prefix": "" + }, + "rain": { + "prefix": "" + }, + "snow": { + "prefix": "" + }, + "clear": { + "prefix": "" + }, + "thunder": { + "prefix": "" + } }, "taskwarrior": { "prefix": "  " @@ -249,30 +606,56 @@ } }, "git": { - "main": { "prefix": "" }, - "new": { "prefix": "" }, - "modified": { "prefix": "" }, - "deleted": { "prefix": "" } + "main": { + "prefix": "" + }, + "new": { + "prefix": "" + }, + "modified": { + "prefix": "" + }, + "deleted": { + "prefix": "" + } }, "dunst": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + } }, "dunstctl": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" }, - "unknown": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + }, + "unknown": { + "prefix": "" + } }, "rofication": { - "prefix": "" + "prefix": "" }, "twmn": { - "muted": { "prefix": "" }, - "unmuted": { "prefix": "" } + "muted": { + "prefix": "" + }, + "unmuted": { + "prefix": "" + } }, "pihole": { - "enabled": { "prefix": "" }, - "disabled": { "prefix": "" } + "enabled": { + "prefix": "" + }, + "disabled": { + "prefix": "" + } }, "vpn": { "prefix": "" @@ -287,12 +670,22 @@ "prefix": "" }, "pomodoro": { - "off": { "prefix": "" }, - "paused": { "prefix": "" }, - "work": { "prefix": "" }, - "break": { "prefix": "" } + "off": { + "prefix": "" + }, + "paused": { + "prefix": "" + }, + "work": { + "prefix": "" + }, + "break": { + "prefix": "" + } + }, + "hddtemp": { + "prefix": "" }, - "hddtemp": { "prefix": "" }, "octoprint": { "prefix": " " }, @@ -300,10 +693,18 @@ "prefix": "" }, "speedtest": { - "running": { "prefix": ["\uf251", "\uf252", "\uf253"] }, - "not-running": { "prefix": "\uf144" } + "running": { + "prefix": [ + "\uf251", + "\uf252", + "\uf253" + ] + }, + "not-running": { + "prefix": "\uf144" + } }, "thunderbird": { "prefix": "" } -} +} \ No newline at end of file