Add Kitty config
This commit is contained in:
87
powerline/kitty_theme.py
Normal file
87
powerline/kitty_theme.py
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import re
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
INDENT = 2
|
||||
SPACE = " "
|
||||
NEWLINE = "\n"
|
||||
|
||||
|
||||
def to_json(o, level=0):
|
||||
ret = ""
|
||||
if isinstance(o, dict):
|
||||
ret += "{" + NEWLINE
|
||||
comma = ""
|
||||
for k, v in o.items():
|
||||
ret += comma
|
||||
comma = ",\n"
|
||||
ret += SPACE * INDENT * (level+1)
|
||||
ret += '"' + str(k) + '":' + SPACE
|
||||
ret += to_json(v, level + 1)
|
||||
|
||||
ret += NEWLINE + SPACE * INDENT * level + "}"
|
||||
elif isinstance(o, str):
|
||||
ret += '"' + o + '"'
|
||||
elif isinstance(o, list):
|
||||
ret += "[" + ",".join([to_json(e, level+1) for e in o]) + "]"
|
||||
elif isinstance(o, bool):
|
||||
ret += "true" if o else "false"
|
||||
elif isinstance(o, int):
|
||||
ret += str(o)
|
||||
elif isinstance(o, float):
|
||||
ret += '%.7g' % o
|
||||
elif o is None:
|
||||
ret += 'null'
|
||||
else:
|
||||
raise TypeError("Unknown type '%s' for json serialization" % str(type(o)))
|
||||
return ret
|
||||
|
||||
|
||||
def cterm(cname: str) -> int:
|
||||
if cname == "background":
|
||||
return 0
|
||||
if cname == "foreground":
|
||||
return 15
|
||||
if cname == "selection_background":
|
||||
return 2
|
||||
if cname == "selection_foreground":
|
||||
return 15
|
||||
if cname == "cursor":
|
||||
return 2
|
||||
|
||||
if "color" in cname:
|
||||
return int(cname.strip("color"))
|
||||
|
||||
|
||||
def parse_kitty_theme(name: str, theme: str) -> dict:
|
||||
d = {}
|
||||
|
||||
for line in theme.splitlines():
|
||||
colorname, colorhex = line.split()
|
||||
d[f"kitty:{colorname}"] = [cterm(colorname), colorhex[1:]]
|
||||
|
||||
return d
|
||||
|
||||
|
||||
def get_kitty_theme() -> Path:
|
||||
kitty_conf = Path.home() / ".config" / "kitty" / "kitty.conf"
|
||||
txt = kitty_conf.read_text()
|
||||
match = re.search(r"include (\./themes/.*.conf)", txt)
|
||||
theme_name = match.groups()[0]
|
||||
print("theme_name: ", theme_name)
|
||||
theme_path = kitty_conf.parent / theme_name
|
||||
print("theme_path: ", theme_path)
|
||||
return theme_path
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
f = get_kitty_theme()
|
||||
colors_file = Path(__file__).parent / "colors.json"
|
||||
powerline_colors = json.loads(colors_file.read_text())
|
||||
|
||||
kitty_colors = parse_kitty_theme(f.stem, f.read_text())
|
||||
powerline_colors["colors"].update(kitty_colors)
|
||||
colors_file.write_text(to_json(powerline_colors))
|
||||
Reference in New Issue
Block a user