From f2ee0c40f881a005609147325a208d176bd2f504 Mon Sep 17 00:00:00 2001 From: 28allday Date: Mon, 13 Apr 2026 15:28:25 +0100 Subject: [PATCH] Add install/uninstall scripts, icon, rename to OMA-RIODS - install.sh: clones from Forgejo, installs Love2D, desktop entry, icon, walker refresh - uninstall.sh: removes everything cleanly - install.sh uninstall: built-in uninstall flag - Drops oma-riods-uninstall command into ~/.local/bin for easy removal - SVG icon (wireframe asteroids) - Renamed game to OMA-RIODS Co-Authored-By: Claude Opus 4.6 (1M context) --- conf.lua | 2 +- icon.svg | 32 ++++++++++++ install.sh | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++ main.lua | 2 +- uninstall.sh | 45 +++++++++++++++++ 5 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 icon.svg create mode 100755 install.sh create mode 100755 uninstall.sh diff --git a/conf.lua b/conf.lua index c5334b3..f98f6b0 100644 --- a/conf.lua +++ b/conf.lua @@ -1,5 +1,5 @@ function love.conf(t) - t.window.title = "ASTEROIDS" + t.window.title = "OMA-RIODS" t.window.width = 1024 t.window.height = 768 t.window.resizable = true diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..e2ecc0b --- /dev/null +++ b/icon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..f79f7f6 --- /dev/null +++ b/install.sh @@ -0,0 +1,138 @@ +#!/bin/bash +set -euo pipefail + +# OMA-RIODS Installer / Uninstaller +# Usage: ./install.sh — install the game +# ./install.sh uninstall — remove the game + +GAME_NAME="oma-riods" +DISPLAY_NAME="OMA-RIODS" +COMMENT="Classic asteroids arcade game with Omarchy theme integration" +REPO_URL="https://git.no-signal.uk/nosignal/oma-riods.git" + +INSTALL_DIR="$HOME/.local/share/$GAME_NAME" +DESKTOP_FILE="$HOME/.local/share/applications/$GAME_NAME.desktop" +ICON_DIR="$HOME/.local/share/icons/hicolor" +UNINSTALL_BIN="$HOME/.local/bin/$GAME_NAME-uninstall" + +# ── UNINSTALL ── +if [ "${1:-}" = "uninstall" ]; then + echo "=== Uninstalling $DISPLAY_NAME ===" + + [ -f "$DESKTOP_FILE" ] && rm "$DESKTOP_FILE" && echo "Removed desktop entry" + + for size in 16 32 48 64 128 256 512; do + local_icon="$ICON_DIR/${size}x${size}/apps/$GAME_NAME.png" + [ -f "$local_icon" ] && rm "$local_icon" + done + [ -f "$ICON_DIR/scalable/apps/$GAME_NAME.svg" ] && rm -f "$ICON_DIR/scalable/apps/$GAME_NAME.svg" + echo "Removed icons" + + [ -d "$INSTALL_DIR" ] && rm -rf "$INSTALL_DIR" && echo "Removed game files" + [ -f "$UNINSTALL_BIN" ] && rm "$UNINSTALL_BIN" && echo "Removed uninstall command" + + command -v gtk-update-icon-cache &>/dev/null && gtk-update-icon-cache -f -t "$ICON_DIR" 2>/dev/null || true + command -v omarchy-restart-walker &>/dev/null && omarchy-restart-walker 2>/dev/null || true + + echo "=== $DISPLAY_NAME uninstalled ===" + exit 0 +fi + +# ── INSTALL ── +echo "=== Installing $DISPLAY_NAME ===" + +# Check for Love2D +if ! command -v love &>/dev/null; then + echo "Installing Love2D..." + if command -v pacman &>/dev/null; then + sudo pacman -S --noconfirm love + else + echo "Error: Love2D (love) is not installed and pacman not found." + echo "Install Love2D manually and re-run this script." + exit 1 + fi +fi + +# Clone or update the game +if [ -d "$INSTALL_DIR/.git" ]; then + echo "Updating existing installation..." + cd "$INSTALL_DIR" + git pull --ff-only +else + [ -d "$INSTALL_DIR" ] && rm -rf "$INSTALL_DIR" + echo "Cloning game repository..." + git clone "$REPO_URL" "$INSTALL_DIR" +fi + +# Install icon +echo "Installing icon..." +ICON_SVG="$INSTALL_DIR/icon.svg" + +if command -v rsvg-convert &>/dev/null; then + for size in 16 32 48 64 128 256 512; do + mkdir -p "$ICON_DIR/${size}x${size}/apps" + rsvg-convert -w "$size" -h "$size" "$ICON_SVG" -o "$ICON_DIR/${size}x${size}/apps/$GAME_NAME.png" + done +elif command -v magick &>/dev/null; then + for size in 16 32 48 64 128 256 512; do + mkdir -p "$ICON_DIR/${size}x${size}/apps" + magick "$ICON_SVG" -resize "${size}x${size}" "$ICON_DIR/${size}x${size}/apps/$GAME_NAME.png" + done +else + echo "No SVG converter found, using SVG icon directly" + mkdir -p "$ICON_DIR/scalable/apps" + cp "$ICON_SVG" "$ICON_DIR/scalable/apps/$GAME_NAME.svg" +fi + +# Create .desktop file +echo "Creating desktop entry..." +mkdir -p "$(dirname "$DESKTOP_FILE")" +cat > "$DESKTOP_FILE" << EOF +[Desktop Entry] +Type=Application +Name=$DISPLAY_NAME +Comment=$COMMENT +Exec=uwsm app -- love $INSTALL_DIR +Icon=$GAME_NAME +Terminal=false +Categories=Game;ArcadeGame; +StartupNotify=true +TryExec=love +EOF + +# Install uninstall command so user can remove it any time +mkdir -p "$HOME/.local/bin" +cat > "$UNINSTALL_BIN" << 'UNINSTALL' +#!/bin/bash +# Uninstall OMA-RIODS +SCRIPT_URL="https://git.no-signal.uk/nosignal/oma-riods/raw/branch/master/install.sh" +curl -sL "$SCRIPT_URL" | bash -s uninstall 2>/dev/null || bash "$HOME/.local/share/oma-riods/install.sh" uninstall 2>/dev/null || { + # Fallback: inline uninstall + rm -f "$HOME/.local/share/applications/oma-riods.desktop" + rm -rf "$HOME/.local/share/oma-riods" + for s in 16 32 48 64 128 256 512; do + rm -f "$HOME/.local/share/icons/hicolor/${s}x${s}/apps/oma-riods.png" + done + rm -f "$HOME/.local/share/icons/hicolor/scalable/apps/oma-riods.svg" + rm -f "$HOME/.local/bin/oma-riods-uninstall" + command -v omarchy-restart-walker &>/dev/null && omarchy-restart-walker 2>/dev/null + echo "OMA-RIODS uninstalled" +} +UNINSTALL +chmod +x "$UNINSTALL_BIN" + +# Update icon cache +command -v gtk-update-icon-cache &>/dev/null && gtk-update-icon-cache -f -t "$ICON_DIR" 2>/dev/null || true + +# Restart walker +if command -v omarchy-restart-walker &>/dev/null; then + echo "Refreshing app launcher..." + omarchy-restart-walker 2>/dev/null || true +fi + +echo "" +echo "=== $DISPLAY_NAME installed ===" +echo "" +echo " Launch: search '$DISPLAY_NAME' in app launcher or run: love $INSTALL_DIR" +echo " Uninstall: $GAME_NAME-uninstall" +echo "" diff --git a/main.lua b/main.lua index 81ec0b8..be399ea 100644 --- a/main.lua +++ b/main.lua @@ -109,7 +109,7 @@ local function drawTitleScreen() love.graphics.setFont(Fonts.large) love.graphics.setColor(p.bright) - love.graphics.printf("ASTEROIDS", 0, centerY, sw, "center") + love.graphics.printf("OMA-RIODS", 0, centerY, sw, "center") -- Decorative wireframe lines love.graphics.setColor(p.asteroid[1], p.asteroid[2], p.asteroid[3], 0.2) diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..32d4505 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -euo pipefail + +# OMA-RIODS Uninstaller + +GAME_NAME="oma-riods" +DISPLAY_NAME="OMA-RIODS" + +INSTALL_DIR="$HOME/.local/share/$GAME_NAME" +DESKTOP_FILE="$HOME/.local/share/applications/$GAME_NAME.desktop" +ICON_DIR="$HOME/.local/share/icons/hicolor" + +echo "=== Uninstalling $DISPLAY_NAME ===" + +# Remove desktop entry +if [ -f "$DESKTOP_FILE" ]; then + rm "$DESKTOP_FILE" + echo "Removed desktop entry" +fi + +# Remove icons +for size in 16 32 48 64 128 256 512; do + local_icon="$ICON_DIR/${size}x${size}/apps/$GAME_NAME.png" + [ -f "$local_icon" ] && rm "$local_icon" +done +[ -f "$ICON_DIR/scalable/apps/$GAME_NAME.svg" ] && rm "$ICON_DIR/scalable/apps/$GAME_NAME.svg" +echo "Removed icons" + +# Remove game files +if [ -d "$INSTALL_DIR" ]; then + rm -rf "$INSTALL_DIR" + echo "Removed game files" +fi + +# Update icon cache +if command -v gtk-update-icon-cache &>/dev/null; then + gtk-update-icon-cache -f -t "$ICON_DIR" 2>/dev/null || true +fi + +# Restart walker +if command -v omarchy-restart-walker &>/dev/null; then + omarchy-restart-walker 2>/dev/null || true +fi + +echo "=== $DISPLAY_NAME uninstalled ==="