mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
* Attempt to templaterize the theme specific files * Cleanup * Slim down * Combine render into -set * Pull out the dynamic template rendering again, but simpler * Fix vars * Variables are lowercase * Better presentation * Fix missing colors * Provide stripped values too * Fix colors for regular hex format * Bring back explicit btop themes They're too involved to derive from a basic color set * Make an atomic swap of the theme directories * No longer used by walker to cancel * Explain why * Remove redundant const * Consistent const naming * No longe have $THEMES_DIR * Correct the blue * Set opencode colors too * Fix colors for readability * Move the templates together with the others in default * Split user themes and default themes * Fix paths * Look for both user themes and default themes Plus speed things up * Migrate to the new setup where default themes live inside omarchy * Explicitly store the name of the current theme * Cleanup * No longer need omarchy-theme-next since themes are now fully rendered, not symlinks * Get current theme name from the new theme.name file * Look for user background images in dedicated directory * Need yq for toml * Need yq to parse colors.toml * Look for backgrounds matching the new theme.name We no longer have symlinks * Migrate existing user backgrounds to the new proper location * Install user backgrounds in the correct path * Fix quoting * Just rely on the system theme for opencode and get ready for USRSIG2 being available to live reload * Fix template generation for rgb colors
45 lines
1.5 KiB
Bash
Executable File
45 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
TEMPLATES_DIR="$OMARCHY_PATH/default/themed"
|
|
NEXT_THEME_DIR="$HOME/.config/omarchy/current/next-theme"
|
|
COLORS_FILE="$NEXT_THEME_DIR/colors.toml"
|
|
|
|
# Convert hex color to decimal RGB (e.g., "#1e1e2e" -> "30,30,46")
|
|
hex_to_rgb() {
|
|
local hex="${1#\#}"
|
|
printf "%d,%d,%d" "0x${hex:0:2}" "0x${hex:2:2}" "0x${hex:4:2}"
|
|
}
|
|
|
|
# Only generate dynamic templates for themes with a colors.toml definition
|
|
if [[ -f $COLORS_FILE ]]; then
|
|
# Parse TOML using yq (treating it as YAML since the flat key=value structure is compatible)
|
|
# We convert 'key = value' to 'key: value' to make it valid YAML, then use yq/jq to generate the replacement commands.
|
|
sed_script=$(mktemp)
|
|
|
|
# Generate standard and _strip substitutions
|
|
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g", "s|{{ \(.key)_strip }}|\(.value | sub("^#";""))|g"' > "$sed_script"
|
|
|
|
# Generate _rgb substitutions for hex colors
|
|
while IFS='=' read -r key value; do
|
|
key=$(echo "$key" | xargs)
|
|
value=$(echo "$value" | xargs | tr -d '"')
|
|
if [[ $value =~ ^# ]]; then
|
|
rgb=$(hex_to_rgb "$value")
|
|
echo "s|{{ ${key}_rgb }}|${rgb}|g" >> "$sed_script"
|
|
fi
|
|
done < "$COLORS_FILE"
|
|
|
|
shopt -s nullglob
|
|
for tpl in "$TEMPLATES_DIR"/*.tpl; do
|
|
filename=$(basename "$tpl" .tpl)
|
|
output_path="$NEXT_THEME_DIR/$filename"
|
|
|
|
# Don't overwrite configs already exists in the output directory (copied from theme specific folder)
|
|
if [[ ! -f $output_path ]]; then
|
|
sed -f "$sed_script" "$tpl" > "$output_path"
|
|
fi
|
|
done
|
|
|
|
rm "$sed_script"
|
|
fi
|