[themes] Add themeing framework
Add - again a very simplistic - method for themeing the output. Essentially, the plan is to have JSON-formatted configuration files in bumblebee/themes/ and have a separate class for querying the config whenever the output needs to know about semantic formatting/coloring. Note that the theme object is stored on a per-module basis. Right now, that doesn't have any effect (except looking particularly wasteful), but the idea is to be able to have different themes for different modules in the future.
This commit is contained in:
parent
4133ae1907
commit
4ad41a8ee0
7 changed files with 46 additions and 4 deletions
9
bumblebee/module.py
Normal file
9
bumblebee/module.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
class Module(object):
|
||||||
|
def __init__(self, theme):
|
||||||
|
self._theme = theme
|
||||||
|
|
||||||
|
def theme(self):
|
||||||
|
return self._theme
|
||||||
|
|
||||||
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
|
@ -1,6 +1,10 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
import bumblebee.module
|
||||||
|
|
||||||
|
class Module(bumblebee.module.Module):
|
||||||
|
def __init__(self, theme):
|
||||||
|
super(Module, self).__init__(theme)
|
||||||
|
|
||||||
class Module:
|
|
||||||
def data(self):
|
def data(self):
|
||||||
return datetime.datetime.now().strftime("%x %X")
|
return datetime.datetime.now().strftime("%x %X")
|
||||||
|
|
||||||
|
|
15
bumblebee/output.py
Normal file
15
bumblebee/output.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
class Output(object):
|
||||||
|
def start(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def add(self, obj):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
|
@ -1,8 +1,10 @@
|
||||||
import json
|
import json
|
||||||
|
import bumblebee.output
|
||||||
|
|
||||||
class i3bar:
|
class i3bar(bumblebee.output.Output):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._data = []
|
self._data = []
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
return json.dumps({ "version": 1 }) + "["
|
return json.dumps({ "version": 1 }) + "["
|
||||||
|
|
||||||
|
|
6
bumblebee/themes.py
Normal file
6
bumblebee/themes.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
class Theme:
|
||||||
|
def __init__(self, name):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
3
bumblebee/themes/simple.json
Normal file
3
bumblebee/themes/simple.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import sys
|
||||||
import time
|
import time
|
||||||
import argparse
|
import argparse
|
||||||
import importlib
|
import importlib
|
||||||
|
import bumblebee.themes
|
||||||
import bumblebee.outputs.i3
|
import bumblebee.outputs.i3
|
||||||
|
|
||||||
def print_module_list():
|
def print_module_list():
|
||||||
|
@ -13,7 +14,8 @@ def print_module_list():
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description="display system data in the i3bar")
|
parser = argparse.ArgumentParser(description="display system data in the i3bar")
|
||||||
parser.add_argument("-m", "--modules", nargs="+", help="List of modules to load. The order of the list determines their order in the i3bar (from left to right)")
|
parser.add_argument("-m", "--modules", nargs="+", help="List of modules to load. The order of the list determines their order in the i3bar (from left to right)")
|
||||||
parser.add_argument("-l", "--list", action="store_true", help="List all available modules")
|
parser.add_argument("-l", "--list", action="store_true", help="List all available modules and themes")
|
||||||
|
parser.add_argument("-t", "--theme", help="Specify which theme to use for drawing the modulemoduless")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
@ -22,11 +24,12 @@ def main():
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
modules = []
|
modules = []
|
||||||
|
theme = bumblebee.themes.Theme(args.theme)
|
||||||
for m in args.modules:
|
for m in args.modules:
|
||||||
# TODO: how to cleanly handle errors here?
|
# TODO: how to cleanly handle errors here?
|
||||||
# (useful error messages)
|
# (useful error messages)
|
||||||
module = importlib.import_module("bumblebee.modules.%s" % m)
|
module = importlib.import_module("bumblebee.modules.%s" % m)
|
||||||
modules.append(getattr(module, "Module")())
|
modules.append(getattr(module, "Module")(theme))
|
||||||
|
|
||||||
output = bumblebee.outputs.i3.i3bar()
|
output = bumblebee.outputs.i3.i3bar()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue