Presets added based on JSON colorscheme file. pycache needs fixing.

This commit is contained in:
2026-05-02 22:37:49 +02:00
parent ee65cfd9f8
commit 4816912b35
19 changed files with 659 additions and 4 deletions
+52 -3
View File
@@ -1,11 +1,60 @@
from __future__ import annotations
import json
import os
from pathlib import Path
import typer
from zshell.assets.schemes.catppuccin import catppuccin
from zshell.utils.presets import build_palette, list_presets, load_preset_file
app = typer.Typer()
OUTPUT = Path(os.getenv("HOME", "")) / ".local/state/zshell/scheme.json"
SCHEMES = catppuccin.variants.flavors
def _split_preset(value: str) -> tuple[str, str | None, str | None]:
parts = value.split(":")
if len(parts) == 1:
return parts[0], None, None
if len(parts) == 3:
return parts[0], parts[1], parts[2]
raise typer.BadParameter("Preset must be <name> or <name>:<flavor>:<accent>")
@app.command()
def set():
def list():
for preset_name in list_presets():
data = load_preset_file(preset_name)
flavors = [item["id"] for item in data["variants"]["flavors"]]
accents = [item["id"] for item in data["variants"]["accents"]]
for flavor in flavors:
for accent in accents:
typer.echo(f"{preset_name}:{flavor}:{accent}")
@app.command()
def set(
preset: str = typer.Argument(..., help="Preset in form <name> or <name>:<flavor>:<accent>"),
mode: str = typer.Option("dark", help="Mode for preset colors."),
):
name, flavor, accent = _split_preset(preset)
data = load_preset_file(name)
if flavor is None or accent is None:
defaults = data["variants"]["defaults"][mode]
flavor = defaults["flavor"]
accent = defaults["accent"]
palette = build_palette(data, flavor, accent, mode)
out = {
"name": palette.name,
"flavor": f"{palette.flavor}:{palette.accent}",
"mode": palette.mode,
"variant": name,
"colors": dict(palette.colors),
"seed": int(palette.colors["primary"].lstrip("#"), 16),
}
OUTPUT.parent.mkdir(parents=True, exist_ok=True)
OUTPUT.write_text(json.dumps(out, indent=4), encoding="utf-8")
typer.echo(f"applied: {name}:{flavor}:{accent}")