Compare commits

..

No commits in common. "a38eee08cb811db914cae4bae6dfa9fa1ab82170" and "dbf9174f96cc49ab717f4805fcbecfadbd89f2bf" have entirely different histories.

83 changed files with 179 additions and 322 deletions

2
.gitignore vendored
View File

@ -1,2 +0,0 @@
nohup.out
/.launch/*.sh

View File

@ -1,3 +1,4 @@
check_dependencies git sox tt++ check_dependencies git sox tt++
git -C "${installPath}/" clone --recurse-submodules https://github.com/lilmike/tintin-alteraeon.git | \ git -C "${installPath}/" clone --recurse-submodules https://github.com/lilmike/tintin-alteraeon.git | \
dialog --progressbox "Installing \"${game}\", please wait..." -1 -1 dialog --progressbox "Installing \"${game}\", please wait..." -1 -1
add_launcher "${installPath}/tintin-alteraeon/aa.tin"

View File

@ -1,3 +0,0 @@
check_architecture x86_64
download "https://michaels.world/aq-linux.zip"
unzip -d "${installPath}/AudioQuake" "${cache}/aq-linux.zip"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "Audo-linux-x64.zip" "https://shiftbacktick.itch.io/audo" get_installer "Audo-linux-x64.zip" "https://shiftbacktick.itch.io/audo"
mkdir -p "${installPath}/Audo" mkdir -p "${installPath}/Audo"
unzip -d "${installPath}/Audo" "${cache}/Audo-linux-x64.zip" unzip -d "${installPath}/Audo" "${cache}/Audo-linux-x64.zip"
add_launcher "${installPath}/Audo/Audo"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "Auroboros-linux-x64.zip" "https://shiftbacktick.itch.io/auroboros" get_installer "Auroboros-linux-x64.zip" "https://shiftbacktick.itch.io/auroboros"
mkdir -p "${installPath}/Auroboros" mkdir -p "${installPath}/Auroboros"
unzip -d "${installPath}/Auroboros" "${cache}/Auroboros-linux-x64.zip" unzip -d "${installPath}/Auroboros" "${cache}/Auroboros-linux-x64.zip"
add_launcher "${installPath}/Auroboros/Auroboros"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
download "https://files.sooslandia.ru/BallBouncer/1.2.1/BallBouncer-linux-1.2.1.zip" download "https://files.sooslandia.ru/BallBouncer/1.2.1/BallBouncer-linux-1.2.1.zip"
unzip -d "${installPath}/" "${cache}/BallBouncer-linux-1.2.1.zip" unzip -d "${installPath}/" "${cache}/BallBouncer-linux-1.2.1.zip"
chmod +x "${installPath}/BallBouncer/BallBouncer" chmod +x "${installPath}/BallBouncer/BallBouncer"
add_launcher "${installPath}/BallBouncer/BallBouncer"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "Bladius-linux-x64.zip" "https://shiftbacktick.itch.io/bladius" get_installer "Bladius-linux-x64.zip" "https://shiftbacktick.itch.io/bladius"
mkdir -p "${installPath}/Bladius" mkdir -p "${installPath}/Bladius"
unzip -d "${installPath}/Bladius" "${cache}/Bladius-linux-x64.zip" unzip -d "${installPath}/Bladius" "${cache}/Bladius-linux-x64.zip"
add_launcher "${installPath}/Bladius/Bladius"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "Chimera-linux-x64.zip" "https://shiftbacktick.itch.io/chimera" get_installer "Chimera-linux-x64.zip" "https://shiftbacktick.itch.io/chimera"
mkdir -p "${installPath}/Chimera" mkdir -p "${installPath}/Chimera"
unzip -d "${installPath}/Chimera" "${cache}/Chimera-linux-x64.zip" unzip -d "${installPath}/Chimera" "${cache}/Chimera-linux-x64.zip"
add_launcher "${installPath}/Chimera/Chimera"

View File

@ -4,3 +4,4 @@ mkdir -p "${installPath}/critter-sanctuary"
unzip -d "${installPath}/critter-sanctuary" "${cache}/critter-sanctuary-linux.zip" unzip -d "${installPath}/critter-sanctuary" "${cache}/critter-sanctuary-linux.zip"
mkdir -p "${XDG_DATA_HOME:-${HOME}/.local}/share/godot/app_userdata/OverworldMovementEngine" mkdir -p "${XDG_DATA_HOME:-${HOME}/.local}/share/godot/app_userdata/OverworldMovementEngine"
cp -v "${installPath}/critter-sanctuary/blind_options.save" "${XDG_DATA_HOME:-${HOME}/.local}/share/godot/app_userdata/OverworldMovementEngine/options.save" cp -v "${installPath}/critter-sanctuary/blind_options.save" "${XDG_DATA_HOME:-${HOME}/.local}/share/godot/app_userdata/OverworldMovementEngine/options.save"
add_launcher "${installPath}/critter-sanctuary/linux.x86_64"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "EXO-linux-x64.zip" "https://shiftbacktick.itch.io/exo" get_installer "EXO-linux-x64.zip" "https://shiftbacktick.itch.io/exo"
mkdir -p "${installPath}/E.X.O." mkdir -p "${installPath}/E.X.O."
unzip -d "${installPath}/E.X.O." "${cache}/EXO-linux-x64.zip" unzip -d "${installPath}/E.X.O." "${cache}/EXO-linux-x64.zip"
add_launcher "${installPath}/E.X.O./EXO"

View File

@ -3,3 +3,4 @@ get_installer "Echo Command.tar.xz" "https://pancakedev.itch.io/echo-command"
mkdir -p "${installPath}/Echo-Command" mkdir -p "${installPath}/Echo-Command"
tar xf "${cache}/Echo Command.tar.xz" -C "${installPath}/Echo-Command" tar xf "${cache}/Echo Command.tar.xz" -C "${installPath}/Echo-Command"
ln -sr "${installPath}/Echo-Command/Echo Command.x86_64" "${installPath}/Echo-Command/Echo_Command.x86_64" ln -sr "${installPath}/Echo-Command/Echo Command.x86_64" "${installPath}/Echo-Command/Echo_Command.x86_64"
add_launcher "${installPath}/Echo-Command/Echo_Command.x86_64"

View File

@ -1,3 +1,4 @@
check_dependencies git sox tt++ check_dependencies git sox tt++
git -C "${installPath}/" clone --recurse-submodules https://github.com/lilmike/tintin-empiremud.git | \ git -C "${installPath}/" clone --recurse-submodules https://github.com/lilmike/tintin-empiremud.git | \
dialog --progressbox "Installing \"${game}\", please wait..." -1 -1 dialog --progressbox "Installing \"${game}\", please wait..." -1 -1
add_launcher "${installPath}/tintin-empiremud/em.tin"

View File

@ -1,3 +1,4 @@
check_dependencies git opusdec sox tt++ check_dependencies git opusdec sox tt++
git -C "${installPath}/" clone https://git.2mb.codes/~stormdragon2976/tintin-endoftime | \ git -C "${installPath}/" clone https://git.2mb.codes/~stormdragon2976/tintin-endoftime | \
dialog --progressbox "Installing \"${game}\", please wait..." -1 -1 dialog --progressbox "Installing \"${game}\", please wait..." -1 -1
add_launcher "${installPath}/tintin-endoftime/eot.tin"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "FS2_3.0_Linux.zip" "https://drive.google.com/file/d/15Y5nxR1zl9vVNzMilpaXdCSBFhNUIDC9/view" get_installer "FS2_3.0_Linux.zip" "https://drive.google.com/file/d/15Y5nxR1zl9vVNzMilpaXdCSBFhNUIDC9/view"
unzip -d "${installPath}" "${cache}/FS2_3.0_Linux.zip" unzip -d "${installPath}" "${cache}/FS2_3.0_Linux.zip"
chmod +x "${installPath}/FS2_3.0_Linux/fs2.x86_64" chmod +x "${installPath}/FS2_3.0_Linux/fs2.x86_64"
add_launcher "${installPath}/FS2_3.0_Linux/fs2.x86_64" "-ESpeakApplication=espeak-ng"

View File

@ -1,4 +1,4 @@
tobyVersion="8-0" tobyVersion="7-5"
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)"
if [[ ${#doomPath} -lt 5 ]]; then if [[ ${#doomPath} -lt 5 ]]; then
@ -37,16 +37,16 @@ dialog --backtitle "Linux Game manager" \
fi fi
# 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/QmT6FEqeGTkf3Uv1dYqQ4LGYeRSjLk1R1FeyaFJwRFBocF?filename=TobyAccessibilityMod_V${tobyVersion}.zip" download "${ipfsGateway}/ipfs/QmRjg1GSBmVCCtPv8GRTZSjNNDMjHEXE2k5hKxoBnYMFKQ?filename=TobyAccessibilityMod_V${tobyVersion}.zip"
[[ -e "${cache}/DoomMetalVol6.wad" ]] && mv "${cache}/DoomMetalVol6.wad" "${installPath}/doom" [[ -e "${cache}/DoomMetalVol6.wad" ]] && mv "${cache}/DoomMetalVol6.wad" "${installPath}/doom"
[[ -e "${cache}/DoomMetalVol7.wad" ]] && mv "${cache}/DoomMetalVol7.wad" "${installPath}/doom" [[ -e "${cache}/DoomMetalVol7.wad" ]] && mv "${cache}/DoomMetalVol7.wad" "${installPath}/doom"
unzip -n -d "${installPath}/doom" "${cache}/TobyAccessibilityMod_V${tobyVersion}.zip" unzip -n -d "${installPath}/doom" "${cache}/TobyAccessibilityMod_V${tobyVersion}.zip"
#unzip -n -d "${installPath}/doom" "${cache}/OpMDK_ForV${tobyVersion}.zip" unzip -n -d "${installPath}/doom" "${cache}/OpMDK_ForV${tobyVersion}.zip"
cp -v "${cache}/keyshare-universal.pk3" "${installPath}/doom" cp -v "${cache}/keyshare-universal.pk3" "${installPath}/doom"
rm -fv "${installPath}/doom/"*.{ahk,bat,exe,dll,ps1} rm -fv "${installPath}/doom/"*.{ahk,bat,exe,dll,ps1}
#if [[ -e /usr/share/doom/blasphem.wad ]]; then if [[ -e /usr/share/doom/blasphem.wad ]]; then
#ln -s /usr/share/doom/blasphem.wad "${installPath}/doom/" ln -s /usr/share/doom/blasphem.wad "${installPath}/doom/"
#fi fi
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom" mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom"
cp "${installPath}/doom/TobyConfig.ini" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini" cp "${installPath}/doom/TobyConfig.ini" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini"
cp "${installPath}/doom/zcajun/bots.cfg" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/" cp "${installPath}/doom/zcajun/bots.cfg" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/"
@ -56,3 +56,4 @@ cp "${installPath}/doom/zcajun/bots.cfg" "${XDG_CONFIG_HOME:-$HOME/.config}/gzdo
# sed -i 's/Mouse1=+attack/CTRL=+attack/' "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini" # sed -i 's/Mouse1=+attack/CTRL=+attack/' "${XDG_CONFIG_HOME:-$HOME/.config}/gzdoom/gzdoom.ini"
launcherPath="$(readlink -f "$0")" launcherPath="$(readlink -f "$0")"
launcherPath="${launcherPath%/*}" launcherPath="${launcherPath%/*}"
add_launcher "${launcherPath}/.scripts/FreeDoom.sh"

View File

@ -1,2 +1,3 @@
check_dependencies python-pygame:pygame python-xdg:xdg python-pyperclip:pyperclip python-requests:requests python-setproctitle:setproctitle check_dependencies python-pygame:pygame python-xdg:xdg python-pyperclip:pyperclip python-requests:requests python-setproctitle:setproctitle
git -C "${installPath}" clone --recurse-submodules https://gitlab.com/stormdragon2976/monkeyspank.git git -C "${installPath}" clone --recurse-submodules https://gitlab.com/stormdragon2976/monkeyspank.git
add_launcher "${installPath}/monkeyspank/monkeyspank"

View File

@ -1,2 +1,3 @@
check_dependencies python-pygame:pygame python-xdg:xdg python-pyperclip:pyperclip python-requests:requests python-setproctitle:setproctitle check_dependencies python-pygame:pygame python-xdg:xdg python-pyperclip:pyperclip python-requests:requests python-setproctitle:setproctitle
git -C "${installPath}" clone --recurse-submodules https://gitlab.com/stormdragon2976/numnastics.git git -C "${installPath}" clone --recurse-submodules https://gitlab.com/stormdragon2976/numnastics.git
add_launcher "${installPath}/numnastics/numnastics"

View File

@ -3,3 +3,4 @@ get_installer "onslaught.AppImage" "https://lightsoutgames.itch.io/onslaught"
mkdir -p "${installPath}/Onslaught" mkdir -p "${installPath}/Onslaught"
cp -v "${cache}/onslaught.AppImage" "${installPath}/Onslaught/onslaught.AppImage" cp -v "${cache}/onslaught.AppImage" "${installPath}/Onslaught/onslaught.AppImage"
chmod +x "${installPath}/Onslaught/onslaught.AppImage" chmod +x "${installPath}/Onslaught/onslaught.AppImage"
add_launcher "${installPath}/Onslaught/onslaught.AppImage"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "periphery-synthetic-ep-linux-x64.zip" "https://shiftbacktick.itch.io/periphery-synthetic-ep" get_installer "periphery-synthetic-ep-linux-x64.zip" "https://shiftbacktick.itch.io/periphery-synthetic-ep"
mkdir -p "${installPath}/periphery-synthetic-ep" mkdir -p "${installPath}/periphery-synthetic-ep"
unzip -d "${installPath}/periphery-synthetic-ep" "${cache}/periphery-synthetic-ep-linux-x64.zip" unzip -d "${installPath}/periphery-synthetic-ep" "${cache}/periphery-synthetic-ep-linux-x64.zip"
add_launcher "${installPath}/periphery-synthetic-ep/periphery-synthetic-ep"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "SEA-linux-x64.zip" "https://shiftbacktick.itch.io/sea" get_installer "SEA-linux-x64.zip" "https://shiftbacktick.itch.io/sea"
mkdir -p "${installPath}/S.E.A." mkdir -p "${installPath}/S.E.A."
unzip -d "${installPath}/S.E.A." "${cache}/SEA-linux-x64.zip" unzip -d "${installPath}/S.E.A." "${cache}/SEA-linux-x64.zip"
add_launcher "${installPath}/S.E.A./SEA"

View File

@ -56,3 +56,4 @@ for x in "${!mods[@]}" ; do
done done
launcherPath="$(readlink -f "$0")" launcherPath="$(readlink -f "$0")"
launcherPath="${launcherPath%/*}" launcherPath="${launcherPath%/*}"
add_launcher "${launcherPath}/.scripts/SlayTheSpire.sh"

View File

@ -1,3 +1,4 @@
check_dependencies python-ansimarkup:ansimarkup check_dependencies python-ansimarkup:ansimarkup
git -C "${installPath}/" clone https://github.com/Difio3333/slaythetext.git | \ git -C "${installPath}/" clone https://github.com/Difio3333/slaythetext.git | \
dialog --progressbox "Installing \"${game}\", please wait..." -1 -1 dialog --progressbox "Installing \"${game}\", please wait..." -1 -1
add_launcher "${installPath}/slaythetext/main.py"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "soulblaze-linux-beta.zip" "https://sword-and-quill.itch.io/soulblaze" get_installer "soulblaze-linux-beta.zip" "https://sword-and-quill.itch.io/soulblaze"
mkdir -p "${installPath}/Soulblaze" mkdir -p "${installPath}/Soulblaze"
unzip -d "${installPath}/Soulblaze" "${cache}/soulblaze-linux-beta.zip" unzip -d "${installPath}/Soulblaze" "${cache}/soulblaze-linux-beta.zip"
add_launcher "${installPath}/Soulblaze/Soulblaze.x86_64"

View File

@ -16,3 +16,4 @@ alert
bash "${smapiTmp}/SMAPI ${smapiVersion} installer/install on Linux.sh" bash "${smapiTmp}/SMAPI ${smapiVersion} installer/install on Linux.sh"
ln -sf "${HOME}/GOG Games/Stardew Valley/game" "${installPath}/StardewValley" ln -sf "${HOME}/GOG Games/Stardew Valley/game" "${installPath}/StardewValley"
tar -xvf "${cache}/Mods.tar.xz" -C "${installPath}/StardewValley/" tar -xvf "${cache}/Mods.tar.xz" -C "${installPath}/StardewValley/"
add_launcher "${installPath}/StardewValley/StardewValley"

View File

@ -1,3 +1,4 @@
check_dependencies git sox tt++ check_dependencies git sox tt++
git -C "${installPath}/" clone --recurse-submodules https://github.com/stormdragon2976/tintin-stickmud.git | \ git -C "${installPath}/" clone --recurse-submodules https://github.com/stormdragon2976/tintin-stickmud.git | \
dialog --progressbox "Installing \"${game}\", please wait..." -1 -1 dialog --progressbox "Installing \"${game}\", please wait..." -1 -1
add_launcher "${installPath}/tintin-stickmud/stickmud.tin"

View File

@ -3,3 +3,4 @@ get_installer "system-fault-linux-x86_64.AppImage" "https://lightsoutgames.itch.
mkdir -p "${installPath}/System_Fault" mkdir -p "${installPath}/System_Fault"
cp -v "${cache}/system-fault-linux-x86_64.AppImage" "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage" cp -v "${cache}/system-fault-linux-x86_64.AppImage" "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"
chmod +x "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage" chmod +x "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"
add_launcher "${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"

View File

@ -1,8 +0,0 @@
check_architecture x86_64
get_installer "Ttc v3.0 linux.zip" "https://renzivan.itch.io/the-tornado-chicken"
unzip -d "${installPath}/The Tornado Chicken" "${cache}/Ttc v3.0 linux.zip"
chmod +x "${installPath}/The Tornado Chicken/Ttc"
echo "Note: When the game first starts it will be playing very loud music with the built in suboptimal voice."
echo "You are recommended to press page down several times to turn down the music, then go to settings and enable speech with screen reader, using speech dispatcher."
echo "You may then press page up to set the music to your liking."
alert

View File

@ -3,3 +3,4 @@ check_dependencies dmidecode
get_installer "upheaval-linux-console.zip" "https://leonegaming.itch.io/upheaval" get_installer "upheaval-linux-console.zip" "https://leonegaming.itch.io/upheaval"
mkdir -p "${installPath}/Upheaval_Commandline" mkdir -p "${installPath}/Upheaval_Commandline"
unzip -d "${installPath}/Upheaval_Commandline" "${cache}/upheaval-linux-console.zip" unzip -d "${installPath}/Upheaval_Commandline" "${cache}/upheaval-linux-console.zip"
add_launcher "${installPath}/Upheaval_Commandline/Upheaval_Command_Line"

View File

@ -3,5 +3,6 @@ check_dependencies dmidecode
get_installer "upheaval-linux.zip" "https://leonegaming.itch.io/upheaval" get_installer "upheaval-linux.zip" "https://leonegaming.itch.io/upheaval"
mkdir -p "${installPath}/Upheaval_Gui" mkdir -p "${installPath}/Upheaval_Gui"
unzip -d "${installPath}/Upheaval_Gui" "${cache}/upheaval-linux.zip" unzip -d "${installPath}/Upheaval_Gui" "${cache}/upheaval-linux.zip"
add_launcher "${installPath}/Upheaval_Gui/Upheaval"
echo "To enable accessibility, press shift t when the game starts." echo "To enable accessibility, press shift t when the game starts."
alert alert

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "Wurmus-linux-x64.zip" "https://shiftbacktick.itch.io/wurmus" get_installer "Wurmus-linux-x64.zip" "https://shiftbacktick.itch.io/wurmus"
mkdir -p "${installPath}/Wurmus" mkdir -p "${installPath}/Wurmus"
unzip -d "${installPath}/Wurmus" "${cache}/Wurmus-linux-x64.zip" unzip -d "${installPath}/Wurmus" "${cache}/Wurmus-linux-x64.zip"
add_launcher "${installPath}/Wurmus/Wurmus"

View File

@ -10,3 +10,4 @@ fi
get_installer "${pkgname}" "https://stormdragon2976.itch.io/zombowl" get_installer "${pkgname}" "https://stormdragon2976.itch.io/zombowl"
mkdir -p "${installPath}/" mkdir -p "${installPath}/"
unzip -d "${installPath}/" "${cache}/${pkgname}" unzip -d "${installPath}/" "${cache}/${pkgname}"
add_launcher "${installPath}/${pkgname%.*}/Zombowl"

View File

@ -2,3 +2,4 @@ check_architecture x86_64
get_installer "soundStrider-linux-x64.zip" "https://shiftbacktick.itch.io/soundstrider" get_installer "soundStrider-linux-x64.zip" "https://shiftbacktick.itch.io/soundstrider"
mkdir -p "${installPath}/soundStrider" mkdir -p "${installPath}/soundStrider"
unzip -d "${installPath}/soundStrider" "${cache}/soundStrider-linux-x64.zip" unzip -d "${installPath}/soundStrider" "${cache}/soundStrider-linux-x64.zip"
add_launcher "${installPath}/soundStrider/soundStrider"

View File

@ -1 +0,0 @@
open_url "https://files.jantrid.net/aliens/"

View File

@ -1,9 +0,0 @@
mudPath="${installPath}/tintin-alteraeon/aa.tin"
pushd "${mudPath%/*}"
git pull | \
dialog --progressbox "Checking for updates, please wait..." -1 -1
if [[ -n "${COLORTERM}" ]]; then
terminal_emulator tt++ ${mudPath##*/}
else
tt++ ${mudPath##*/}
fi

View File

@ -1,67 +0,0 @@
configure_audio() {
local sudo=$(command -v sudo)
sudo="${sudo:-doas}"
local audioProvider
if pgrep pipewire &> /dev/null ; then
audioProvider="pipewire"
elif pgrep pulse &> /dev/null ; then
audioProvider="pulseaudio"
else
audioProvider="alsa"
fi
lsmod | grep snd_aloop || $sudo modprobe snd_aloop
cardNumber="$(aplay -l |grep -P '^card \d+: Loopback' |head -n1 | cut -d\ -f2 | cut -d: -f1)"
if ! [[ "$cardNumber" =~ ^[0-9]+$ ]] ; then
dialog --backtitle "Linux Game Manager" \
--msgbox "The loopback module card number was not properly set.\nThis could mean that you failed to type your password for root privileges, or something else has gone wrong.\n If you think root privileges were succesfully obtained, please report this to the maintainers. Mention the card value: ${cardNumber}." -1 -1
exit 1
fi
alsaloop -C hw:${cardNumber},1,0 -P default &> /dev/null &
}
configure_webkit() {
local webkitPath
local sudo=$(command -v sudo)
sudo="${sudo:-doas}"
# First check if it's already properly set up
[[ -d /usr/libexec/webkit2gtk-4.0 ]] && return 0
webkitPath=$(find /usr/lib* /usr/local/lib* -type d -name 'webkit2gtk-4.0' 2>/dev/null | head -n1)
if [[ -z "${webkitPath}" ]]; then
dialog --backtitle "Linux Game manager" \
--msgbox "Error: webkit2gtk-4.0 not found. Please install webkit2gtk package for your distribution." -1 -1
exit 1
fi
# Create libexec directory if it doesn't exist
if [[ ! -d /usr/libexec ]]; then
if ! $sudo mkdir -p /usr/libexec; then
echo "Error: Failed to create /usr/libexec directory"
exit 1
fi
fi
if ! $sudo ln -s "${webkitPath}" /usr/libexec/webkit2gtk-4.0; then
echo "Error: Failed to create symlink for webkit2gtk-4.0"
exit 1
fi
}
set_sound_device() {
if ! grep -q 'set s_device' "${installPath}/AudioQuake/data/id1/config.cfg" ; then
echo "set s_device hw:${cardNumber},0,0" >> "${installPath}/AudioQuake/data/id1/config.cfg"
else
sed -E -i 's/set s_device/set s_device hw:${cardNumber},0,0/g' "${installPath}/AudioQuake/data/id1/config.cfg"
fi
if ! grep -q 'set s_device' "${installPath}/AudioQuake/data/oq/config.cfg" ; then
echo "set s_device hw:${cardNumber},0,0" >> "${installPath}/AudioQuake/data/oq/config.cfg"
else
sed -E -i 's/set s_device/set s_device hw:${cardNumber},0,0/g' "${installPath}/AudioQuake/data/oq/config.cfg"
fi
}
trap 'pkill -P $$' EXIT
configure_audio
configure_webkit
set_sound_device
pushd "${installPath}/AudioQuake"
./AudioQuake

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
${installPath}/Audo/Audo

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Auroboros/Auroboros"

View File

@ -1,3 +0,0 @@
check_architecture x86_64
pushd "${installPath}/BallBouncer"
${fex}./BallBouncer

View File

@ -1 +0,0 @@
open_url "https://lonespelunker.itch.io/battle-weary"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Bladius/Bladius"

View File

@ -1 +0,0 @@
open_url "https://tianmaru.itch.io/cacophony"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Chimera/Chimera"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/critter-sanctuary/linux.x86_64"

View File

@ -1 +0,0 @@
open_url "https://ko-fi.com/stormux"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/E.X.O./EXO"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Echo-Command/Echo_Command.x86_64"

View File

@ -1,9 +0,0 @@
mudPath="${installPath}/tintin-empiremud/em.tin"
pushd "${mudPath%/*}"
git pull | \
dialog --progressbox "Checking for updates, please wait..." -1 -1
if [[ -n "${COLORTERM}" ]]; then
terminal_emulator tt++ ${mudPath##*/}
else
tt++ ${mudPath##*/}
fi

View File

@ -1,9 +0,0 @@
mudPath="${installPath}/tintin-endoftime/eot.tin"
pushd "${mudPath%/*}"
git pull | \
dialog --progressbox "Checking for updates, please wait..." -1 -1
if [[ -n "${COLORTERM}" ]]; then
terminal_emulator tt++ ${mudPath##*/}
else
tt++ ${mudPath##*/}
fi

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/FS2_3.0_Linux/fs2.x86_64" "-ESpeakApplication=espeak-ng"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/monkeyspank/monkeyspank"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/numnastics/numnastics"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Onslaught/onslaught.AppImage"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/periphery-synthetic-ep/periphery-synthetic-ep"

View File

@ -1 +0,0 @@
open_url "https://qcsalon.net/"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/S.E.A./SEA"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${launcherPath}/.scripts/SlayTheSpire.sh"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/slaythetext/main.py"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Soulblaze/Soulblaze.x86_64"

View File

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/StardewValley/StardewValley"

View File

@ -1,10 +0,0 @@
pushd "${installPath}"
mudPath="${installPath}/tintin-stickmud/stickmud.tin"
pushd "${mudPath%/*}"
git pull | \
dialog --progressbox "Checking for updates, please wait..." -1 -1
if [[ -n "${COLORTERM}" ]]; then
terminal_emulator tt++ ${mudPath##*/}
else
tt++ ${mudPath##*/}
fi

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/System_Fault/system-fault-linux-x86_64.AppImage"

View File

@ -1,3 +0,0 @@
check_architecture x86_64
pushd "${installPath}/The Tornado Chicken"
${fex}./Ttc

View File

@ -1 +0,0 @@
open_url "https://ryngm.itch.io/trigaea"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Upheaval_Commandline/Upheaval_Command_Line"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Upheaval_Gui/Upheaval"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/Wurmus/Wurmus"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/${pkgname%.*}/Zombowl"

View File

@ -1,2 +0,0 @@
pushd "${installPath}"
"${installPath}/soundStrider/soundStrider"

View File

@ -1,8 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
launch_game() { launch_game() {
pushd "${gamePath}" pushd "${doomPath}"
#echo "exec stdbuf -oL ${gzdoom} ${@} | speak"
exec stdbuf -oL ${gzdoom} ${@} | speak exec stdbuf -oL ${gzdoom} ${@} | speak
popd popd
} }
@ -43,46 +42,38 @@ export gamePath=~/.local/games/doom
export doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)" export doomPath="$(find /usr/share -type d -name "doom" 2> /dev/null | head -1)"
# Path to gzdoom or yadoom. # Path to gzdoom or yadoom.
if [[ -x "${BASH_SOURCE[0]%/*}/yadoom" ]]; then if [[ -x "yadoom" ]]; then
export gzdoom="$(readlink -f "${BASH_SOURCE[0]%/*}/yadoom")" export gzdoom=$(readlink -f "yadoom")
else else
export gzdoom="$(command -v gzdoom)" export gzdoom="$(command -v gzdoom)"
fi fi
# Version of the accessibility mod # Version of the accessibility mod
export tobyVersion="8-0" export tobyVersion="7-5"
# Doom Addons # Doom Addons
mapfile -t doomAddons < <(find "$gamePath/Addons/DOOM/" -type f -name "Toby*.pk3" mapfile -t doomAddons < <(find "$gamePath/Addons/DOOM/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3" find "$gamePath/Addons/MENU/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3"
) )
# Heretic Addons # Heretic Addons
mapfile -t hereticAddons < <(find "$gamePath/Addons/HERETIC/" -type f -name "TobyHeretic*.pk3" mapfile -t hereticAddons < <(find "$gamePath/Addons/HERETIC/" -type f -name "TobyHeretic*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3" find "$gamePath/Addons/MENU/" -type f -name "TobyV${tobyVersion%%-*}_*.pk3"
)
# Hexen Addons
mapfile -t hexenAddons < <(find "$gamePath/Addons/HEXEN/" -type f -name "TobyHexen*.pk3"
find "$gamePath/Addons/MENU/" -type f -name "Toby*.pk3"
) )
doomGames=( doomGames=(
# Toby demo map # Toby demo map
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/Toby-Demo-Level.wad ${doomAddons[*]}" "Freedoom Toby Demo Map" "TobyAccMod_V${tobyVersion}.pk3 Toby-Demo-Level.wad ${doomAddons[*]}" "Freedoom Toby Demo Map"
# Unmodified Doom with accessibility. # Unmodified Doom with accessibility.
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${doomAddons[*]}" "Freedoom" "TobyAccMod_V${tobyVersion}.pk3 ${doomAddons[*]}" "Freedoom"
# Toby accessibility mods # Toby accessibility mods
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyDoomLevels.wad ${doomAddons[*]}" "Freedoom Toby Delux Map Pack" "TobyAccMod_V${tobyVersion}.pk3 TobyDoomLevels.wad Toby-Doom-Level-Music-Renamer.pk3 ${doomAddons[*]}" "Freedoom Toby Delux Map Pack"
# OperationMDK # OperationMDK
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/OpMDK.wad ${doomAddons[*]}" "Freedoom OperationMDK" "TobyAccMod_V${tobyVersion}.pk3 OpMDK.wad ${doomAddons[*]}" "Freedoom OperationMDK"
# Unmodified Heretic with accessibility # Unmodified Heretic with accessibility
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${hereticAddons[*]}" "Classic Heretic" "TobyAccMod_V${tobyVersion}.pk3 ${hereticAddons[*]}" "Classic Heretic"
# Heretic accessibility mods # Heretic accessibility mods
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyHereticLevels.wad ${hereticAddons[*]}" "Toby Heretic" "TobyAccMod_V${tobyVersion}.pk3 TobyHereticLevels.wad ${hereticAddons[*]}" "Toby Heretic"
# Unmodified Hexen with accessibility
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${hexenAddons[*]}" "Classic Hexen"
# Heretic accessibility mods
"${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyHexen.pk3 ${hexenAddons[*]}" "Toby Hexen"
"custom_game" "Custom Game" "custom_game" "Custom Game"
) )
@ -99,8 +90,6 @@ export antiGrepStrings=(
'-e' 'key card' '-e' 'key card'
'-e' '^New PDA Entry:' '-e' '^New PDA Entry:'
'-e' "^(As |Computer Voice:|Holy|I |I've|Monorail|Sector |Ugh|What|Where)" '-e' "^(As |Computer Voice:|Holy|I |I've|Monorail|Sector |Ugh|What|Where)"
'-e' 'Script warning, "'
'-e' 'Tried to define'
) )
export sedStrings=('-E' export sedStrings=('-E'
@ -155,7 +144,7 @@ translate_text() {
custom_game() { custom_game() {
mapfile -t customGames < <(find "${BASH_SOURCE[0]%/*}/TobyCustom/" -type f -iname '*.sh') mapfile -t customGames < <(find "${0%/*}/TobyCustom/" -type f -iname '*.sh')
declare -a customMenu declare -a customMenu
for i in "${customGames[@]}" ; do for i in "${customGames[@]}" ; do
customMenu+=("$i") customMenu+=("$i")
@ -201,7 +190,7 @@ case ${buttonCode} in
1) 1)
# Death match setup # Death match setup
# Ignore the choice of map made above # Ignore the choice of map made above
gameOption="${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/Addons/MAPS/TobyDeathArena_V1-5.wad ""$gamePath/Addons/DOOM/TobyV*_"* gameOption="${gamePath}/TobyAccMod_V${tobyVersion}.pk3 ${gamePath}/TobyDeathArena_V1-0.wad ""$gamePath/Addons/TobyV${tobVersion%%-*}_"*
ipAddress="$(dialog --backtitle "Deathmatch Options" \ ipAddress="$(dialog --backtitle "Deathmatch Options" \
--clear \ --clear \
--no-tags \ --no-tags \
@ -228,9 +217,7 @@ case ${buttonCode} in
"5" "Ocean Fortress (2-4 players)" "5" "Ocean Fortress (2-4 players)"
"6" "Water Treatment Facility (2-4 players)" "6" "Water Treatment Facility (2-4 players)"
"7" "Phobos Base Site 4 (2-4 players)" "7" "Phobos Base Site 4 (2-4 players)"
"8" "Hangar Bay 18 (2-4 players)" "8" "Hangar Bay 18 (2-4 players)")
"9" "Garden of Demon (2-4 players)"
"10" "Outpost 69 (2-4 players)")
# Array of how many players a given map supports in dialog rangebox syntax # Array of how many players a given map supports in dialog rangebox syntax
declare -a mapPlayers=( declare -a mapPlayers=(
[1]="2 4" [1]="2 4"
@ -240,9 +227,7 @@ case ${buttonCode} in
[5]="2 4" [5]="2 4"
[6]="2 4" [6]="2 4"
[7]="2 4" [7]="2 4"
[8]="2 4" [8]="2 4")
[9]="2 4"
[10]="2 4")
map="$(dialog --backtitle "Select Map" \ map="$(dialog --backtitle "Select Map" \
--clear \ --clear \
--no-tags \ --no-tags \
@ -340,7 +325,7 @@ case ${buttonCode} in
'-extratic' '-dup' '3' '-extratic' '-dup' '3'
) )
fi fi
pushd "${gamePath}" pushd "${doomPath}"
launch_game ${gameOption} "${flags[@]}" launch_game ${gameOption} "${flags[@]}"
;; ;;
0) 0)

View File

@ -1,8 +1,8 @@
# Choice of maps # Choice of maps
mapList=( mapList=(
"${gamePath}/OpMDK.wad" "${gamePath}/OpMDK.wad"
"${gamePath}/Addons/MAPS/TobyDoomLevels.wad" "${gamePath}/TobyDoomLevels.wad"
"${gamePath}/Addons/MAPS/Toby-Demo-Level.wad" "${gamePath}/Toby-Demo-Level.wad"
) )
declare -a mapMenu=('none' 'None') declare -a mapMenu=('none' 'None')

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check for required wad. # check for required wad.
source ${BASH_SOURCE[0]%/*}/.dependencies source ${0%/*}/TobyCustom/.dependencies
check_dependencies "${gamePath}/aoddoom1.wad" "https://www.moddb.com/mods/army-of-darkness-total-conversion/addons/army-of-darkness-doom-wad" "Place \"aoddoom1.wad\" in \"${gamePath}\"." check_dependencies "${gamePath}/aoddoom1.wad" "https://www.moddb.com/mods/army-of-darkness-total-conversion/addons/army-of-darkness-doom-wad" "Place \"aoddoom1.wad\" in \"${gamePath}\"."
@ -20,4 +20,4 @@ elif [[ -e "${gamePath}/DoomMetalVol6.wad" ]]; then
gameOption+=("${gamePath}/DoomMetalVol6.wad") gameOption+=("${gamePath}/DoomMetalVol6.wad")
fi fi
source ${BASH_SOURCE[0]%/*}/.mapmenu source ${0%/*}/TobyCustom/.mapmenu

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check for required pk3. # check for required pk3.
source ${BASH_SOURCE[0]%/*}/.dependencies source ${0%/*}/TobyCustom/.dependencies
check_dependencies "${gamePath}/GMOTA_V.1.5.2.pk3" \ check_dependencies "${gamePath}/GMOTA_V.1.5.2.pk3" \
"https://combine-kegan.itch.io/gmota" \ "https://combine-kegan.itch.io/gmota" \
"Place the file in ${gamePath}" "Place the file in ${gamePath}"
@ -15,7 +15,7 @@ gameOption=(
) )
source ${BASH_SOURCE[0]%/*}/.mapmenu source ${0%/*}/TobyCustom/.mapmenu
flags=( flags=(
# Key bindings # Key bindings
'+bind Alt +altattack' '+bind Alt +altattack'

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check for required pk3. # check for required pk3.
source ${BASH_SOURCE[0]%/*}/.dependencies source ${0%/*}/TobyCustom/.dependencies
check_dependencies "${gamePath}/Project_Brutality.pk3" \ check_dependencies "${gamePath}/Project_Brutality.pk3" \
"https://www.moddb.com/mods/project-brutality" \ "https://www.moddb.com/mods/project-brutality" \
"This should be included by default." \ "This should be included by default." \
@ -24,7 +24,7 @@ elif [[ -e "${gamePath}/DoomMetalVol6.wad" ]]; then
gameOption+=("${gamePath}/DoomMetalVol6.wad") gameOption+=("${gamePath}/DoomMetalVol6.wad")
fi fi
source ${BASH_SOURCE[0]%/*}/.mapmenu source ${0%/*}/TobyCustom/.mapmenu
flags=( flags=(
# Key bindings # Key bindings
'+bind Alt +altattack' '+bind Alt +altattack'

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check for required pk3. # check for required pk3.
source ${BASH_SOURCE[0]%/*}/.dependencies source ${0%/*}/TobyCustom/.dependencies
check_dependencies "${gamePath}/Project_Brutality-Latest.pk3" \ check_dependencies "${gamePath}/Project_Brutality-Latest.pk3" \
"https://www.moddb.com/mods/project-brutality" \ "https://www.moddb.com/mods/project-brutality" \
"This should be included by default." \ "This should be included by default." \
@ -23,7 +23,7 @@ elif [[ -e "${gamePath}/DoomMetalVol6.wad" ]]; then
gameOption+=("${gamePath}/DoomMetalVol6.wad") gameOption+=("${gamePath}/DoomMetalVol6.wad")
fi fi
source ${BASH_SOURCE[0]%/*}/.mapmenu source ${0%/*}/TobyCustom/.mapmenu
flags=( flags=(
# Key bindings # Key bindings
'+bind Alt +altattack' '+bind Alt +altattack'

View File

@ -10,4 +10,4 @@ gameOption=(
"$gamePath/Addons/STARWARS/"* "$gamePath/Addons/STARWARS/"*
) )
source ${BASH_SOURCE[0]%/*}/.mapmenu source ${0%/*}/TobyCustom/.mapmenu

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check for required pk3. # check for required pk3.
source ${BASH_SOURCE[0]%/*}/.dependencies source ${0%/*}/TobyCustom/.dependencies
check_dependencies "${gamePath}/Addons/WOLFENDOOM/orig_enh.pk3" \ check_dependencies "${gamePath}/Addons/WOLFENDOOM/orig_enh.pk3" \
"https://www.moddb.com/mods/wolfendoom/downloads/wolfendoom-enhanced" \ "https://www.moddb.com/mods/wolfendoom/downloads/wolfendoom-enhanced" \
"mkdir -p ${gamePath}/Addons/WOLFENDOOM/" \ "mkdir -p ${gamePath}/Addons/WOLFENDOOM/" \

View File

@ -48,7 +48,7 @@ export DIALOGOPTS='--no-lines --visit-items'
# Check for updates # Check for updates
check_update() { check_update() {
local url="$(git ls-remote --get-url)" local url="$(git ls-remote --get-url)"
if [[ "$url" =~ ^[[:alnum:]]+@ ]] || [[ -z "$url" ]]; then if [[ "$url" =~ ^ssh://|git@ ]] || [[ -z "$url" ]]; then
return return
fi fi
git remote update > /dev/null 2>&1 git remote update > /dev/null 2>&1
@ -72,7 +72,6 @@ check_update() {
# Check architecture compatibility # Check architecture compatibility
check_architecture() { check_architecture() {
if command -v FEXLoader &> /dev/null ; then if command -v FEXLoader &> /dev/null ; then
export fex="FEXLoader -- "
return return
fi fi
local architecture="$(uname -m)" local architecture="$(uname -m)"
@ -152,7 +151,7 @@ desktop_launcher() {
'Name=Linux game manager' 'Name=Linux game manager'
'GenericName=Linux game Manager' 'GenericName=Linux game Manager'
'Comment=Install and launch games that are accessible to the blind' 'Comment=Install and launch games that are accessible to the blind'
"Exec=${terminal} -t \"Linux Game Manager\" -e \"/usr/bin/bash -c 'pushd $(readlink -e "${0%/*}");nohup ./"${0##*/}" 2> /dev/null'\"" "Exec=${terminal} -t \"Linux Game Manager\" -e \"/usr/bin/bash -c 'nohup $(readlink -e "$0") 2> /dev/null'\""
'Terminal=false' 'Terminal=false'
'Type=Application' 'Type=Application'
'StartupNotify=false' 'StartupNotify=false'
@ -233,18 +232,19 @@ download() {
fi fi
;; ;;
"wad") "wad")
if [[ "$(file -b --mime-type "${cache}/${dest}")" == "application/octet-stream" ]]; then if [[ "$(file -b --mime-type "${cache}/${dest}")" != "application/octet-stream" ]]; then
downloadError=0 downloadError=0
fi fi
;; ;;
*) *)
# Add HTML check for other file types # Add HTML check for other file types
if file -b "${cache}/${dest}" | grep -q "HTML document" ; then if file -b "${cache}/${dest}" | grep -q "HTML document" ; then
downloadError=1 echo "File not found: \"$i\" (HTML document probably 404)"
downloadError=0
fi fi
;; ;;
esac esac
if [[ $downloadError -ne 0 ]]; then if [[ $downloadError -eq 0 ]]; then
rm -fv "${cache}/${dest}" rm -fv "${cache}/${dest}"
dialog --backtitle "Linux Game Manager" \ dialog --backtitle "Linux Game Manager" \
--infobox "Error downloading \"${dest}\". Installation cannot continue." -1 -1 --stdout --infobox "Error downloading \"${dest}\". Installation cannot continue." -1 -1 --stdout
@ -332,9 +332,19 @@ help() {
# main script # main script
add_launcher() {
local launchSettings="${game}|${*}"
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
echo "${launchSettings}" >> "${configFile}"
sort -o "${configFile}" "${configFile}"
fi
}
# Install games # Install games
game_installer() { game_installer() {
# Get list of installed games from config file
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f1)
# Create the menu of available games by reading from .install directory # Create the menu of available games by reading from .install directory
declare -a menuList declare -a menuList
# Get all .sh files from .install directory, excluding those starting with #, and sort them # Get all .sh files from .install directory, excluding those starting with #, and sort them
@ -388,66 +398,53 @@ game_installer() {
exit 1 exit 1
fi fi
fi fi
if [[ -e "${0%/*}/.launch/${game}.game" ]] && ! [[ -L "${0%/*}/.launch/${game}.sh" ]]; then
ln -srf "${0%/*}/.launch/${game}.game" "${0%/*}/.launch/${game}.sh"
fi
exit 0 exit 0
} }
# remove games # remove games
game_removal() { game_removal() {
# Initialize array for menu construction mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
mapfile -t menuList < <( if [[ ${#lines} -eq 0 ]]; then
if [[ -d ".launch" ]]; then echo "No games found."
find -L "${0%/*}/.launch" -maxdepth 1 -type f -iname "*.sh" -print0 | sort -z | xargs -0 bash -c '
for f; do
name="${f##*/}"
echo "$f"
echo "${name%.sh}"
done' _
fi
)
if [[ ${#menuList} -eq 0 ]]; then
dialog --backtitle "Linux Game Manager" \
--msgbox "No games found." -1 -1
exit 0 exit 0
fi fi
# Create the menu of installed games # Create the menu of installed games
local selectedGame declare -a menuList
selectedGame=$(dialog --backtitle "Linux Game Manager" \ for i in "${lines[@]}" ; do
menuList+=("${i#*|}" "${i%|*}")
done
menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron")
local game="$(dialog --backtitle "Audio Game Removal" \
--clear \ --clear \
--no-tags \ --no-tags \
--menu "Please select a game to delete" 0 0 0 "${menuList[@]}" --stdout) --menu "Please select a game to delete" 0 0 0 "${menuList[@]}" --stdout)"
exitCode=$? if [[ ${#game} -gt 0 ]]; then
[[ $exitCode -ne 0 ]] && exit 0 if [[ "$game" == "Donate" ]]; then
# Get the actual game file paths open_url "https://ko-fi.com/stormux"
local gameName="${selectedGame##*/}" exit 0
gameName="${gameName%.sh}" fi
local gameFile="$(readlink -f "${0%/*}/.launch/${gameName}.sh")" if [[ "$game" == "Become a Patron" ]]; then
# Get the actual installation path from the .game file open_url "https://2mb.games/product/2mb-patron/"
local gameInstallPath exit 0
gameInstallPath="$(grep -F "installPath" "$gameFile" | grep -v 'pushd' | head -n1)" fi
gameInstallPath="${gameInstallPath#*/}"
gameInstallPath="${installPath}/${gameInstallPath%/*}"
if [[ -z "$gameInstallPath" ]] || [[ "${gameInstallPath%%/}" == "$installPath" ]]; then
# No install path found, just remove from list
dialog --backtitle "Linux Game Manager" \
--yesno "This will remove the game from your game list, but will not remove any files. Do you want to continue?" -1 -1 || exit 0
# Remove only the .sh symlink
rm -fv "${0%/*}/.launch/${gameName}.sh" | \
dialog --backtitle "Linux Game Manager" \
--progressbox "Removing game from list..." -1 -1
else
# Found install path, can remove game files
dialog --backtitle "Linux Game Manager" \
--yesno "This will remove the directory \"${gameInstallPath}\" and all of its contents. Do you want to continue?" -1 -1 || exit 0
# Remove the game directory and symlink
{ rm -rfv "${gameInstallPath}"
rm -fv "${0%/*}/.launch/${gameName}.sh";
} | dialog --backtitle "Linux Game Manager" \
--progressbox "Removing game..." -1 -1
fi fi
local launcherPath="$(readlink -f "$0")"
launcherPath="${launcherPath%/*}"
local noRemove="no"
if [[ "${game%/*}" =~ ^$launcherPath ]] ; then
# The launcher is actually a script under lgm, do not remove.
noRemove="yes"
dialog --backtitle "Linux Game Manager" \
--yesno "This will remove the game from your game list, but will not remove any files. Do you want to continue?." -1 -1 --stdout || exit 0
else
dialog --backtitle "Linux Game Manager" \
--yesno "This will remove the directory \"${game%/*}\" and all of its contents. Do you want to continue?." -1 -1 --stdout || exit 0
fi
export noRemove
{ [ "$noRemove" == "no" ] && rm -rfv "${game%/*}";
sed -i "/${game//\//\\/}/d" "$configFile"; } | dialog --backtitle "Linux Game Manager" --progressbox "Removing game..." -1 -1
exit 0 exit 0
} }
@ -488,25 +485,20 @@ game_update() {
# launch games that are installed # launch games that are installed
game_launcher() { game_launcher() {
# Initialize array for menu construction mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
mapfile -t menuList < <( # Create the menu of installed games
if [[ -d ".launch" ]]; then declare -a menuList
find -L "${0%/*}/.launch" -maxdepth 1 -type f -iname "*.sh" -print0 | sort -z | xargs -0 bash -c ' for i in "${lines[@]}" ; do
for f; do menuList+=("${i#*|}" "${i%|*}")
[[ $(head -n1 "$f") =~ ^#$ ]] && continue done
name="${f##*/}" # Web based games and donation
echo "$f" menuList+=("Aliens" "Aliens")
echo "${name%.sh}" menuList+=("Cacophony" "Cacophony")
done' _ menuList+=("Battle Weary" "Battle Weary")
fi menuList+=("QuentinC Play Room" "QuentinC Play Room")
) menuList+=("Trigaea" "Trigaea")
if [[ ${#menuList} -eq 0 ]]; then menuList+=("Donate" "Donate")
dialog --backtitle "Linux Game Manager" \ game="$(dialog --backtitle "Linux Game Launcher" \
--msgbox "No games found." 5 20
exit 0
fi
# Create the menu of all games
selectedGame="$(dialog --backtitle "Linux Game Launcher" \
--clear \ --clear \
--no-tags \ --no-tags \
--menu "Please select a game to play" 0 0 0 "${menuList[@]}" --stdout)" --menu "Please select a game to play" 0 0 0 "${menuList[@]}" --stdout)"
@ -514,32 +506,59 @@ game_launcher() {
if [[ $menuCode -eq 1 ]]; then if [[ $menuCode -eq 1 ]]; then
exit 0 exit 0
fi fi
. "${selectedGame}" # Remove any trailing | from game variable.
game="${game%|}"
case "${game}" in
"Aliens")
open_url "https://files.jantrid.net/aliens/"
;;
"Battle Weary")
open_url "https://lonespelunker.itch.io/battle-weary"
;;
"Cacophony")
open_url "https://tianmaru.itch.io/cacophony"
;;
"QuentinC Play Room")
open_url "https://qcsalon.net/"
;;
"Trigaea")
open_url "https://ryngm.itch.io/trigaea"
;;
"Donate")
open_url "https://ko-fi.com/stormux"
;;
*".tin")
git -C "${game%/*}" pull | \
dialog --progressbox "Checking for updates, please wait..." -1 -1
if [[ -n "${COLORTERM}" ]]; then
terminal_emulator tt++ ${game##*/}
else
pushd "${game%/*}"
exec tt++ ${game##*/}
fi
;;
*"main.py")
pushd "${game%/*}"
git pull -q | dialog --progressbox "Checking for updates, please wait..." -1 -1
python3 ${game}
;;
*)
pushd "${game%/*}"
if file "${game##*/}" | grep -q "ELF.*x86-64"; then
if [[ "$(uname -m)" != "x86_64" ]]; then
exec FEXLoader -- ${game}
else
exec ${game}
fi
else
exec ${game}
fi
;;
esac
exit 0 exit 0
} }
migrate_launcher() {
# Check if config file exists
[[ -f "${configFile}" ]] || return
# Process each line of the config file
while IFS= read -r line; do
# Skip empty lines
[[ -z "${line}" ]] && continue
# Extract game name and path
gameName="${line%|*}"
# Create launcher script if it doesn't exist
if [[ ! -L "${0%/*}/.launch/${gameName}.sh" ]]; then
ln -srf "${0%/*}/.launch/${gameName}.game" "${0%/*}/.launch/${gameName}.sh"
fi
done < <(sed '/^$/d' "${configFile}")
# Move the old config file and notify user
mv "${configFile}" "${configFile}.bak"
dialog --backtitle "Linux Game manager" --msgbox \
"Games have been converted to the new launch system.\nThe old game launch information has been moved to ${configFile}.bak\nIf everything works like you expect, feel free to delete ${configFile}" -1 -1
}
# If display isn't set assume we are launching from console and an X environment is running using display :0 # If display isn't set assume we are launching from console and an X environment is running using display :0
# Warning, launching games from console is not recommended. # Warning, launching games from console is not recommended.
if [[ -z "$DISPLAY" ]]; then if [[ -z "$DISPLAY" ]]; then
@ -564,7 +583,6 @@ export spd_rate="${spd_rate:+ -r ${spd_rate}}"
export spd_voice="${spd_voice:+ -y ${spd_voice}}" export spd_voice="${spd_voice:+ -y ${spd_voice}}"
export spd_volume="${spd_volume:+ -i ${spd_volume}}" export spd_volume="${spd_volume:+ -i ${spd_volume}}"
mkdir -p "${installPath}" mkdir -p "${installPath}"
migrate_launcher
# Check for required packages # Check for required packages