commit
1e04275af9
2 changed files with 65 additions and 3 deletions
|
@ -25,17 +25,20 @@ def themes():
|
||||||
class Theme(object):
|
class Theme(object):
|
||||||
"""Represents a collection of icons and colors"""
|
"""Represents a collection of icons and colors"""
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self._init(self.load(name))
|
|
||||||
self._widget = None
|
self._widget = None
|
||||||
self._cycle_idx = 0
|
self._cycle_idx = 0
|
||||||
self._cycle = {}
|
self._cycle = {}
|
||||||
self._prevbg = None
|
self._prevbg = None
|
||||||
|
self._colorset = {}
|
||||||
|
self._init(self.load(name))
|
||||||
|
|
||||||
def _init(self, data):
|
def _init(self, data):
|
||||||
"""Initialize theme from data structure"""
|
"""Initialize theme from data structure"""
|
||||||
self._theme = data
|
self._theme = data
|
||||||
for iconset in data.get("icons", []):
|
for iconset in data.get("icons", []):
|
||||||
self._merge(data, self._load_icons(iconset))
|
self._merge(data, self._load_icons(iconset))
|
||||||
|
for colorset in data.get("colors", []):
|
||||||
|
self._merge(self._colorset, self._load_colors(colorset))
|
||||||
self._defaults = data.get("defaults", {})
|
self._defaults = data.get("defaults", {})
|
||||||
self._cycles = self._theme.get("cycle", [])
|
self._cycles = self._theme.get("cycle", [])
|
||||||
self.reset()
|
self.reset()
|
||||||
|
@ -99,6 +102,21 @@ class Theme(object):
|
||||||
"""Return the SBW"""
|
"""Return the SBW"""
|
||||||
return self._get(widget, "separator-block-width", None)
|
return self._get(widget, "separator-block-width", None)
|
||||||
|
|
||||||
|
def _load_wal_colors(self):
|
||||||
|
walfile = os.path.expanduser("~/.cache/wal/colors.json")
|
||||||
|
result = {}
|
||||||
|
with io.open(walfile) as data:
|
||||||
|
colors = json.load(data)
|
||||||
|
for field in ["special", "colors"]:
|
||||||
|
for key in colors[field]:
|
||||||
|
result[key] = colors[field][key]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _load_colors(self, name):
|
||||||
|
"""Load colors for a theme"""
|
||||||
|
if name == "wal":
|
||||||
|
return self._load_wal_colors()
|
||||||
|
|
||||||
def _load_icons(self, name):
|
def _load_icons(self, name):
|
||||||
"""Load icons for a theme"""
|
"""Load icons for a theme"""
|
||||||
path = "{}/icons/".format(theme_path())
|
path = "{}/icons/".format(theme_path())
|
||||||
|
@ -155,7 +173,9 @@ class Theme(object):
|
||||||
widget.set(key, (idx + 1) % len(value))
|
widget.set(key, (idx + 1) % len(value))
|
||||||
value = value[idx]
|
value = value[idx]
|
||||||
|
|
||||||
|
if isinstance(value, list) or isinstance(value, dict):
|
||||||
return value
|
return value
|
||||||
|
return self._colorset.get(value, value)
|
||||||
|
|
||||||
# algorithm copied from
|
# algorithm copied from
|
||||||
# http://blog.impressiver.com/post/31434674390/deep-merge-multiple-python-dicts
|
# http://blog.impressiver.com/post/31434674390/deep-merge-multiple-python-dicts
|
||||||
|
|
42
themes/wal-powerline.json
Normal file
42
themes/wal-powerline.json
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
"icons": [ "awesome-fonts" ],
|
||||||
|
"colors": [ "wal" ],
|
||||||
|
"defaults": {
|
||||||
|
"separator-block-width": 0,
|
||||||
|
"critical": {
|
||||||
|
"fg": "cursor",
|
||||||
|
"bg": "color5"
|
||||||
|
},
|
||||||
|
"warning": {
|
||||||
|
"fg": "cursor",
|
||||||
|
"bg": "color6"
|
||||||
|
},
|
||||||
|
"default_separators": false
|
||||||
|
},
|
||||||
|
"cycle": [
|
||||||
|
{
|
||||||
|
"fg": "foreground",
|
||||||
|
"bg": "background"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fg": "background",
|
||||||
|
"bg": "foreground"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dnf": {
|
||||||
|
"good": {
|
||||||
|
"fg": "background",
|
||||||
|
"bg": "color3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"charged": {
|
||||||
|
"fg": "background",
|
||||||
|
"bg": "color3"
|
||||||
|
},
|
||||||
|
"AC": {
|
||||||
|
"fg": "background",
|
||||||
|
"bg": "color3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue