00c92cb9e3
Format string for strftime is now configurable. Also, changed the separator for module name vs. arguments to "::" to make it possible to have ":" as part of the strftime format string (which is useful in most cases). Eventually, I'll probably have to come up with a better way, i.e. a fully-fledged parser, and move away from "special characters", but right now, the effort seems too much for the gain.
55 lines
1.6 KiB
Python
Executable file
55 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 = []
|
|
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(1)
|
|
|
|
print output.stop()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|