[modules] add a module "keys" that shows whether a key is pressed

also, add backend functionality to hide individual widgets of a module.
This commit is contained in:
tobi-wan-kenobi 2021-03-13 13:17:20 +01:00
parent 7d0d1455c8
commit 8d88b23947
4 changed files with 46 additions and 28 deletions

View file

@ -190,9 +190,9 @@ class Module(core.input.Object):
:rtype: bumblebee_status.widget.Widget
"""
def add_widget(self, full_text="", name=None):
def add_widget(self, full_text="", name=None, hidden=False):
widget_id = "{}::{}".format(self.name, len(self.widgets()))
widget = core.widget.Widget(full_text=full_text, name=name, widget_id=widget_id)
widget = core.widget.Widget(full_text=full_text, name=name, widget_id=widget_id, hidden=hidden)
self.widgets().append(widget)
widget.module = self
return widget

View file

@ -216,6 +216,8 @@ class i3(object):
continue
if module.hidden():
continue
if widget.hidden:
continue
if "critical" in widget.state() and self.__config.errorhide(widget.module.name):
continue
blocks.extend(self.separator_block(module, widget))

View file

@ -10,12 +10,13 @@ log = logging.getLogger(__name__)
class Widget(util.store.Store, core.input.Object):
def __init__(self, full_text="", name=None, widget_id=None):
def __init__(self, full_text="", name=None, widget_id=None, hidden=False):
super(Widget, self).__init__()
self.__full_text = full_text
self.module = None
self.name = name
self.id = widget_id or self.id
self.hidden = hidden
@property
def module(self):

View file

@ -68,5 +68,20 @@
"fg": "#002b36",
"bg": "#859900"
}
},
"keys": {
"Key.cmd": {
"bg": "#8ec07c",
"full_text": "***"
},
"Key.shift": {
"bg": "#fabd2f"
},
"Key.ctrl": {
"bg": "#83a598"
},
"Key.alt": {
"bg": "#f28019"
}
}
}