Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
Shell
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#!/usr/bin/env bash# make-icon.sh — render Resources/AppIcon.icns from the star glyph: the gold# star sitting on a soft sky-blue squircle, macOS-icon-shaped. Re-run after# changing star-glyph.svg.set -euo pipefailcd "$(dirname "$0")"
TMP="$(mktemp -d)"trap 'rm -rf "$TMP"' EXIT
echo "› rasterizing star"rsvg-convert -w 1024 -h 1024 Resources/star-glyph.svg -o "$TMP/star.png"
echo "› compositing 1024 master"cat > "$TMP/compose.swift" <<'SWIFT'import AppKitlet args = CommandLine.argumentslet starPath = args[1], outPath = args[2]let S: CGFloat = 1024let img = NSImage(size: NSSize(width: S, height: S))img.lockFocus()let ctx = NSGraphicsContext.current!.cgContext
// Soft sky squircle — Big-Sur-style content inset with room for a drop shadow.let inset: CGFloat = 92let rect = NSRect(x: inset, y: inset, width: S - inset*2, height: S - inset*2)let radius: CGFloat = 200let squircle = NSBezierPath(roundedRect: rect, xRadius: radius, yRadius: radius)
ctx.saveGState()ctx.setShadow(offset: CGSize(width: 0, height: -14), blur: 36, color: NSColor(white: 0, alpha: 0.28).cgColor)NSColor.white.setFill(); squircle.fill()ctx.restoreGState()
squircle.addClip()let top = NSColor(calibratedRed: 0.80, green: 0.92, blue: 1.0, alpha: 1)let bot = NSColor(calibratedRed: 0.43, green: 0.70, blue: 1.0, alpha: 1)NSGradient(colors: [top, bot])!.draw(in: rect, angle: -90)
// Warm glow behind the star so the gold pops off the blue.let glow = NSGradient(colors: [NSColor(calibratedRed: 1, green: 0.97, blue: 0.8, alpha: 0.85), NSColor(calibratedRed: 1, green: 0.97, blue: 0.8, alpha: 0)])!glow.draw(in: NSRect(x: S/2 - 360, y: S/2 - 330, width: 720, height: 720), relativeCenterPosition: .zero)
// The star, centered, nudged up a touch, with its own soft shadow.NSGraphicsContext.current!.saveGraphicsState()let sh = NSShadow()sh.shadowColor = NSColor(white: 0, alpha: 0.30)sh.shadowOffset = NSSize(width: 0, height: -10)sh.shadowBlurRadius = 22sh.set()let star = NSImage(contentsOfFile: starPath)!let sw: CGFloat = 660star.draw(in: NSRect(x: (S - sw)/2, y: (S - sw)/2 + 36, width: sw, height: sw))NSGraphicsContext.current!.restoreGraphicsState()
img.unlockFocus()let tiff = img.tiffRepresentation!let png = NSBitmapImageRep(data: tiff)!.representation(using: .png, properties: [:])!try! png.write(to: URL(fileURLWithPath: outPath))SWIFTswiftc -O "$TMP/compose.swift" -o "$TMP/compose" -framework AppKit"$TMP/compose" "$TMP/star.png" "$TMP/icon.png"
echo "› building iconset"SET="$TMP/MacPal.iconset"; mkdir -p "$SET"for s in 16 32 64 128 256 512 1024; do sips -z $s $s "$TMP/icon.png" --out "$SET/tmp_$s.png" >/dev/nulldonecp "$SET/tmp_16.png" "$SET/icon_16x16.png"cp "$SET/tmp_32.png" "$SET/icon_16x16@2x.png"cp "$SET/tmp_32.png" "$SET/icon_32x32.png"cp "$SET/tmp_64.png" "$SET/icon_32x32@2x.png"cp "$SET/tmp_128.png" "$SET/icon_128x128.png"cp "$SET/tmp_256.png" "$SET/icon_128x128@2x.png"cp "$SET/tmp_256.png" "$SET/icon_256x256.png"cp "$SET/tmp_512.png" "$SET/icon_256x256@2x.png"cp "$SET/tmp_512.png" "$SET/icon_512x512.png"cp "$SET/tmp_1024.png" "$SET/icon_512x512@2x.png"rm -f "$SET"/tmp_*.png
iconutil -c icns "$SET" -o Resources/AppIcon.icnsecho "✓ wrote Resources/AppIcon.icns"