#!/bin/sh # Wrap the built desktop binary in a minimal `OpenPencil.app` so # macOS shows the proper Dock name + icon. # # A bare binary (`target/release/openpencil-desktop`) has no # `Info.plist`, so the Dock falls back to the raw executable name # and a generic icon. Running the binary from *inside* a `.app` # directory makes macOS pick up the bundle's `CFBundleName` + icon # even without `cargo bundle`. # # Usage: tools/bundle-macos.sh (after `cargo build -p op-host-desktop --release`) # Then run: target/release/OpenPencil.app/Contents/MacOS/openpencil-desktop set -e ROOT="$(cd "$(dirname "$0")/.." && pwd)" BIN="$ROOT/target/release/openpencil-desktop" ICON="$ROOT/crates/op-host-desktop/assets/icon.icns" APP="$ROOT/target/release/OpenPencil.app" if [ ! -x "$BIN" ]; then echo "bundle-macos: $BIN not found — run 'cargo build -p op-host-desktop --release' first" >&2 exit 1 fi rm -rf "$APP" mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources" cp "$BIN" "$APP/Contents/MacOS/openpencil-desktop" cp "$ICON" "$APP/Contents/Resources/icon.icns" cat > "$APP/Contents/Info.plist" <<'PLIST' CFBundleNameOpenPencil CFBundleDisplayNameOpenPencil CFBundleExecutableopenpencil-desktop CFBundleIdentifiercom.zseven-w.openpencil CFBundleAllowMixedLocalizations CFBundleDevelopmentRegionen CFBundleLocalizations en zh-Hans zh-Hant ja ko fr es de pt ru hi tr th vi id CFBundleIconFileicon CFBundlePackageTypeAPPL CFBundleInfoDictionaryVersion6.0 CFBundleShortVersionString0.8.0 NSHighResolutionCapable PLIST echo "bundle-macos: built $APP"