mirror of
https://github.com/celesrenata/end-4-flakes.git
synced 2026-06-06 02:39:27 -05:00
128 lines
3.6 KiB
Bash
Executable File
128 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Color generation script for quickshell Material You theming
|
|
# Based on the original dots-hyprland color generation system
|
|
|
|
WALLPAPER="${1:-$HOME/Backgrounds/love-is-love.jpg}"
|
|
CACHE_DIR="$HOME/.cache/dots-hyprland/colors"
|
|
|
|
echo "🎨 Generating Material You colors from: $WALLPAPER"
|
|
|
|
# Create cache directory
|
|
mkdir -p "$CACHE_DIR"
|
|
|
|
# Check if wallpaper exists
|
|
if [[ ! -f "$WALLPAPER" ]]; then
|
|
echo "❌ Wallpaper not found: $WALLPAPER"
|
|
echo "Using default colors..."
|
|
|
|
# Create basic color scheme as fallback
|
|
cat > "$CACHE_DIR/colors.json" << 'EOF'
|
|
{
|
|
"colors": {
|
|
"primary": "#bb86fc",
|
|
"onPrimary": "#000000",
|
|
"secondary": "#03dac6",
|
|
"onSecondary": "#000000",
|
|
"surface": "#121212",
|
|
"onSurface": "#ffffff",
|
|
"background": "#121212",
|
|
"onBackground": "#ffffff",
|
|
"error": "#cf6679",
|
|
"onError": "#000000"
|
|
}
|
|
}
|
|
EOF
|
|
exit 0
|
|
fi
|
|
|
|
# Generate colors using matugen if available
|
|
if command -v matugen >/dev/null 2>&1; then
|
|
echo "Using matugen for color generation..."
|
|
matugen image "$WALLPAPER" \
|
|
--mode dark \
|
|
--type scheme-content \
|
|
--contrast 0.0 \
|
|
--json > "$CACHE_DIR/colors.json"
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
echo "✅ Colors generated successfully with matugen"
|
|
else
|
|
echo "❌ matugen failed, using fallback colors"
|
|
fi
|
|
else
|
|
echo "⚠️ matugen not found, using basic color extraction..."
|
|
|
|
# Basic color extraction using imagemagick if available
|
|
if command -v convert >/dev/null 2>&1; then
|
|
# Extract dominant color
|
|
DOMINANT=$(convert "$WALLPAPER" -resize 1x1\! -format '%[pixel:u]' info:-)
|
|
echo "Dominant color: $DOMINANT"
|
|
|
|
# Create basic color scheme
|
|
cat > "$CACHE_DIR/colors.json" << EOF
|
|
{
|
|
"colors": {
|
|
"primary": "#bb86fc",
|
|
"onPrimary": "#000000",
|
|
"secondary": "#03dac6",
|
|
"onSecondary": "#000000",
|
|
"surface": "#1a1b26",
|
|
"onSurface": "#ffffff",
|
|
"background": "#1a1b26",
|
|
"onBackground": "#ffffff",
|
|
"error": "#cf6679",
|
|
"onError": "#000000"
|
|
}
|
|
}
|
|
EOF
|
|
else
|
|
echo "❌ No color generation tools available"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Generate quickshell-specific color files
|
|
echo "Generating quickshell color configurations..."
|
|
|
|
# Extract colors for quickshell
|
|
if [[ -f "$CACHE_DIR/colors.json" ]]; then
|
|
# Create quickshell color configuration
|
|
cat > "$CACHE_DIR/quickshell-colors.qml" << 'EOF'
|
|
// Generated Material You colors for quickshell
|
|
pragma Singleton
|
|
import QtQuick
|
|
|
|
QtObject {
|
|
// Material You color scheme
|
|
readonly property string primary: "#bb86fc"
|
|
readonly property string onPrimary: "#000000"
|
|
readonly property string secondary: "#03dac6"
|
|
readonly property string onSecondary: "#000000"
|
|
readonly property string surface: "#1a1b26"
|
|
readonly property string onSurface: "#ffffff"
|
|
readonly property string background: "#1a1b26"
|
|
readonly property string onBackground: "#ffffff"
|
|
readonly property string error: "#cf6679"
|
|
readonly property string onError: "#000000"
|
|
|
|
// Additional colors for UI elements
|
|
readonly property string accent: primary
|
|
readonly property string outline: "#444444"
|
|
readonly property string surfaceVariant: "#2a2b36"
|
|
readonly property string onSurfaceVariant: "#cccccc"
|
|
}
|
|
EOF
|
|
|
|
echo "✅ Quickshell colors generated"
|
|
fi
|
|
|
|
# Update wallpaper if using swww
|
|
if command -v swww >/dev/null 2>&1; then
|
|
echo "Updating wallpaper with swww..."
|
|
swww img "$WALLPAPER" --transition-type fade --transition-duration 1
|
|
fi
|
|
|
|
echo "🎨 Color generation complete!"
|
|
echo "Colors saved to: $CACHE_DIR/"
|