bumblebee-status/modules/contrib/indicator.py

47 lines
1.6 KiB
Python
Raw Normal View History

2020-04-18 16:24:26 +02:00
#pylint: disable=C0111,R0903
"""Displays the indicator status, for numlock, scrolllock and capslock
Parameters:
* indicator.include: Comma-separated list of interface prefixes to include (defaults to 'numlock,capslock')
* indicator.signalstype: If you want the signali type color to be 'critical' or 'warning' (defaults to 'warning')
2020-04-18 16:24:26 +02:00
"""
import core.module
import core.widget
2020-04-18 16:24:26 +02:00
import util.cli
import util.format
2020-04-18 16:24:26 +02:00
class Module(core.module.Module):
def __init__(self, config, theme):
super().__init__(config, theme, [])
2020-04-18 16:24:26 +02:00
self.__include = tuple(filter(len, util.format.aslist(self.parameter('include', 'NumLock,CapsLock'))))
self.__signalType = self.parameter('signaltype') if not self.parameter('signaltype') is None else 'warning'
2020-04-18 16:24:26 +02:00
def update(self):
status_line = ''
for line in util.cli.execute('xset q', ignore_errors=True).replace(' ', '').split('\n'):
if 'capslock' in line.lower():
2020-04-18 16:24:26 +02:00
status_line = line
break
for indicator in self.__include:
2020-04-18 16:24:26 +02:00
widget = self.widget(indicator)
if not widget:
widget = core.widget.Widget(name=indicator, module=self)
self.widgets().append(widget)
2020-04-18 16:24:26 +02:00
widget.set('status', True if '{}:on'.format(indicator.lower()) in status_line.lower() else False)
2020-04-18 16:24:26 +02:00
widget.full_text(indicator)
def state(self, widget):
states = []
if widget.get('status', False):
states.append(self.__signalType)
else:
states.append('normal')
return states
2020-04-18 16:24:26 +02:00
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4