bumblebee-status/i3bumblebee
Tobias Witek 4133ae1907 [modules] Initial module loading framework
Add a very simplistic framework for loading modules that query system
data. The user can provide a list of modules via an argument switch, and
the name of the module is used to look up a Python module that has to
have a class called "Module".

The outer framework (the outputs, in particular) then uses various query
methods of that class to construct a meaningful output.
2016-10-30 17:30:09 +01:00

48 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python
import sys
import time
import argparse
import importlib
import bumblebee.outputs.i3
def print_module_list():
# TODO
pass
def main():
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("-l", "--list", action="store_true", help="List all available modules")
args = parser.parse_args()
if args.list:
print_module_list()
sys.exit(0)
modules = []
for m in args.modules:
# TODO: how to cleanly handle errors here?
# (useful error messages)
module = importlib.import_module("bumblebee.modules.%s" % m)
modules.append(getattr(module, "Module")())
output = bumblebee.outputs.i3.i3bar()
print output.start()
sys.stdout.flush()
while True:
for m in modules:
output.add(m)
print output.get()
sys.stdout.flush()
time.sleep(1)
print output.stop()
if __name__ == "__main__":
main()
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4