59 lines
1.7 KiB
Bash
59 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
# Assemble nebula-appdir from extracted squashfs-root
|
|
set -euo pipefail
|
|
SRC="${1:-squashfs-root}"
|
|
DEST="${2:-nebula-appdir}"
|
|
|
|
if [ ! -d "$SRC" ]; then
|
|
echo "Source $SRC not found. Extract the AppImage first (./dist/Nebula-*.AppImage --appimage-extract)"
|
|
exit 1
|
|
fi
|
|
|
|
# Copy extracted contents into DEST
|
|
mkdir -p "$DEST"
|
|
cp -a "$SRC/." "$DEST/"
|
|
|
|
# Ensure launcher/binary exist
|
|
if [ -f "$DEST/run-nebula.sh" ]; then
|
|
mv "$DEST/run-nebula.sh" "$DEST/Nebula" 2>/dev/null || true
|
|
fi
|
|
chmod +x "$DEST/Nebula" || true
|
|
|
|
# Ensure directories for icons and desktop entries
|
|
mkdir -p "$DEST/usr/share/icons/hicolor/256x256/apps"
|
|
mkdir -p "$DEST/usr/share/applications"
|
|
|
|
# Copy icon if present at top level of extracted AppImage
|
|
if [ -f "$SRC/nebula.png" ]; then
|
|
cp "$SRC/nebula.png" "$DEST/usr/share/icons/hicolor/256x256/apps/nebula.png"
|
|
fi
|
|
|
|
# Also embed project icon if present in repo assets
|
|
PROJECT_ICON="$(cd "$(dirname "$0")" && pwd)/assets/images/Logos/Nebula-Favicon.png"
|
|
if [ -f "$PROJECT_ICON" ]; then
|
|
echo "Embedding project icon into AppDir: $PROJECT_ICON"
|
|
cp "$PROJECT_ICON" "$DEST/usr/share/icons/hicolor/256x256/apps/nebula.png"
|
|
fi
|
|
|
|
# Install desktop file into AppDir
|
|
if [ -f "$DEST/nebula.desktop" ]; then
|
|
cp "$DEST/nebula.desktop" "$DEST/usr/share/applications/nebula.desktop"
|
|
else
|
|
cat > "$DEST/usr/share/applications/nebula.desktop" <<'EOF'
|
|
[Desktop Entry]
|
|
Name=Nebula
|
|
Comment=Nebula Browser
|
|
Exec=./Nebula %U
|
|
Terminal=false
|
|
Type=Application
|
|
Icon=nebula
|
|
Categories=Network;WebBrowser;
|
|
StartupWMClass=Nebula
|
|
EOF
|
|
fi
|
|
|
|
# Fix permissions
|
|
chmod -R a+r "$DEST/usr/share/icons/hicolor/256x256/apps" || true
|
|
chmod +x "$DEST/Nebula" || true
|
|
|
|
echo "AppDir assembled at $DEST. Run with: $DEST/Nebula" |