From 656c499c95f88611a40c4f39018da7905c12e4af Mon Sep 17 00:00:00 2001 From: Tobias Witek Date: Mon, 31 Oct 2016 08:14:12 +0100 Subject: [PATCH] [themes] Add custom separators Add the possibility to configure custom separators in the theme file. These will only be used if the default i3bar separators have been disabled. Background color will always be taken from the previous element (to work nicely with my long-term plan, a powerline-like status line). --- bumblebee/outputs/i3.py | 16 ++++++++++++++-- bumblebee/theme.py | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/bumblebee/outputs/i3.py b/bumblebee/outputs/i3.py index aa6db2c..329e6d7 100644 --- a/bumblebee/outputs/i3.py +++ b/bumblebee/outputs/i3.py @@ -1,9 +1,12 @@ +from __future__ import unicode_literals + import json import bumblebee.output class i3bar(bumblebee.output.Output): def __init__(self): self._data = [] + self._previous_background = None def start(self): return json.dumps({ "version": 1 }) + "[" @@ -12,15 +15,24 @@ class i3bar(bumblebee.output.Output): theme = obj.theme() data = { - "full_text": "{}{}{}".format(theme.prefix(obj), obj.data(), theme.suffix(obj)), + u"full_text": "{}{}{}".format(theme.prefix(obj), obj.data(), theme.suffix(obj)), "color": theme.color(obj), - "background": theme.background(obj) + "background": theme.background(obj), } if theme.default_separators(obj) == False: data["separator"] = False data["separator_block_width"] = 0 + if theme.separator(obj): + self._data.append({ + u"full_text": theme.separator(obj), + "color": theme.background(obj), + "background": self._previous_background, + "separator": False, + "separator_block_width": 0, + }) self._data.append(data) + self._previous_background = theme.background(obj) def get(self): data = json.dumps(self._data) diff --git a/bumblebee/theme.py b/bumblebee/theme.py index ce6a22c..dea942d 100644 --- a/bumblebee/theme.py +++ b/bumblebee/theme.py @@ -31,6 +31,9 @@ class Theme: def background(self, obj): return self._gettheme(obj, "bg") + def separator(self, obj): + return self._gettheme(obj, "separator") + def default_separators(self, obj): return self._gettheme(obj, "default_separators")