[core/theme] Add inline named color support

Add named colors that can be specified directly in the "colors" array
within a theme.

fixes #556
This commit is contained in:
Tobias Witek 2020-02-19 21:39:44 +01:00
parent 5134ce3b5b
commit 0751b7c084
2 changed files with 16 additions and 5 deletions

View file

@ -186,9 +186,14 @@ class Theme(object):
result[key] = colors[field][key]
return result
def color(self, color_name, default=None):
return self._colorset.get(color_name, default)
def _load_colors(self, name):
"""Load colors for a theme"""
try:
if isinstance(name, dict):
return name
if name.lower() == "wal":
return self._load_wal_colors()
except Exception as err:
@ -285,7 +290,7 @@ class Theme(object):
if isinstance(value, (dict, list)):
return value
return self._colorset.get(value, value)
return self.color(value, value)
# algorithm copied from
# http://blog.impressiver.com/post/31434674390/deep-merge-multiple-python-dicts

View file

@ -1,13 +1,19 @@
{
"icons": [ "paxy97", "awesome-fonts" ],
"colors": [{
"fg0": "#fbf1c7",
"bg0_h": "#1d2021",
"yellow": "#d79921",
"red": "#cc241d"
}],
"defaults": {
"warning": {
"fg": "#1d2021",
"bg": "#d79921"
"fg": "bg0_h",
"bg": "yellow"
},
"critical": {
"fg": "#fbf1c7",
"bg": "#cc241d"
"fg": "fg0",
"bg": "red"
},
"default-separators": false,
"separator-block-width": 0