easyconf-lemonbar/main.py

61 lines
1.8 KiB
Python

from threading import Thread
from subprocess import run
from time import sleep
from config_parsing import get_validated_config, parse_module
running_modules_dict = {"left": {}, "center": {}, "right": {}}
def print_bar():
for alignment in running_modules_dict:
match alignment:
case "left":
print("%{l}", end="")
case "center":
print("%{c}", end="")
case "right":
print("%{r}", end="")
group = running_modules_dict[alignment]
for index, module in enumerate(group):
print(group[module], end="")
if index != (len(group) - 1) and len(group[module]) > 0:
print(seperator, end="")
print(flush=True)
def create_module_string(pre, prefix, command, post):
cmd_output = run(command, shell=True, capture_output=True, text=True).stdout.strip()
if cmd_output != "":
return (pre + padding + prefix + cmd_output + padding + post)
else:
return cmd_output
def new_module_thread(alignment, pre, name, prefix, command, post, refresh):
running_modules_dict[alignment][name] = ""
while True:
module_string = create_module_string(pre, prefix, command, post)
running_modules_dict[alignment][name] = module_string
print_bar()
sleep(refresh/1000)
def main():
global padding
global seperator
config = get_validated_config("./testing_config.yml")
padding = config["bar"]["config"]["padding"]
seperator = config["bar"]["config"]["seperator"]
modules = config["bar"]["modules"]
for module in modules:
parameters = parse_module(module)
# print(parameters)
x = Thread(target=new_module_thread, args=parameters)
x.start()
if __name__ == "__main__":
main()