feat: generate Conjure color palette

This commit is contained in:
hl-valdemar
2026-10-22 15:38:17 +02:00
parent 08abf6393f
commit c60890eb4a
4 changed files with 139 additions and 2 deletions
+26
View File
@@ -40,6 +40,9 @@ func applyApps(zedSource string) error {
if err := writeHerdrTheme(colors, ui, syntax); err != nil {
return err
}
if err := writeConjureTheme(colors, ui); err != nil {
return err
}
return writeZedTheme(zedSource)
}
@@ -186,6 +189,29 @@ func semanticTheme(colors, ui, syntax map[string]string) (map[string]string, map
return omp, herdr
}
func writeConjureTheme(colors, ui map[string]string) error {
mapping := map[string]string{
"background": pick(ui, "global.background.normal", colors, "base00"),
"text": pick(ui, "global.foreground.normal", colors, "base05"),
"secondaryText": pick(ui, "global.foreground.dark", colors, "base04"),
"accent": pick(ui, "accent.normal", colors, "base0D"),
"glow": pick(ui, "status.error", colors, "base08"),
"keyBackground": pick(ui, "chrome.background.normal", colors, "base01"),
"error": pick(ui, "status.error", colors, "base08"),
}
validColor := regexp.MustCompile(`^#[0-9a-fA-F]{6}$`)
for key, value := range mapping {
if !validColor.MatchString(value) {
return fmt.Errorf("invalid Conjure color %s: %q", key, value)
}
}
configHome := os.Getenv("XDG_CONFIG_HOME")
if !filepath.IsAbs(configHome) {
configHome = filepath.Join(homeDir(), ".config")
}
return writeJSON(filepath.Join(configHome, "conjure", "theme.json"), map[string]any{"colors": mapping})
}
func writeOMPTheme(colors, ui, syntax map[string]string) error {
semantic, _ := semanticTheme(colors, ui, syntax)
theme := map[string]any{