53 lines
1.6 KiB
Python
Executable file
53 lines
1.6 KiB
Python
Executable file
#!/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")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.list:
|
|
print_module_list()
|
|
sys.exit(0)
|
|
|
|
modules = []
|
|
theme = bumblebee.theme.Theme(args.theme) if args.theme else bumblebee.theme.Theme()
|
|
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")(theme, module_args))
|
|
|
|
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
|