diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2019-10-06 23:05:44 -0400 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2019-10-06 23:05:44 -0400 |
| commit | 71688839f0c3fb8107bbea27eb6cb1b4d8277e4a (patch) | |
| tree | c4fabc1bfdda72b65d4a62e36cbf891d9fed44ef /src | |
| parent | 602c70c5174b2c73600aa06fce915eaf8a1d8a26 (diff) | |
Add theme manager
Diffstat (limited to 'src')
| -rwxr-xr-x | src/i3-theme.py | 12 | ||||
| -rwxr-xr-x | src/parser.py | 16 | ||||
| -rw-r--r-- | src/theme.py | 30 |
3 files changed, 48 insertions, 10 deletions
diff --git a/src/i3-theme.py b/src/i3-theme.py index 2982726..2fae302 100755 --- a/src/i3-theme.py +++ b/src/i3-theme.py @@ -1,11 +1,15 @@ #!/usr/bin/python -import parser +import parser, theme, os, argparse +args_parser = argparse.ArgumentParser(description='Process some integers.') +args_parser.add_argument('theme_path', metavar='theme', type=str, nargs='?', + help='YAML i3 theme path') +args = args_parser.parse_args() -print("Starting app...") - -parser.apply_theme("/home/loic/.config/i3/config",parser.theme) +##### Apply Theme ##### +loaded_theme=theme.load(args.theme_path) +parser.apply_theme(os.environ["HOME"]+"/.config/i3/config",loaded_theme) diff --git a/src/parser.py b/src/parser.py index 2ec8da3..9a4f4b0 100755 --- a/src/parser.py +++ b/src/parser.py @@ -32,12 +32,17 @@ def extract_config(config_file): tmp.close() return(tmp.name) +def safe_get(theme,key): + if key in theme: + return(theme[key]) + return("") + def apply_to_config(tmp_config,theme): f=open(tmp_config,mode="r") tmp=tempfile.NamedTemporaryFile(mode="w",delete=False) ##### Apply bar theme ##### - bar_theme=theme["bar"] + bar_theme=theme["bar_colors"] for line in f: if contains(".*colors\s{",line): tmp.write(line) @@ -53,18 +58,17 @@ def apply_to_config(tmp_config,theme): shutil.move(tmp.name,tmp_config) ##### Apply client theme ##### - client_theme=theme["client"] + client_theme=theme["window_colors"] f=open(tmp_config,mode="a") for key,value in client_theme.items(): - f.write(key+" "+value["background"]+" "+value["text"]+" "+value["indicator"]+" "+value["child_border"]+"\n") + f.write("client."+key+" "+value["border"]+" "+value["background"]+" "+value["text"]+" "+value["indicator"]+" "+safe_get(value,"child_border")+"\n") f.close() def apply_theme(config_file,theme): + print("Applying theme: "+theme["meta"]["description"]) tmp=extract_config(config_file) apply_to_config(tmp,theme) - shutil.move(tmp,"/home/loic/aa.theme") - - + shutil.move(tmp,config_file) theme={ "bar":{ diff --git a/src/theme.py b/src/theme.py new file mode 100644 index 0000000..187b8d2 --- /dev/null +++ b/src/theme.py @@ -0,0 +1,30 @@ +import yaml,re + + +def configure(theme): + if "colors" in theme: + colors=theme["colors"] + window_colors=theme["window_colors"] + for key1,value1 in window_colors.items(): + for key2,value2 in value1.items(): + if re.match("#.*",value2) == None: + window_colors[key1][key2]=colors[value2] + theme["window_colors"]=window_colors + + bar_colors=theme["bar_colors"] + for key1,value1 in bar_colors.items(): + if isinstance(value1,dict): + for key2,value2 in value1.items(): + if re.match("#.*",value2) == None: + bar_colors[key1][key2]=colors[value2] + else: + if re.match("#.*",value1) == None: + bar_colors[key1]=colors[value1] + theme["bar_colors"]=bar_colors + return(theme) + +def load(theme_file): + f=open(theme_file,mode="r") + theme=yaml.load(f,Loader=yaml.FullLoader) + f.close() + return(configure(theme)) |
