#!/usr/bin/env python import sys import time import argparse import importlib import bumblebee.theme 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 and themes") parser.add_argument("-t", "--theme", help="Specify which theme to use for drawing the modulemoduless") parser.add_argument("-i", "--interval", help="Specify the update interaval", default=1, type=int) 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_name = m if not "::" in m else m.split("::")[0] module_args = None if not "::" in m else m.split("::")[1:] module = importlib.import_module("bumblebee.modules.{}".format(module_name)) modules.append(getattr(module, "Module")(module_args)) theme = bumblebee.theme.Theme(args.theme) if args.theme else bumblebee.theme.Theme() output = bumblebee.outputs.i3.i3bar(theme) print output.start() sys.stdout.flush() while True: theme.reset() for m in modules: output.add(m) theme.next() print output.get() sys.stdout.flush() time.sleep(args.interval) print output.stop() if __name__ == "__main__": main() # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4