Files
notedeck/scripts/svg_to_icns.sh
William Casarin 409e8c2e3a icon: fix app icon
Updated to roberto's fixed icon, I also added some padding so that it
looks right int the app switcher.

Closes: https://github.com/damus-io/notedeck/pull/503
Closes: https://github.com/damus-io/notedeck/pull/496
Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-29 10:08:00 -08:00

60 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Exit on error
set -e
# Check dependencies
if ! command -v inkscape &> /dev/null; then
echo "Error: Inkscape is required but not installed. Install it and try again."
exit 1
fi
if ! command -v iconutil &> /dev/null; then
echo "Error: iconutil is required but not installed. This tool is available only on macOS."
exit 1
fi
# Check input arguments
if [ "$#" -ne 2 ]; then
echo "Usage: $0 input.svg output.icns"
exit 1
fi
INPUT_SVG=$1
OUTPUT_ICNS=$2
TEMP_DIR=$(mktemp -d)
# Create the iconset directory
ICONSET_DIR="$TEMP_DIR/icon.iconset"
mkdir "$ICONSET_DIR"
# Define sizes and export PNGs
SIZES=(
"16 icon_16x16.png"
"32 icon_16x16@2x.png"
"32 icon_32x32.png"
"64 icon_32x32@2x.png"
"128 icon_128x128.png"
"256 icon_128x128@2x.png"
"256 icon_256x256.png"
"512 icon_256x256@2x.png"
"512 icon_512x512.png"
"1024 icon_512x512@2x.png"
)
echo "Converting SVG to PNGs..."
for size_entry in "${SIZES[@]}"; do
size=${size_entry%% *}
filename=${size_entry#* }
inkscape -w $size -h $size "$INPUT_SVG" -o "$ICONSET_DIR/$filename"
done
# Convert to ICNS
echo "Generating ICNS file..."
iconutil -c icns -o "$OUTPUT_ICNS" "$ICONSET_DIR"
# Clean up
rm -rf "$TEMP_DIR"
echo "Done! ICNS file saved to $OUTPUT_ICNS"