#!/usr/bin/env bash # Erzeugt alle Icon-Groessen fuer Tauri aus scripts/icon.svg. # Braucht ImageMagick (auf Nix: via nix-shell automatisch verfuegbar). # # Aufruf: ./scripts/gen-icon.sh # Ergebnis: src-tauri/icons/{icon.png, 32x32.png, 128x128.png, 128x128@2x.png} set -euo pipefail cd "$(dirname "$0")/.." SVG="scripts/icon.svg" OUT="src-tauri/icons" if [ ! -f "$SVG" ]; then echo "❌ $SVG nicht gefunden" >&2; exit 1 fi mkdir -p "$OUT" # ImageMagick aus Nix ziehen falls nicht vorhanden if ! command -v magick >/dev/null && ! command -v convert >/dev/null; then echo "ℹ️ ImageMagick fehlt — ziehe aus nixpkgs" IM=$(nix-build '' -A imagemagick --no-out-link 2>/dev/null || true) [ -n "$IM" ] && export PATH="$IM/bin:$PATH" || { echo "❌ ImageMagick nicht bezogen"; exit 1; } fi # Moderne ImageMagick nutzt `magick`, aeltere `convert` if command -v magick >/dev/null; then IM_CMD="magick"; else IM_CMD="convert"; fi echo "Generiere Icons aus $SVG mit $IM_CMD..." # WICHTIG: -depth 8 erzwingen — sonst erzeugt ImageMagick aus hoher SVG-Density # 16-bit-RGBA-PNGs. Tauris Tray-Icon-Crate erwartet 8-bit RGBA (4 Byte/Pixel). for size in 32 64 128 256 512; do $IM_CMD -background none -density 400 "$SVG" -resize "${size}x${size}" -depth 8 "$OUT/${size}x${size}.png" echo " ✓ $OUT/${size}x${size}.png" done # Retina-Variante (Tauri-Konvention) $IM_CMD -background none -density 400 "$SVG" -resize 256x256 -depth 8 "$OUT/128x128@2x.png" echo " ✓ $OUT/128x128@2x.png" # Haupt-Icon cp "$OUT/512x512.png" "$OUT/icon.png" echo " ✓ $OUT/icon.png (Haupt-Icon 512x512)" echo echo "✅ Fertig. Icons in $OUT/:" ls -l "$OUT"/*.png