Added optional gamemode support.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Linux Game Manager Core Map
|
||||
|
||||
Last refreshed: 2026-04-14
|
||||
Last refreshed: 2026-07-27
|
||||
|
||||
## Top-Level Structure
|
||||
|
||||
@@ -8,6 +8,7 @@ Last refreshed: 2026-04-14
|
||||
- `.install/`: Per-game installer scripts sourced by `game_installer`.
|
||||
- `.launch/`: Per-game launch scripts (`.game`) and runnable entries (`.sh`, usually symlinks).
|
||||
- `.update/`: Optional per-game update scripts expected to define `run_update()`.
|
||||
- `.includes/ipfs.sh`: Central associative array of IPFS download URLs, expanded against the configured gateway at startup.
|
||||
- `speech/speak_window_title.sh`: Accessibility helper for announcing focused window titles.
|
||||
- `README.md`: Project summary and high-level behavior notes.
|
||||
- `.files/`: Game-specific auxiliary assets/scripts used by some installers or launchers.
|
||||
@@ -16,7 +17,7 @@ Last refreshed: 2026-04-14
|
||||
|
||||
- Installers: 42 (`.install/*.sh`)
|
||||
- Launcher definitions: 42 (`.launch/*.game`)
|
||||
- Launcher runnable entries: 31 (`.launch/*.sh`, both symlinks and files)
|
||||
- Launcher runnable entries: 32 (`.launch/*.sh`, both symlinks and files)
|
||||
- Update scripts: 5 (`.update/*.sh`)
|
||||
|
||||
Regenerate this snapshot with:
|
||||
@@ -68,6 +69,7 @@ python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py
|
||||
- Config base: `${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/linux-game-manager`
|
||||
- Settings overrides: `settings.conf` in config base
|
||||
- Default install root: `${HOME}/.local/games`
|
||||
- IPFS gateway: `${ipfsGateway:-https://ipfs.stormux.org}`; `.includes/ipfs.sh` is sourced after settings so centralized URLs honor the override.
|
||||
|
||||
## Contributor Pitfalls
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# shellcheck shell=bash disable=SC2154 # Variables are set by linux-game-manager.sh
|
||||
tobyVersion="9.0"
|
||||
mkdir -p "${installPath}/doom"
|
||||
doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null)"
|
||||
@@ -19,7 +20,7 @@ fi
|
||||
doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)"
|
||||
# The url breaks the normal download function
|
||||
download_named "keyshare-universal.pk3" "https://forum.zdoom.org/download/file.php?id=42262"
|
||||
download "${ipfsGateway}/ipfs/QmU6REFot8CGVSBy2YWQxnmXoh7M4EF74RxFtLzvtJxoGC?filename=toby_doom_${tobyVersion}_full.zip"
|
||||
download "${ipfs[FreeDoom]}"
|
||||
unzip -n -d "${installPath}/doom" "${cache}/toby_doom_${tobyVersion}_full.zip"
|
||||
# Move contents from nested folder up one directory (including hidden files)
|
||||
shopt -s dotglob
|
||||
|
||||
@@ -64,4 +64,4 @@ configure_audio
|
||||
configure_webkit
|
||||
set_sound_device
|
||||
pushd "${installPath}/AudioQuake"
|
||||
./AudioQuake
|
||||
run_with_optional_gamemode ./AudioQuake
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
check_architecture x86_64
|
||||
pushd "${installPath}/BallBouncer"
|
||||
${fex}./BallBouncer
|
||||
run_with_optional_gamemode ${fex}./BallBouncer
|
||||
|
||||
@@ -11,4 +11,4 @@ fi
|
||||
pushd "${gameDir}"
|
||||
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt \
|
||||
REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt \
|
||||
"${gameExecutable}"
|
||||
run_with_optional_gamemode "${gameExecutable}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
check_architecture x86_64
|
||||
gameExecutable="${installPath}/Constant Motion/cm"
|
||||
pushd "${installPath}/Constant Motion"
|
||||
${fex}"${gameExecutable}"
|
||||
run_with_optional_gamemode ${fex}"${gameExecutable}"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/FS2_3.0_Linux/fs2.x86_64" "-ESpeakApplication=espeak-ng"
|
||||
run_with_optional_gamemode "${installPath}/FS2_3.0_Linux/fs2.x86_64" "-ESpeakApplication=espeak-ng"
|
||||
|
||||
@@ -8,4 +8,4 @@ if ! [[ -d "toby-doom-launcher" ]]; then
|
||||
else
|
||||
git -C "${gamePath}/toby-doom-launcher" pull
|
||||
fi
|
||||
"toby-doom-launcher/Toby Doom Launcher.py"
|
||||
run_with_optional_gamemode "toby-doom-launcher/Toby Doom Launcher.py"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/periphery-synthetic-ep/periphery-synthetic-ep"
|
||||
run_with_optional_gamemode "${installPath}/periphery-synthetic-ep/periphery-synthetic-ep"
|
||||
|
||||
@@ -15,4 +15,4 @@ if [[ -d "${hostPythonDir}" ]]; then
|
||||
fi
|
||||
|
||||
pushd "${desktopPath}" || exit 1
|
||||
uv run python client.py
|
||||
run_with_optional_gamemode uv run python client.py
|
||||
|
||||
@@ -27,7 +27,7 @@ else
|
||||
fi
|
||||
|
||||
pushd "${HOME}/.local/games/SlayTheSpire"
|
||||
./MTS.sh --profile "$currentProfile"
|
||||
run_with_optional_gamemode ./MTS.sh --profile "$currentProfile"
|
||||
popd
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/Soulblaze/Soulblaze.x86_64"
|
||||
run_with_optional_gamemode "${installPath}/Soulblaze/Soulblaze.x86_64"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/StardewValley/StardewValley"
|
||||
run_with_optional_gamemode "${installPath}/StardewValley/StardewValley"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
check_architecture x86_64
|
||||
gamePath="${installPath}/Super Liam"
|
||||
pushd "${gamePath}"
|
||||
${fex}./SuperLiam
|
||||
run_with_optional_gamemode ${fex}./SuperLiam
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"
|
||||
run_with_optional_gamemode "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
check_architecture x86_64
|
||||
gamePath="${installPath}/The Great Toy Robbery"
|
||||
pushd "${gamePath}"
|
||||
${fex}./tgtr
|
||||
run_with_optional_gamemode ${fex}./tgtr
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# shellcheck shell=bash disable=SC2154 # installPath is set by linux-game-manager.sh
|
||||
gamePath="${installPath}/Omega Reach"
|
||||
pushd "${gamePath}" || return 1
|
||||
"${gamePath}/the-omega-reach"
|
||||
run_with_optional_gamemode "${gamePath}/the-omega-reach"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
check_architecture x86_64
|
||||
pushd "${installPath}/The Tornado Chicken"
|
||||
${fex}./Ttc
|
||||
run_with_optional_gamemode ${fex}./Ttc
|
||||
|
||||
@@ -11,4 +11,4 @@ if [[ ! -x "$gameExecutable" ]]; then
|
||||
return 1
|
||||
fi
|
||||
pushd "${gameDir}" || return 1
|
||||
"${gameExecutable}"
|
||||
run_with_optional_gamemode "${gameExecutable}"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/Upheaval_Gui/Upheaval"
|
||||
run_with_optional_gamemode "${installPath}/Upheaval_Gui/Upheaval"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
check_architecture x86_64
|
||||
pushd "${installPath}/Wheels of Prio"
|
||||
${fex}./Wp
|
||||
run_with_optional_gamemode ${fex}./Wp
|
||||
|
||||
@@ -4,4 +4,4 @@ if [[ "$arch" == "aarch64" ]]; then
|
||||
else
|
||||
pushd "${installPath}/wicked_quest-linux-x86_64"
|
||||
fi
|
||||
./wicked_quest
|
||||
run_with_optional_gamemode ./wicked_quest
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
pushd "${installPath}"
|
||||
"${installPath}/${pkgname%.*}/Zombowl"
|
||||
run_with_optional_gamemode "${installPath}/${pkgname%.*}/Zombowl"
|
||||
|
||||
@@ -950,6 +950,11 @@ unset noCache
|
||||
export doomLanguage="${doomLanguage:-en}"
|
||||
export installPath="${HOME}/.local/games"
|
||||
export ipfsGateway="${ipfsGateway:-https://ipfs.stormux.org}"
|
||||
# shellcheck source=.includes/ipfs.sh
|
||||
# shellcheck disable=SC1091 # Source path is resolved from the runtime script location
|
||||
source "${scriptRoot}/.includes/ipfs.sh"
|
||||
# shellcheck source=.includes/gamemode.sh
|
||||
source "${scriptRoot}/.includes/gamemode.sh"
|
||||
export spd_module="${spd_module:+ -o ${spd_module}}"
|
||||
export spd_pitch="${spd_pitch:+ -p ${spd_pitch}}"
|
||||
export spd_rate="${spd_rate:+ -r ${spd_rate}}"
|
||||
|
||||
Reference in New Issue
Block a user