feat: Add scripts and systemd services for SteamOS session management and game launching

This commit is contained in:
2025-10-31 19:57:42 +01:00
parent 7a7f2711fe
commit d42d717f6c
18 changed files with 63 additions and 13 deletions
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -euo pipefail
LOGFILE="$HOME/.local/logs/retroarch-genesis.log"
log() { echo "[$(date --iso-8601=seconds)] $*" | tee -a "$LOGFILE"; }
RETROARCH_HOME="$HOME/.local/share/Steam/steamapps/common/RetroArch"
if [ ! -d "$RETROARCH_HOME" ]; then
log "ERROR: RetroArch directory not found at $RETROARCH_HOME, install it via Steam"
exit 127
fi
RETROARCH_BIN="$RETROARCH_HOME/retroarch"
RETROARCH_CORE=genesis_plus_gx_libretro.so
if [ ! -f "$RETROARCH_BIN" ] || [ ! -f "$RETROARCH_HOME/cores/$RETROARCH_CORE" ]; then
log "ERROR: retroarch or core not found, install it via Steam"
exit 127
fi
log "Launching RetroArch: $RETROARCH_BIN -L \"$RETROARCH_HOME/cores/$RETROARCH_CORE\" \"${@}\""
cd "$RETROARCH_HOME"
$HOME/.steam/steam/ubuntu12_32/steam-runtime/run.sh "$RETROARCH_BIN" -L "$RETROARCH_HOME/cores/$RETROARCH_CORE" "${@}" >>"$LOGFILE"
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -euo pipefail
LOGFILE="$HOME/.local/logs/retroarch-ppsspp.log"
log() { echo "[$(date --iso-8601=seconds)] $*" | tee -a "$LOGFILE"; }
RETROARCH_HOME="$HOME/.local/share/Steam/steamapps/common/RetroArch"
if [ ! -d "$RETROARCH_HOME" ]; then
log "ERROR: RetroArch directory not found at $RETROARCH_HOME, install it via Steam"
exit 127
fi
RETROARCH_BIN="$RETROARCH_HOME/retroarch"
RETROARCH_CORE=ppsspp_libretro.so
if [ ! -f "$RETROARCH_BIN" ] || [ ! -f "$RETROARCH_HOME/cores/$RETROARCH_CORE" ]; then
log "ERROR: retroarch or core not found, install it via Steam"
exit 127
fi
log "Launching RetroArch: $RETROARCH_BIN -L \"$RETROARCH_HOME/cores/$RETROARCH_CORE\" \"${@}\""
"$RETROARCH_BIN" -L "$RETROARCH_HOME/cores/$RETROARCH_CORE" "${@}" >>"$LOGFILE"
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -euo pipefail
LOGFILE="$HOME/.local/logs/rpcs3.log"
log() { echo "[$(date --iso-8601=seconds)] $*" | tee -a "$LOGFILE"; }
RPCS_BIN="$(command -v rpcs3 || true)"
if [ -z "$RPCS_BIN" ]; then
log "ERROR: rpcs3 not found in PATH"
exit 127
fi
log "Launching RPCS3: $RPCS_BIN \"${@}\""
"$RPCS_BIN" --no-gui --fullscreen "${@}" >>"$LOGFILE"
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
LOGFILE="$HOME/.local/logs/retroarch-snes.log"
log() { echo "[$(date --iso-8601=seconds)] $*" | tee -a "$LOGFILE"; }
RETROARCH_HOME="$HOME/.local/share/Steam/steamapps/common/RetroArch"
if [ ! -d "$RETROARCH_HOME" ]; then
log "ERROR: RetroArch directory not found at $RETROARCH_HOME, install it via Steam"
exit 127
fi
RETROARCH_BIN="$RETROARCH_HOME/retroarch"
RETROARCH_CORE=mesen-s_libretro.so.so
if [ ! -f "$RETROARCH_BIN" ] || [ ! -f "$RETROARCH_HOME/cores/$RETROARCH_CORE" ]; then
log "ERROR: retroarch or core not found, install it via Steam"
exit 127
fi
log "Launching RetroArch: $RETROARCH_BIN -L \"$RETROARCH_HOME/cores/$RETROARCH_CORE\" \"${@}\""
cd "$RETROARCH_HOME"
"$RETROARCH_BIN" -L "$RETROARCH_HOME/cores/$RETROARCH_CORE" "${@}" >>"$LOGFILE"
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
set -euo pipefail
LOGFILE="$HOME/.local/logs/update_roms.log"
log() { echo "[$(date --iso-8601=seconds)] $*" | tee -a "$LOGFILE"; }
ROM_MANAGER_BIN="$(command -v srm || true)"
if [ -z "$ROM_MANAGER_BIN" ]; then
log "ERROR: srm (Steam ROM Manager) not found in PATH"
exit 127
fi
log "Updating Steam ROM Manager"
$ROM_MANAGER_BIN add >> "$LOGFILE" 2>&1 || {
log "ERROR: Steam ROM Manager update failed"
exit 1
}
log "Steam ROM Manager update completed successfully, restarting Steam service if running"
if systemctl --user is-active --quiet steam.scope; then
log "Restarting Steam service to apply changes"
systemctl --user restart steam.scope
log "Steam service restarted"
else
log "Steam service is not running, no need to restart"
fi