Extend wallpaper theming to Zen, VSCodium, and GNOME accents

- Zen browser: generates userChrome.css with palette colors
- VSCodium: merges workbench.colorCustomizations into settings.json
- GNOME: maps palette hue to closest accent color preset
- Add jq to GNOME packages for JSON merging

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ediblerope 2026-04-13 21:14:54 +01:00
parent 1ca92e96ba
commit 8359853fc9
5 changed files with 96 additions and 0 deletions

View file

@ -87,3 +87,52 @@ done
# Update icon cache
gtk-update-icon-cache -f "$ICON_DIR" 2>/dev/null || true
# Map wallpaper palette to closest GNOME accent color
# Primary color RGB: {{colors.primary.default.red}}, {{colors.primary.default.green}}, {{colors.primary.default.blue}}
R={{colors.primary.default.red}}
G={{colors.primary.default.green}}
B={{colors.primary.default.blue}}
# Simple hue-based mapping to GNOME accent presets
if [ "$R" -gt "$G" ] && [ "$R" -gt "$B" ]; then
if [ "$B" -gt "$((G + 30))" ]; then
ACCENT="purple"
elif [ "$G" -gt "$((R / 2))" ]; then
ACCENT="orange"
else
if [ "$B" -gt "$((R / 3))" ]; then
ACCENT="pink"
else
ACCENT="red"
fi
fi
elif [ "$G" -gt "$R" ] && [ "$G" -gt "$B" ]; then
if [ "$B" -gt "$((R + 20))" ]; then
ACCENT="teal"
else
ACCENT="green"
fi
elif [ "$B" -gt "$R" ] && [ "$B" -gt "$G" ]; then
if [ "$R" -gt "$((B / 2))" ]; then
ACCENT="purple"
else
ACCENT="blue"
fi
else
ACCENT="slate"
fi
gsettings set org.gnome.desktop.interface accent-color "$ACCENT"
# Merge VSCodium color customizations into settings.json
VSCODE_SETTINGS="$HOME/.config/VSCodium/User/settings.json"
VSCODE_COLORS="$HOME/.local/share/matugen/vscodium-colors.json"
if [ -f "$VSCODE_SETTINGS" ] && [ -f "$VSCODE_COLORS" ]; then
COLORS=$(cat "$VSCODE_COLORS")
# Remove existing workbench.colorCustomizations and merge new ones
TMP=$(mktemp)
if command -v jq &>/dev/null; then
jq --argjson colors "$COLORS" '. * $colors' "$VSCODE_SETTINGS" > "$TMP" && mv "$TMP" "$VSCODE_SETTINGS"
fi
fi

View file

@ -0,0 +1,27 @@
{
"workbench.colorCustomizations": {
"titleBar.activeBackground": "{{colors.surface_container.default.hex}}",
"titleBar.activeForeground": "{{colors.on_surface.default.hex}}",
"titleBar.inactiveBackground": "{{colors.surface_container_low.default.hex}}",
"activityBar.background": "{{colors.surface_container.default.hex}}",
"activityBar.foreground": "{{colors.on_surface.default.hex}}",
"sideBar.background": "{{colors.surface_container_low.default.hex}}",
"sideBar.foreground": "{{colors.on_surface.default.hex}}",
"editor.background": "{{colors.surface.default.hex}}",
"editor.foreground": "{{colors.on_surface.default.hex}}",
"statusBar.background": "{{colors.surface_container.default.hex}}",
"statusBar.foreground": "{{colors.on_surface.default.hex}}",
"tab.activeBackground": "{{colors.surface.default.hex}}",
"tab.inactiveBackground": "{{colors.surface_container.default.hex}}",
"tab.activeForeground": "{{colors.on_surface.default.hex}}",
"focusBorder": "{{colors.primary.default.hex}}",
"button.background": "{{colors.primary.default.hex}}",
"button.foreground": "{{colors.on_primary.default.hex}}",
"list.activeSelectionBackground": "{{colors.primary_container.default.hex}}",
"list.activeSelectionForeground": "{{colors.on_primary_container.default.hex}}",
"list.hoverBackground": "{{colors.surface_container_high.default.hex}}",
"terminal.background": "{{colors.surface.default.hex}}",
"terminal.foreground": "{{colors.on_surface.default.hex}}",
"panel.background": "{{colors.surface_container_low.default.hex}}"
}
}

View file

@ -0,0 +1,11 @@
/* Wallpaper-based colors generated by matugen */
:root {
--zen-primary-color: {{colors.primary.default.hex}} !important;
--zen-colors-primary: {{colors.primary.default.hex}} !important;
--zen-colors-secondary: {{colors.secondary.default.hex}} !important;
--zen-colors-tertiary: {{colors.tertiary.default.hex}} !important;
--zen-colors-border: {{colors.outline_variant.default.hex}} !important;
--toolbar-bgcolor: {{colors.surface.default.hex}} !important;
--lwt-accent-color: {{colors.surface_container.default.hex}} !important;
--lwt-text-color: {{colors.on_surface.default.hex}} !important;
}