[themes] Add support for generic warning/critical colors

Font and background colors for warning and critical elements can now be
specified using fg-warning, fg-critical, bg-warning and bg-critical.

Also, optionally, the "urgent" flag will be set towards the i3bar, if
possible.
This commit is contained in:
Tobias Witek 2016-10-31 11:35:12 +01:00
parent 6278a4e564
commit 14bce293eb
5 changed files with 40 additions and 3 deletions

View file

@ -6,6 +6,12 @@ class Module(object):
def data(self): def data(self):
pass pass
def critical(self):
return False
def warning(self):
return False
def state(self): def state(self):
return "default" return "default"

View file

@ -18,7 +18,15 @@ class Module(bumblebee.module.Module):
with open("/sys/class/power_supply/{}/status".format(self._battery)) as f: with open("/sys/class/power_supply/{}/status".format(self._battery)) as f:
self._status = f.read().strip() self._status = f.read().strip()
if self._status == "Discharging": if self._status == "Discharging":
return "discharging" if self._capacity < 10:
return "discharging_critical"
if self._capacity < 25:
return "discharging_low"
if self._capacity < 50:
return "discharging_medium"
if self._capacity < 75:
return "discharging_high"
return "discharging_full"
else: else:
return "charging" return "charging"
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

View file

@ -20,6 +20,10 @@ class i3bar(bumblebee.output.Output):
"color": theme.color(obj), "color": theme.color(obj),
"background": theme.background(obj), "background": theme.background(obj),
} }
if theme.urgent(obj) and obj.critical():
data["urgent"] = True
if theme.default_separators(obj) == False: if theme.default_separators(obj) == False:
data["separator"] = False data["separator"] = False
data["separator_block_width"] = 0 data["separator_block_width"] = 0

View file

@ -37,6 +37,9 @@ class Theme:
self._previous_background = None self._previous_background = None
self._background = None self._background = None
def urgent(self, obj):
self._gettheme(obj, "urgent")
def next(self): def next(self):
self._cycle_index += 1 self._cycle_index += 1
self._previous_background = self._background self._previous_background = self._background
@ -44,10 +47,25 @@ class Theme:
self._cycle_index = 0 self._cycle_index = 0
def color(self, obj): def color(self, obj):
return self._gettheme(obj, "fg") fg = None
if obj.warning():
fg = self._gettheme(obj, "fg-warning")
if obj.critical():
fg = self._gettheme(obj, "fg-critical")
if fg == None:
fg = self._gettheme(obj, "fg")
return fg
def background(self, obj): def background(self, obj):
self._background = self._gettheme(obj, "bg") self._background = None
if obj.warning():
self._background = self._gettheme(obj, "bg-warning")
if obj.critical():
self._background = self._gettheme(obj, "bg-critical")
if self._background == None:
self._background = self._gettheme(obj, "bg")
return self._background return self._background
def previous_background(self): def previous_background(self):

View file

@ -1,5 +1,6 @@
{ {
"defaults": { "defaults": {
"urgent": true,
"prefix": " ", "prefix": " ",
"suffix" : " ", "suffix" : " ",
"cycle": [ "cycle": [