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