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) <noreply@anthropic.com>
This commit is contained in:
parent
bc88613e07
commit
f2ee0c40f8
5 changed files with 217 additions and 2 deletions
2
conf.lua
2
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
|
||||
|
|
|
|||
32
icon.svg
Normal file
32
icon.svg
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<!-- Main asteroid -->
|
||||
<polygon
|
||||
points="256,80 310,95 355,130 370,170 390,210 375,260 380,310 350,355 310,380 270,390 220,385 175,365 145,330 130,280 125,230 140,180 155,140 190,105 230,85"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
stroke-width="6"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<!-- Main asteroid surface detail -->
|
||||
<line x1="190" y1="105" x2="230" y2="180" stroke="white" stroke-width="3" opacity="0.5"/>
|
||||
<line x1="355" y1="130" x2="310" y2="210" stroke="white" stroke-width="3" opacity="0.5"/>
|
||||
<line x1="220" y1="385" x2="250" y2="310" stroke="white" stroke-width="3" opacity="0.5"/>
|
||||
|
||||
<!-- Small asteroid top-right -->
|
||||
<polygon
|
||||
points="420,70 440,60 460,68 468,85 462,105 445,112 425,108 415,90"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
stroke-width="4"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
|
||||
<!-- Tiny asteroid bottom-left -->
|
||||
<polygon
|
||||
points="85,400 100,392 112,398 115,412 105,422 90,420"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
stroke-width="3"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
138
install.sh
Executable file
138
install.sh
Executable file
|
|
@ -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 ""
|
||||
2
main.lua
2
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)
|
||||
|
|
|
|||
45
uninstall.sh
Executable file
45
uninstall.sh
Executable file
|
|
@ -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 ==="
|
||||
Loading…
Add table
Reference in a new issue