2024-03-14 11:31:36 -07:00
#!/usr/bin/env bash
2023-08-12 11:47:52 -05:00
set -x # activate debugging (execution shown)
2023-08-12 13:25:08 -05:00
set -o pipefail # capture error from pipes
2023-05-04 16:30:31 -07:00
2023-08-12 14:06:36 -05:00
# ENVIRONMENT VARIABLES
# $USER
2024-08-04 02:05:02 -07:00
logged_in_user = $( logname 2>/dev/null || whoami)
2023-08-12 14:06:36 -05:00
2024-08-04 02:05:02 -07:00
# DBUS
2024-02-28 21:13:41 -08:00
# Add the DBUS_SESSION_BUS_ADDRESS environment variable
2024-08-04 02:05:02 -07:00
if [ [ -z " $DBUS_SESSION_BUS_ADDRESS " ] ] ; then
eval $( dbus-launch --sh-syntax)
export DBUS_SESSION_BUS_ADDRESS
fi
2024-08-02 03:26:30 -07:00
export LD_LIBRARY_PATH = $( pwd )
2024-02-28 21:13:41 -08:00
2023-08-12 14:06:36 -05:00
# $UID
2024-07-29 17:17:20 -07:00
logged_in_uid = $( id -u " ${ logged_in_user } " )
2023-08-12 14:06:36 -05:00
# $HOME
logged_in_home = $( eval echo " ~ ${ logged_in_user } " )
2025-01-12 00:42:39 -08:00
# Log
2024-08-06 20:44:47 +02:00
download_dir = $( eval echo ~$user ) /Downloads/NonSteamLaunchersInstallation
log_file = $( eval echo ~$user ) /Downloads/NonSteamLaunchers-install.log
2024-08-04 02:05:02 -07:00
# Remove existing log file if it exists
if [ [ -f $log_file ] ] ; then
rm $log_file
2024-07-29 16:52:08 -07:00
fi
2024-08-04 02:05:02 -07:00
# Redirect all output to the log file
2025-01-12 00:42:39 -08:00
exec > >( tee -a " $log_file " ) 2>& 1
2023-08-12 14:06:36 -05:00
# Version number (major.minor)
2025-01-28 04:08:16 -08:00
version = v4.0.1
2023-05-04 16:30:31 -07:00
2023-08-12 14:06:36 -05:00
# Check repo releases via GitHub API then display current stable version
2023-05-02 21:53:41 -07:00
check_for_updates( ) {
local api_url = "https://api.github.com/repos/moraroy/NonSteamLaunchers-On-Steam-Deck/releases/latest"
local latest_version = $( curl -s " $api_url " | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' )
if [ " $version " != " $latest_version " ] ; then
2024-08-02 03:26:30 -07:00
zenity --info --text= " A new version is available: $latest_version \nPlease download it from GitHub. " --width= 200 --height= 100 --timeout= 5
2023-05-02 21:53:41 -07:00
else
2023-05-06 15:06:33 -07:00
echo " You are already running the latest version: $version "
2023-05-02 21:53:41 -07:00
fi
}
2025-01-12 00:42:39 -08:00
# Check if Zenity is installed
if ! command -v zenity & > /dev/null; then
echo "Zenity is not installed. Installing Zenity..."
if command -v apt-get & > /dev/null; then
sudo apt-get install -y zenity
elif command -v dnf & > /dev/null; then
sudo dnf install -y zenity
elif command -v pacman & > /dev/null; then
sudo pacman -S --noconfirm zenity
else
echo "Unknown package manager. Please install Zenity manually."
exit 1
fi
fi
# Check if Steam is installed (non-flatpak)
if ! command -v steam & > /dev/null; then
echo "Steam is not installed. Please install the non-flatpak version of Steam."
# Provide instructions for different package managers:
if command -v apt-get & > /dev/null; then
echo "To install Steam on a Debian-based system (e.g., Ubuntu, Pop!_OS), run:"
echo " sudo apt update && sudo apt install steam"
elif command -v dnf & > /dev/null; then
echo "To install Steam on a Fedora-based system, run:"
echo " sudo dnf install steam"
elif command -v pacman & > /dev/null; then
echo "To install Steam on an Arch-based system (e.g., ChimeraOS), run:"
echo " sudo pacman -S steam"
else
echo "Unknown package manager. Please install Steam manually."
exit 1
fi
fi
2024-01-20 23:43:33 -08:00
2025-01-12 00:42:39 -08:00
# Check if wget is installed
if ! command -v wget & > /dev/null; then
echo "wget is not installed. Installing wget..."
if command -v apt-get & > /dev/null; then
sudo apt-get install -y wget
elif command -v dnf & > /dev/null; then
sudo dnf install -y wget
elif command -v pacman & > /dev/null; then
sudo pacman -S --noconfirm wget
else
echo "Unknown package manager. Please install wget manually."
exit 1
fi
fi
# Check if curl is installed
if ! command -v curl & > /dev/null; then
echo "curl is not installed. Installing curl..."
if command -v apt-get & > /dev/null; then
sudo apt-get install -y curl
elif command -v dnf & > /dev/null; then
sudo dnf install -y curl
elif command -v pacman & > /dev/null; then
sudo pacman -S --noconfirm curl
else
echo "Unknown package manager. Please install curl manually."
exit 1
fi
fi
2024-08-02 03:26:30 -07:00
2024-01-26 19:13:10 -08:00
# Get the command line arguments
args = ( " $@ " )
2025-01-12 00:42:39 -08:00
echo " Arguments passed: ${ args [@] } " # Debugging the passed arguments
2024-03-14 13:40:32 +00:00
deckyplugin = false
installchrome = false
2024-03-14 10:57:29 -07:00
2024-01-30 00:51:01 -08:00
for arg in " ${ args [@] } " ; do
2024-03-14 10:57:29 -07:00
if [ " $arg " = "DeckyPlugin" ] ; then
deckyplugin = true
elif [ " $arg " = "Chrome" ] ; then
installchrome = true
fi
2025-01-12 00:42:39 -08:00
done
2024-03-14 10:57:29 -07:00
2024-03-14 12:28:10 -07:00
# Check if the user wants to install Chrome
if $installchrome ; then
2024-05-06 01:00:12 -07:00
# Check if Google Chrome is already installed for the current user
if flatpak list --user | grep com.google.Chrome & > /dev/null; then
echo "Google Chrome is already installed for the current user"
2024-03-14 12:28:10 -07:00
flatpak --user override --filesystem= /run/udev:ro com.google.Chrome
else
2024-05-06 01:00:12 -07:00
# Check if the Flathub repository exists for the current user
if flatpak remote-list --user | grep flathub & > /dev/null; then
echo "Flathub repository exists for the current user"
else
# Add the Flathub repository for the current user
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
fi
2024-03-14 12:28:10 -07:00
2024-05-06 01:00:12 -07:00
# Install Google Chrome for the current user
flatpak install --user flathub com.google.Chrome -y
2024-03-14 12:28:10 -07:00
# Run the flatpak --user override command
flatpak --user override --filesystem= /run/udev:ro com.google.Chrome
fi
fi
2025-01-12 00:42:39 -08:00
2024-03-14 11:55:38 -07:00
if [ " ${ deckyplugin } " = false ] ; then
#Download Modules
# Define the repository and the folders to clone
repo_url = 'https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck/archive/refs/heads/main.zip'
2024-06-30 18:33:29 -07:00
folders_to_clone = ( 'requests' 'urllib3' 'steamgrid' 'vdf' 'charset_normalizer' )
2024-03-14 11:55:38 -07:00
# Define the parent folder
logged_in_home = $( eval echo ~$user )
parent_folder = " ${ logged_in_home } /.config/systemd/user/Modules "
mkdir -p " ${ parent_folder } "
# Check if the folders already exist
folders_exist = true
for folder in " ${ folders_to_clone [@] } " ; do
if [ ! -d " ${ parent_folder } / ${ folder } " ] ; then
folders_exist = false
break
fi
done
if [ " ${ folders_exist } " = false ] ; then
# Download the repository as a zip file
zip_file_path = " ${ parent_folder } /repo.zip "
2024-04-25 03:33:02 -07:00
wget -O " ${ zip_file_path } " " ${ repo_url } " || { echo 'Download failed with error code: $?' ; exit 1; }
2024-03-14 11:55:38 -07:00
# Extract the zip file
2024-04-25 03:33:02 -07:00
unzip -d " ${ parent_folder } " " ${ zip_file_path } " || { echo 'Unzip failed with error code: $?' ; exit 1; }
2024-03-14 11:55:38 -07:00
# Move the folders to the parent directory and delete the unnecessary files
for folder in " ${ folders_to_clone [@] } " ; do
destination_path = " ${ parent_folder } / ${ folder } "
source_path = " ${ parent_folder } /NonSteamLaunchers-On-Steam-Deck-main/Modules/ ${ folder } "
if [ ! -d " ${ destination_path } " ] ; then
2024-04-25 03:33:02 -07:00
mv " ${ source_path } " " ${ destination_path } " || { echo 'Move failed with error code: $?' ; exit 1; }
2024-03-14 11:55:38 -07:00
fi
done
# Delete the downloaded zip file and the extracted repository folder
rm " ${ zip_file_path } "
rm -r " ${ parent_folder } /NonSteamLaunchers-On-Steam-Deck-main "
fi
#End of Download Modules
2024-08-02 03:39:40 -07:00
#Service File rough update
rm -rf ${ logged_in_home } /.config/systemd/user/NSLGameScanner.py
# Delete the service file
rm -rf ${ logged_in_home } /.config/systemd/user/nslgamescanner.service
# Remove the symlink
unlink ${ logged_in_home } /.config/systemd/user/default.target.wants/nslgamescanner.service
# Reload the systemd user instance
systemctl --user daemon-reload
# Define your Python script path
python_script_path = " ${ logged_in_home } /.config/systemd/user/NSLGameScanner.py "
# Define your GitHub link
github_link = "https://raw.githubusercontent.com/moraroy/NonSteamLaunchers-On-Steam-Deck/main/NSLGameScanner.py"
curl -o $python_script_path $github_link
# Define the path to the env_vars file
env_vars = " ${ logged_in_home } /.config/systemd/user/env_vars "
#End of Rough Update of the .py
2024-07-30 05:35:25 -07:00
2024-03-06 09:40:33 +00:00
if [ -f " $env_vars " ] ; then
echo "env_vars file found. Running the .py file."
live = "and is LIVE."
else
echo "env_vars file not found. Not Running the .py file."
live = "and is not LIVE."
fi
2024-08-02 03:39:40 -07:00
# Check if "Decky Plugin" is one of the arguments
decky_plugin = false
for arg in " ${ args [@] } " ; do
if [ " $arg " = "Decky Plugin" ] ; then
decky_plugin = true
break
fi
done
# If the Decky Plugin argument is set, check if the env_vars file exists
if [ " $decky_plugin " = true ] ; then
if [ -f " $env_vars " ] ; then
# If the env_vars file exists, run the .py file and continue with the script
echo "Decky Plugin argument set and env_vars file found. Running the .py file..."
python3 $python_script_path
echo "Python script ran. Continuing with the script..."
else
# If the env_vars file does not exist, exit the script
echo "Decky Plugin argument set but env_vars file not found. Exiting the script."
exit 0
fi
else
# If the Decky Plugin argument is not set, continue with the script
echo "Decky Plugin argument not set. Continuing with the script..."
python3 $python_script_path
echo "env_vars file found. Running the .py file."
live = "and is LIVE."
fi
2024-03-14 11:55:38 -07:00
fi
2024-01-26 19:36:10 -08:00
2024-01-20 23:43:33 -08:00
2024-01-20 17:57:18 -08:00
2023-06-27 23:03:55 -07:00
# Check if any command line arguments were provided
if [ ${# args [@] } -eq 0 ] ; then
# No command line arguments were provided, so check for updates and display the zenity window if necessary
check_for_updates
fi
2023-06-07 02:26:50 -07:00
# Check if the NonSteamLaunchersInstallation subfolder exists in the Downloads folder
2023-08-12 14:02:52 -05:00
if [ -d " $download_dir " ] ; then
2023-06-07 02:26:50 -07:00
# Delete the NonSteamLaunchersInstallation subfolder
2023-08-12 14:02:52 -05:00
rm -rf " $download_dir "
2023-06-07 02:26:50 -07:00
echo "Deleted NonSteamLaunchersInstallation subfolder"
else
echo "NonSteamLaunchersInstallation subfolder does not exist"
fi
2023-05-02 21:53:41 -07:00
2023-08-12 11:47:52 -05:00
# Game Launchers
2023-05-02 21:53:41 -07:00
2024-06-22 05:28:03 -07:00
# TODO: parameterize hard-coded client versions (cf. 'app-26.1.9')
2023-05-02 05:52:53 -07:00
# Set the paths to the launcher executables
2023-08-12 12:11:01 -05:00
epic_games_launcher_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe "
epic_games_launcher_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/EpicGamesLauncher/pfx/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe "
gog_galaxy_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe "
gog_galaxy_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/pfx/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe "
uplay_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/upc.exe "
uplay_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/UplayLauncher/pfx/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/upc.exe "
battlenet_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe "
battlenet_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/Battle.netLauncher/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe "
eaapp_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Electronic Arts/EA Desktop/EA Desktop/EADesktop.exe "
eaapp_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/Program Files/Electronic Arts/EA Desktop/EA Desktop/EADesktop.exe "
amazongames_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/Amazon Games/App/Amazon Games.exe "
amazongames_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher/pfx/drive_c/users/steamuser/AppData/Local/Amazon Games/App/Amazon Games.exe "
2024-06-18 19:06:41 -07:00
itchio_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/itch/app-26.1.9/itch.exe "
itchio_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/itchioLauncher/pfx/drive_c/users/steamuser/AppData/Local/itch/app-26.1.9/itch.exe "
2023-08-12 12:11:01 -05:00
legacygames_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher/Legacy Games Launcher.exe "
legacygames_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher/Legacy Games Launcher.exe "
humblegames_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Humble App/Humble App.exe "
humblegames_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher/pfx/drive_c/Program Files/Humble App/Humble App.exe "
indiegala_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/IGClient/IGClient.exe "
indiegala_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/IndieGalaLauncher/pfx/drive_c/Program Files/IGClient/IGClient.exe "
rockstar_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Rockstar Games/Launcher/Launcher.exe "
rockstar_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/RockstarGamesLauncher/pfx/drive_c/Program Files/Rockstar Games/Launcher/Launcher.exe "
glyph_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Glyph/GlyphClient.exe "
glyph_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GlyphLauncher/pfx/drive_c/Program Files (x86)/Glyph/GlyphClient.exe "
psplus_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/PlayStationPlus/pspluslauncher.exe "
psplus_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/PlaystationPlusLauncher/pfx/drive_c/Program Files (x86)/PlayStationPlus/pspluslauncher.exe "
2023-11-24 14:52:03 +00:00
vkplay_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/GameCenter/GameCenter.exe "
vkplay_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/VKPlayLauncher/pfx/drive_c/users/steamuser/AppData/Local/GameCenter/GameCenter.exe "
2024-07-03 05:00:44 -07:00
hoyoplay_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/HoYoPlay/launcher.exe "
hoyoplay_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HoYoPlayLauncher/pfx/drive_c/Program Files/HoYoPlay/launcher.exe "
2024-08-02 03:26:30 -07:00
nexon_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Nexon/Nexon Launcher/nexon_launcher.exe "
nexon_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NexonLauncher/pfx/drive_c/Program Files (x86)/Nexon/Nexon Launcher/nexon_launcher.exe "
2025-01-28 03:12:24 -08:00
gamejolt_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/GameJoltClient/GameJoltClient.exe "
gamejolt_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GameJoltLauncher/pfx/drive_c/users/steamuser/AppData/Local/GameJoltClient/GameJoltClient.exe "
artixgame_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Artix Game Launcher/Artix Game Launcher.exe "
artixgame_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ArtixGameLauncher/pfx/drive_c/Program Files/Artix Game Launcher/Artix Game Launcher.exe "
arc_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Arc/Arc.exe "
arc_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ARCLauncher/pfx/drive_c/Program Files (x86)/Arc/Arc.exe "
2023-05-04 16:30:31 -07:00
2023-08-12 11:47:52 -05:00
# Chrome File Path
# chrome_installpath="/app/bin/chrome"
2023-07-12 01:21:19 -07:00
chrome_path = "/usr/bin/flatpak"
chrome_startdir = "\"/usr/bin\""
2024-02-08 16:24:28 -08:00
chromedirectory = " \" $chrome_path \" "
2023-06-12 04:05:58 -07:00
2024-05-02 02:44:45 -07:00
#Zenity Launcher Check Installation
2023-08-12 11:47:52 -05:00
function CheckInstallations {
2024-05-02 02:44:45 -07:00
declare -A paths1 paths2 names
2025-01-28 03:12:24 -08:00
paths1 = ( [ "epic_games" ] = " $epic_games_launcher_path1 " [ "gog_galaxy" ] = " $gog_galaxy_path1 " [ "uplay" ] = " $uplay_path1 " [ "battlenet" ] = " $battlenet_path1 " [ "eaapp" ] = " $eaapp_path1 " [ "amazongames" ] = " $amazongames_path1 " [ "itchio" ] = " $itchio_path1 " [ "legacygames" ] = " $legacygames_path1 " [ "humblegames" ] = " $humblegames_path1 " [ "indiegala" ] = " $indiegala_path1 " [ "rockstar" ] = " $rockstar_path1 " [ "glyph" ] = " $glyph_path1 " [ "psplus" ] = " $psplus_path1 " [ "vkplay" ] = " $vkplay_path1 " [ "hoyoplay" ] = " $hoyoplay_path1 " [ "nexon" ] = " $nexon_path1 " [ "gamejolt" ] = " $gamejolt_path1 " [ "artixgame" ] = " $artixgame_path1 " [ "arc" ] = " $arc_path1 " )
paths2 = ( [ "epic_games" ] = " $epic_games_launcher_path2 " [ "gog_galaxy" ] = " $gog_galaxy_path2 " [ "uplay" ] = " $uplay_path2 " [ "battlenet" ] = " $battlenet_path2 " [ "eaapp" ] = " $eaapp_path2 " [ "amazongames" ] = " $amazongames_path2 " [ "itchio" ] = " $itchio_path2 " [ "legacygames" ] = " $legacygames_path2 " [ "humblegames" ] = " $humblegames_path2 " [ "indiegala" ] = " $indiegala_path2 " [ "rockstar" ] = " $rockstar_path2 " [ "glyph" ] = " $glyph_path2 " [ "psplus" ] = " $psplus_path2 " [ "vkplay" ] = " $vkplay_path2 " [ "hoyoplay" ] = " $hoyoplay_path2 " [ "nexon" ] = " $nexon_path2 " [ "gamejolt" ] = " $gamejolt_path2 " [ "artixgame" ] = " $artixgame_path2 " [ "arc" ] = " $arc_path2 " )
names = ( [ "epic_games" ] = "Epic Games" [ "gog_galaxy" ] = "GOG Galaxy" [ "uplay" ] = "Ubisoft Connect" [ "battlenet" ] = "Battle.net" [ "eaapp" ] = "EA App" [ "amazongames" ] = "Amazon Games" [ "itchio" ] = "itch.io" [ "legacygames" ] = "Legacy Games" [ "humblegames" ] = "Humble Games Collection" [ "indiegala" ] = "IndieGala" [ "rockstar" ] = "Rockstar Games Launcher" [ "glyph" ] = "Glyph Launcher" [ "psplus" ] = "Playstation Plus" [ "vkplay" ] = "VK Play" [ "hoyoplay" ] = "HoYoPlay" [ "nexon" ] = "Nexon Launcher" [ "gamejolt" ] = "Game Jolt Client" [ "artixgame" ] = "Artix Game Launcher" [ "arc" ] = "ARC Launcher" )
2024-05-02 02:44:45 -07:00
for launcher in " ${ !names[@] } " ; do
if [ [ -f " ${ paths1 [ $launcher ] } " ] ] ; then
declare -g " ${ launcher } _value " = "FALSE"
declare -g " ${ launcher } _text " = " ${ names [ $launcher ] } ===> ${ paths1 [ $launcher ] } "
elif [ [ -f " ${ paths2 [ $launcher ] } " ] ] ; then
declare -g " ${ launcher } _value " = "FALSE"
declare -g " ${ launcher } _text " = " ${ names [ $launcher ] } ===> ${ paths2 [ $launcher ] } "
else
declare -g " ${ launcher } _value " = "FALSE"
declare -g " ${ launcher } _text " = " ${ names [ $launcher ] } "
fi
done
}
2023-05-09 03:50:48 -07:00
2023-08-12 11:47:52 -05:00
# Verify launchers are installed
2023-05-07 00:39:25 -07:00
function CheckInstallationDirectory {
2024-05-02 02:44:45 -07:00
declare -A paths names
2025-01-28 03:12:24 -08:00
paths = ( [ "nonsteamlauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers " [ "epicgameslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/EpicGamesLauncher " [ "goggalaxylauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher " [ "uplaylauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/UplayLauncher " [ "battlenetlauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/Battle.netLauncher " [ "eaapplauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher " [ "amazongameslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher " [ "itchiolauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/itchioLauncher " [ "legacygameslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher " [ "humblegameslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher " [ "indiegalalauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/IndieGalaLauncher " [ "rockstargameslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/RockstarGamesLauncher " [ "glyphlauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GlyphLauncher " [ "pspluslauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/PlaystationPlusLauncher " [ "vkplaylauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/VKPlayLauncher " [ "hoyoplaylauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HoYoPlayLauncher " [ "nexonlauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NexonLauncher " [ "gamejoltlauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GameJoltLauncher " [ "artixgamelauncher" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ArtixGameLauncher " [ "arc" ] = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ARCLauncher " )
names = ( [ "nonsteamlauncher" ] = "NonSteamLaunchers" [ "epicgameslauncher" ] = "EpicGamesLauncher" [ "goggalaxylauncher" ] = "GogGalaxyLauncher" [ "uplaylauncher" ] = "UplayLauncher" [ "battlenetlauncher" ] = "Battle.netLauncher" [ "eaapplauncher" ] = "TheEAappLauncher" [ "amazongameslauncher" ] = "AmazonGamesLauncher" [ "itchiolauncher" ] = "itchioLauncher" [ "legacygameslauncher" ] = "LegacyGamesLauncher" [ "humblegameslauncher" ] = "HumbleGamesLauncher" [ "indiegalalauncher" ] = "IndieGalaLauncher" [ "rockstargameslauncher" ] = "RockstarGamesLauncher" [ "glyphlauncher" ] = "GlyphLauncher" [ "pspluslauncher" ] = "PlaystationPlusLauncher" [ "vkplaylauncher" ] = "VKPlayLauncher" [ "hoyoplaylauncher" ] = "HoYoPlayLauncher" [ "nexonlauncher" ] = "NexonLauncher" [ "gamejoltlauncher" ] = "GameJoltLauncher" [ "artixgamelauncher" ] = "ArtixGameLauncher" [ "arc" ] = "ARCLauncher" )
2024-05-02 02:44:45 -07:00
for launcher in " ${ !names[@] } " ; do
if [ [ -d " ${ paths [ $launcher ] } " ] ] ; then
declare -g " ${ launcher } _move_value " = "TRUE"
else
declare -g " ${ launcher } _move_value " = "FALSE"
fi
done
}
2024-01-17 04:10:45 -08:00
#Get SD Card Path
get_sd_path( ) {
# This assumes that the SD card is mounted under /run/media/deck/
local sd_path = $( df | grep '/run/media/deck/' | awk '{print $6}' )
echo $sd_path
}
2024-05-15 02:50:17 -07:00
# Function For Updating Proton-GE
2024-05-05 01:29:52 -07:00
function download_ge_proton( ) {
echo "Downloading GE-Proton using the GitHub API"
2024-11-04 06:10:57 -08:00
cd " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation " || { echo "Failed to change directory. Exiting." ; exit 1; }
# Download tarball
tarball_url = $( curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .tar.gz)
if [ -z " $tarball_url " ] ; then
echo "Failed to get tarball URL. Exiting."
exit 1
fi
curl --retry 5 --retry-delay 0 --retry-max-time 60 -sLOJ " $tarball_url "
2024-05-15 02:50:17 -07:00
if [ $? -ne 0 ] ; then
2024-11-04 06:10:57 -08:00
echo "Curl failed to download tarball. Exiting."
exit 1
fi
# Download checksum
checksum_url = $( curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .sha512sum)
if [ -z " $checksum_url " ] ; then
echo "Failed to get checksum URL. Exiting."
2024-05-15 02:50:17 -07:00
exit 1
fi
2024-11-04 06:10:57 -08:00
curl --retry 5 --retry-delay 0 --retry-max-time 60 -sLOJ " $checksum_url "
2024-05-15 02:50:17 -07:00
if [ $? -ne 0 ] ; then
2024-11-04 06:10:57 -08:00
echo "Curl failed to download checksum. Exiting."
2024-05-15 02:50:17 -07:00
exit 1
fi
2024-11-04 06:10:57 -08:00
# Verify checksum
2024-05-05 01:29:52 -07:00
sha512sum -c ./*.sha512sum
2024-05-15 02:50:17 -07:00
if [ $? -ne 0 ] ; then
echo "Checksum verification failed. Exiting."
exit 1
fi
2024-11-04 06:10:57 -08:00
# Extract tarball
2024-05-05 01:29:52 -07:00
tar -xf GE-Proton*.tar.gz -C " ${ logged_in_home } /.steam/root/compatibilitytools.d/ "
2024-05-15 02:50:17 -07:00
if [ $? -ne 0 ] ; then
echo "Tar extraction failed. Exiting."
exit 1
fi
2024-11-04 06:10:57 -08:00
2024-12-03 15:52:43 +01:00
proton_dir = $( find -L " ${ logged_in_home } /.steam/root/compatibilitytools.d " -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
2024-05-05 01:29:52 -07:00
echo "All done :)"
}
function update_proton( ) {
echo "0"
2024-05-15 02:50:17 -07:00
echo "# Detecting, Updating and Installing GE-Proton...please wait..."
2024-05-05 01:29:52 -07:00
2024-11-04 06:10:57 -08:00
# Check if compatibilitytools.d exists and create it if it doesn't
2024-05-05 01:29:52 -07:00
if [ ! -d " ${ logged_in_home } /.steam/root/compatibilitytools.d " ] ; then
2024-11-04 06:10:57 -08:00
mkdir -p " ${ logged_in_home } /.steam/root/compatibilitytools.d " || { echo "Failed to create directory. Exiting." ; exit 1; }
2024-05-05 01:29:52 -07:00
fi
# Create NonSteamLaunchersInstallation subfolder in Downloads folder
2024-11-04 06:10:57 -08:00
mkdir -p " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation " || { echo "Failed to create directory. Exiting." ; exit 1; }
2024-05-05 01:29:52 -07:00
# Set the path to the Proton directory
2024-12-03 15:52:43 +01:00
proton_dir = $( find -L " ${ logged_in_home } /.steam/root/compatibilitytools.d " -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
2024-05-05 01:29:52 -07:00
# Check if GE-Proton is installed
if [ -z " $proton_dir " ] ; then
download_ge_proton
else
# Check if installed version is the latest version
2024-11-04 06:10:57 -08:00
installed_version = $( basename " $proton_dir " | sed 's/GE-Proton-//' )
2024-05-05 01:29:52 -07:00
latest_version = $( curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep tag_name | cut -d '"' -f 4)
if [ " $installed_version " != " $latest_version " ] ; then
download_ge_proton
fi
fi
}
2024-11-04 06:10:57 -08:00
# Function For Updating UMU Launcher
function download_umu_launcher( ) {
echo "Downloading UMU Launcher using the GitHub API"
cd " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation " || { echo "Failed to change directory. Exiting." ; exit 1; }
2024-12-14 01:54:13 -08:00
# Get the download URL for Zipapp.zip
2024-11-04 06:10:57 -08:00
zip_url = $( curl -s https://api.github.com/repos/Open-Wine-Components/umu-launcher/releases/latest | grep browser_download_url | cut -d\" -f4 | grep Zipapp.zip)
if [ -z " $zip_url " ] ; then
echo "Failed to get zip URL. Exiting."
exit 1
fi
2024-12-14 01:54:13 -08:00
# Download the zip file
2024-11-04 06:10:57 -08:00
curl --retry 5 --retry-delay 0 --retry-max-time 60 -sLOJ " $zip_url "
if [ $? -ne 0 ] ; then
echo "Curl failed to download zip file. Exiting."
exit 1
fi
# Ensure the bin directory exists
if [ ! -d " ${ logged_in_home } /bin " ] ; then
mkdir -p " ${ logged_in_home } /bin " || { echo "Failed to create bin directory. Exiting." ; exit 1; }
fi
2024-12-14 01:54:13 -08:00
# Extract the Zipapp.zip file
2024-11-04 06:10:57 -08:00
unzip -o Zipapp.zip -d " ${ logged_in_home } /bin/ "
if [ $? -ne 0 ] ; then
echo "Zip extraction failed. Exiting."
exit 1
fi
2024-12-14 01:54:13 -08:00
# Check if the extracted .tar file exists in the bin directory and extract it
tar_file = " ${ logged_in_home } /bin/ $( basename Zipapp.zip .zip) .tar "
if [ -f " $tar_file " ] ; then
echo " Found .tar file: $tar_file "
tar -xf " $tar_file " -C " ${ logged_in_home } /bin/ "
if [ $? -ne 0 ] ; then
echo "Tar extraction failed. Exiting."
exit 1
fi
# Remove the .tar file after extraction
rm -f " $tar_file "
fi
2024-11-04 06:10:57 -08:00
# Make all extracted files executable
find " ${ logged_in_home } /bin/ " -type f -exec chmod +x { } \;
echo "UMU Launcher update completed :)"
}
2024-12-14 01:54:13 -08:00
2024-11-04 06:10:57 -08:00
function update_umu_launcher( ) {
echo "0"
echo "# Detecting, Updating and Installing UMU Launcher...please wait..."
# Create NonSteamLaunchersInstallation subfolder in Downloads folder
mkdir -p " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation " || { echo "Failed to create directory. Exiting." ; exit 1; }
# Set the path to the UMU Launcher directory
umu_dir = " ${ logged_in_home } /bin/umu-launcher "
# Check if UMU Launcher is installed
if [ ! -d " $umu_dir " ] ; then
download_umu_launcher
else
# Check if installed version is the latest version
installed_version = $( cat " $umu_dir /version.txt " )
latest_version = $( curl -s https://api.github.com/repos/Open-Wine-Components/umu-launcher/releases/latest | grep tag_name | cut -d '"' -f 4)
if [ " $installed_version " != " $latest_version " ] ; then
download_umu_launcher
fi
fi
}
2024-05-05 01:29:52 -07:00
2024-06-28 19:05:32 -07:00
2023-05-07 00:39:25 -07:00
# Check which app IDs are installed
CheckInstallations
CheckInstallationDirectory
2024-10-25 03:28:42 -07:00
rm -rf ${ logged_in_home } /.config/systemd/user/nslgamescanner.service
unlink ${ logged_in_home } /.config/systemd/user/default.target.wants/nslgamescanner.service
systemctl --user daemon-reload
2023-06-27 23:03:55 -07:00
# Get the command line arguments
args = ( " $@ " )
2023-07-12 01:21:19 -07:00
# Initialize an array to store the custom websites
custom_websites = ( )
2023-08-09 01:09:45 -07:00
# Initialize a variable to store whether the "Separate App IDs" option is selected or not
separate_app_ids = false
2023-06-27 23:03:55 -07:00
# Check if any command line arguments were provided
if [ ${# args [@] } -eq 0 ] ; then
2023-07-31 19:43:15 -07:00
# No command line arguments were provided, so display the main zenity window
2025-01-28 03:12:24 -08:00
selected_launchers = $( zenity --list --text= "Which launchers do you want to download and install?" --checklist --column= " $version " --column= " Default = one App ID Installation, One Prefix, NonSteamLaunchers - updated the NSLGameScanner.py $live " FALSE "SEPARATE APP IDS - CHECK THIS TO SEPARATE YOUR PREFIX" $epic_games_value " $epic_games_text " $gog_galaxy_value " $gog_galaxy_text " $uplay_value " $uplay_text " $battlenet_value " $battlenet_text " $amazongames_value " $amazongames_text " $eaapp_value " $eaapp_text " $legacygames_value " $legacygames_text " $itchio_value " $itchio_text " $humblegames_value " $humblegames_text " $indiegala_value " $indiegala_text " $rockstar_value " $rockstar_text " $glyph_value " $glyph_text " $psplus_value " $psplus_text " $vkplay_value " $vkplay_text " $hoyoplay_value " $hoyoplay_text " $nexon_value " $nexon_text " $gamejolt_value " $gamejolt_text " $artixgame_value " $artixgame_text " $arc_value " $arc_text " FALSE "RemotePlayWhatever" FALSE "Fortnite" FALSE "Venge" FALSE "Xbox Game Pass" FALSE "GeForce Now" FALSE "Amazon Luna" FALSE "Stim.io" FALSE "Boosteroid Cloud Gaming" FALSE "Rocketcrab" FALSE "WebRcade" FALSE "WebRcade Editor" FALSE "WatchParty" FALSE "Netflix" FALSE "Hulu" FALSE "Disney+" FALSE "Amazon Prime Video" FALSE "Youtube" FALSE "Twitch" FALSE "Apple TV+" FALSE "Crunchyroll" FALSE "Plex" --width= 800 --height= 740 --extra-button= "Uninstall" --extra-button= "Stop NSLGameScanner" --extra-button= "Start Fresh" --extra-button= "Move to SD Card" --extra-button= "Update Proton-GE" )
2023-07-12 01:21:19 -07:00
2024-10-25 03:28:42 -07:00
2023-07-31 19:43:15 -07:00
# Check if the user clicked the 'Cancel' button or selected one of the extra buttons
2024-02-06 15:01:18 -08:00
if [ $? -eq 1 ] || [ [ $selected_launchers = = "Start Fresh" ] ] || [ [ $selected_launchers = = "Move to SD Card" ] ] || [ [ $selected_launchers = = "Uninstall" ] ] ; then
2023-07-31 19:43:15 -07:00
# The user clicked the 'Cancel' button or selected one of the extra buttons, so skip prompting for custom websites
custom_websites = ( )
else
# The user did not click the 'Cancel' button or select one of the extra buttons, so prompt for custom websites
custom_websites_str = $( zenity --entry --title= "Shortcut Creator" --text= "Enter custom websites that you want shortcuts for, separated by commas. Leave blank and press ok if you dont want any. E.g. myspace.com, limewire.com, my.screenname.aol.com" )
# Split the custom_websites_str variable into an array using ',' as the delimiter
IFS = ',' read -ra custom_websites <<< " $custom_websites_str "
fi
2023-06-27 23:03:55 -07:00
else
# Command line arguments were provided, so set the value of the options variable using the command line arguments
2023-08-09 01:09:45 -07:00
# Initialize an array to store the selected launchers
selected_launchers = ( )
2024-03-08 05:38:11 -08:00
IFS = " "
2023-08-09 01:09:45 -07:00
for arg in " ${ args [@] } " ; do
if [ [ " $arg " = ~ ^https?:// ] ] ; then
2024-03-08 04:17:03 -08:00
website = ${ arg #https : // }
2024-06-28 19:05:32 -07:00
2023-08-09 01:09:45 -07:00
# Check if the arg is not an empty string before adding it to the custom_websites array
2024-03-08 04:23:31 -08:00
if [ -n " $website " ] ; then
2024-03-08 05:18:54 -08:00
custom_websites += ( " $website " )
2023-08-09 01:09:45 -07:00
fi
else
selected_launchers += ( " $arg " )
fi
done
2024-03-07 09:58:42 -08:00
2023-08-12 13:25:08 -05:00
# TODO: error handling for unbound variable $selected_launchers_str on line 564
2023-08-09 01:09:45 -07:00
# Convert the selected_launchers array to a string by joining its elements with a `|` delimiter.
selected_launchers_str = $( IFS = "|" ; echo " ${ selected_launchers [*] } " )
2023-08-12 12:11:01 -05:00
# TODO: SC2199
2024-01-23 00:34:01 -08:00
# Check if the `SEPARATE APP IDS - CHECK THIS TO SEPARATE YOUR PREFIX` option was included in the `selected_launchers` variable. If this option was included, set the value of the `separate_app_ids` variable to `true`, indicating that separate app IDs should be used. Otherwise, set it to `false`.
if [ [ " ${ selected_launchers [@] } " = ~ "SEPARATE APP IDS - CHECK THIS TO SEPARATE YOUR PREFIX" ] ] ; then
2023-08-09 01:09:45 -07:00
separate_app_ids = true
else
separate_app_ids = false
fi
2023-06-27 23:03:55 -07:00
fi
2024-10-25 03:28:42 -07:00
2023-08-12 11:47:52 -05:00
# TODO: SC2145
2023-07-12 01:21:19 -07:00
# Print the selected launchers and custom websites
echo " Selected launchers: $selected_launchers "
2023-08-09 01:09:45 -07:00
echo " Selected launchers: $selected_launchers_str "
2024-03-08 05:01:13 -08:00
echo " Custom websites: ${ custom_websites [@] } "
2023-08-09 01:09:45 -07:00
echo " Separate App IDs: $separate_app_ids "
2023-07-12 01:21:19 -07:00
# Set the value of the options variable
2023-08-09 01:09:45 -07:00
if [ ${# args [@] } -eq 0 ] ; then
# No command line arguments were provided, so set the value of the options variable using the selected_launchers variable
options = " $selected_launchers "
else
# Command line arguments were provided, so set the value of the options variable using the selected_launchers_str variable
options = " $selected_launchers_str "
fi
2023-05-02 05:52:53 -07:00
# Check if the cancel button was clicked
2024-02-06 15:01:18 -08:00
if [ $? -eq 1 ] && [ [ $options != "Start Fresh" ] ] && [ [ $options != "Move to SD Card" ] ] && [ [ $options != "Uninstall" ] ] ; then
2023-05-02 05:52:53 -07:00
# The cancel button was clicked
echo "The cancel button was clicked"
2023-04-27 04:19:15 -07:00
exit 1
fi
2023-04-26 17:15:25 -07:00
2023-07-12 01:21:19 -07:00
# Check if no options were selected and no custom website was provided
if [ -z " $options " ] && [ -z " $custom_websites " ] ; then
# No options were selected and no custom website was provided
2024-08-23 21:42:52 -07:00
zenity --error --text= "No options were selected and no custom website was provided. The script will now exit." --width= 200 --height= 150 --timeout= 5
2023-05-04 16:30:31 -07:00
exit 1
fi
2023-05-02 05:52:53 -07:00
2023-04-27 04:19:15 -07:00
# Check if the user selected to use separate app IDs
2024-01-23 00:34:01 -08:00
if [ [ $options = = *"SEPARATE APP IDS - CHECK THIS TO SEPARATE YOUR PREFIX" * ] ] ; then
2023-04-27 04:19:15 -07:00
# User selected to use separate app IDs
use_separate_appids = true
else
# User did not select to use separate app IDs
use_separate_appids = false
2023-04-26 17:15:25 -07:00
fi
2023-05-02 05:52:53 -07:00
2023-08-09 01:09:45 -07:00
# Define the StartFreshFunction
function StartFreshFunction {
# Define the path to the compatdata directory
2023-08-12 12:11:01 -05:00
compatdata_dir = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata "
2023-11-19 23:41:43 -08:00
# Define the path to the other directory
other_dir = " ${ logged_in_home } /.local/share/Steam/steamapps/shadercache/ "
2023-07-31 19:43:15 -07:00
2023-08-09 01:09:45 -07:00
# Define an array of original folder names
2025-01-28 03:12:24 -08:00
folder_names = ( "EpicGamesLauncher" "GogGalaxyLauncher" "UplayLauncher" "Battle.netLauncher" "TheEAappLauncher" "AmazonGamesLauncher" "itchioLauncher" "LegacyGamesLauncher" "HumbleGamesLauncher" "IndieGalaLauncher" "RockstarGamesLauncher" "GlyphLauncher" "PlaystationPlusLauncher" "VKPlayLauncher" "HoYoPlayLauncher" "NexonLauncher" "GameJoltLauncher" "ArtixGameLauncher" "ARCLauncher" )
2023-07-31 19:43:15 -07:00
2023-11-19 23:41:43 -08:00
# Define an array of app IDs
2025-01-28 03:12:24 -08:00
app_ids = ( "3772819390" "4294900670" "4063097571" "3786021133" "3448088735" "3923904787" "3440562512" "2948446662" "3908676077" "4206469918" "3303169468" "3595505624" "4272271078" "3259996605" "2588786779" "4090616647" "3494943831" "2390200925" "4253976432" "2221882453" "2296676888" "2486751858" "3974004104" "3811372789" "3788101956" "3782277090" "3640061468" "3216372511" "2882622939" "2800812206" "2580882702" "4022508926" "4182617613" "1981254598" "2136059209" "1401184678" )
2023-11-19 23:41:43 -08:00
2023-08-09 01:09:45 -07:00
# Iterate over each folder name in the folder_names array
for folder in " ${ folder_names [@] } " ; do
# Check if the folder exists
2023-08-12 11:47:52 -05:00
if [ -e " ${ compatdata_dir } / ${ folder } " ] ; then
2023-08-09 01:09:45 -07:00
# Check if the folder is a symbolic link
2023-08-12 11:47:52 -05:00
if [ -L " ${ compatdata_dir } / ${ folder } " ] ; then
2023-07-31 19:43:15 -07:00
# Get the path of the target of the symbolic link
2023-08-12 11:47:52 -05:00
target_path = $( readlink -f " ${ compatdata_dir } / ${ folder } " )
2023-07-31 19:43:15 -07:00
# Delete the target of the symbolic link
rm -rf " $target_path "
# Delete the symbolic link
2023-08-12 11:47:52 -05:00
unlink " ${ compatdata_dir } / ${ folder } "
2023-07-31 19:43:15 -07:00
else
2023-08-09 01:09:45 -07:00
# Delete the folder
2023-08-12 11:47:52 -05:00
# shellcheck disable=SC2115
rm -rf " ${ compatdata_dir } / ${ folder } "
2023-07-31 19:43:15 -07:00
fi
fi
2023-08-09 01:09:45 -07:00
done
2023-11-19 23:41:43 -08:00
# Iterate over each app ID in the app_ids array
for app_id in " ${ app_ids [@] } " ; do
# Check if the folder exists
if [ -e " ${ other_dir } / ${ app_id } " ] ; then
# Check if the folder is a symbolic link
if [ -L " ${ other_dir } / ${ app_id } " ] ; then
# Get the path of the target of the symbolic link
target_path = $( readlink -f " ${ other_dir } / ${ app_id } " )
# Delete the target of the symbolic link
rm -rf " $target_path "
# Delete the symbolic link
unlink " ${ other_dir } / ${ app_id } "
else
# Delete the folder
# shellcheck disable=SC2115
rm -rf " ${ other_dir } / ${ app_id } "
fi
fi
done
2023-08-09 01:09:45 -07:00
# Check if the NonSteamLaunchers folder exists
if [ -e " $compatdata_dir /NonSteamLaunchers " ] ; then
# Check if the NonSteamLaunchers folder is a symbolic link
if [ -L " $compatdata_dir /NonSteamLaunchers " ] ; then
# Get the path of the target of the symbolic link
target_path = $( readlink -f " $compatdata_dir /NonSteamLaunchers " )
# Delete the target of the symbolic link
rm -rf " $target_path "
# Delete the symbolic link
unlink " $compatdata_dir /NonSteamLaunchers "
else
# Delete the NonSteamLaunchers folder
rm -rf " $compatdata_dir /NonSteamLaunchers "
fi
fi
2023-07-31 19:43:15 -07:00
2023-08-09 01:09:45 -07:00
# Iterate over each folder in the compatdata directory
for folder_path in " $compatdata_dir " /*; do
# Check if the current item is a folder
if [ -d " $folder_path " ] ; then
# Check if the folder is empty
if [ -z " $( ls -A " $folder_path " ) " ] ; then
# Delete the empty folder
rmdir " $folder_path "
echo " Deleted empty folder: $( basename " $folder_path " ) "
2023-08-01 21:46:34 -07:00
fi
2023-08-09 01:09:45 -07:00
fi
done
2023-08-12 11:47:52 -05:00
# TODO: declare array and use find/for loop to avoid duplicate `rm` processes
2023-08-09 01:09:45 -07:00
rm -rf "/run/media/mmcblk0p1/NonSteamLaunchers/"
rm -rf "/run/media/mmcblk0p1/EpicGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/GogGalaxyLauncher/"
rm -rf "/run/media/mmcblk0p1/UplayLauncher/"
rm -rf "/run/media/mmcblk0p1/Battle.netLauncher/"
rm -rf "/run/media/mmcblk0p1/TheEAappLauncher/"
rm -rf "/run/media/mmcblk0p1/AmazonGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/LegacyGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/itchioLauncher/"
rm -rf "/run/media/mmcblk0p1/HumbleGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/IndieGalaLauncher/"
rm -rf "/run/media/mmcblk0p1/RockstarGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/GlyphLauncher/"
rm -rf "/run/media/mmcblk0p1/PlaystationPlusLauncher/"
2023-11-24 14:52:03 +00:00
rm -rf "/run/media/mmcblk0p1/VKPlayLauncher/"
2024-07-03 05:00:44 -07:00
rm -rf "/run/media/mmcblk0p1/HoYoPlayLauncher/"
2024-08-02 03:26:30 -07:00
rm -rf "/run/media/mmcblk0p1/NexonLauncher/"
2025-01-28 03:12:24 -08:00
rm -rf "/run/media/mmcblk0p1/GameJoltLauncher/"
rm -rf "/run/media/mmcblk0p1/ArtixGameLauncher/"
rm -rf "/run/media/mmcblk0p1/ARCLauncher/"
2023-08-12 14:02:52 -05:00
rm -rf ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation
2024-01-17 04:10:45 -08:00
rm -rf ${ logged_in_home } /.config/systemd/user/Modules
rm -rf ${ logged_in_home } /.config/systemd/user/env_vars
rm -rf ${ logged_in_home } /.config/systemd/user/NSLGameScanner.py
2024-05-09 21:09:08 -07:00
rm -rf ${ logged_in_home } /.local/share/applications/RemotePlayWhatever
2024-05-13 21:09:26 -07:00
rm -rf ${ logged_in_home } /.local/share/applications/RemotePlayWhatever.desktop
2024-05-13 05:11:59 -07:00
rm -rf ${ logged_in_home } /Downloads/NonSteamLaunchers-install.log
2024-01-17 04:10:45 -08:00
# Delete the service file
rm -rf ${ logged_in_home } /.config/systemd/user/nslgamescanner.service
# Remove the symlink
2024-01-22 17:11:59 -08:00
unlink ${ logged_in_home } /.config/systemd/user/default.target.wants/nslgamescanner.service
2024-01-17 04:10:45 -08:00
# Reload the systemd user instance
systemctl --user daemon-reload
2023-08-09 01:09:45 -07:00
# Exit the script with exit code 0 to indicate success
exit 0
}
# Check if the Start Fresh button was clicked or if the Start Fresh option was passed as a command line argument
if [ [ $options = = "Start Fresh" ] ] || [ [ $selected_launchers = = "Start Fresh" ] ] ; then
# The Start Fresh button was clicked or the Start Fresh option was passed as a command line argument
if [ ${# args [@] } -eq 0 ] ; then
# No command line arguments were provided, so display the zenity window
2024-01-17 04:10:45 -08:00
if zenity --question --text= "aaahhh it always feels good to start fresh :) but...This will delete the App ID folders you installed inside the steamapps/compatdata/ directory as well as the Shader Cache associated with them in the steamapps/shadercache directory. The nslgamescanner.service will also be terminated at /.config/systemd/user/ This means anything youve installed (launchers or games) WITHIN THIS SCRIPT will be deleted if you have them there. Everything will be wiped. Are you sure?" --width= 300 --height= 260; then
2023-08-09 01:09:45 -07:00
# The user clicked the "Yes" button, so call the StartFreshFunction
StartFreshFunction
2023-11-19 23:41:43 -08:00
# If the Start Fresh function was called, set an environment variable
if [ " $? " -eq 0 ] ; then
export START_FRESH = true
else
export START_FRESH = false
fi
2023-08-09 01:09:45 -07:00
else
# The user clicked the "No" button, so exit with exit code 0 to indicate success.
exit 0
fi
2023-05-05 04:42:34 -07:00
else
2023-08-09 01:09:45 -07:00
# Command line arguments were provided, so skip displaying the zenity window and directly perform any necessary actions to start fresh by calling the StartFreshFunction
StartFreshFunction
2023-05-05 04:42:34 -07:00
fi
fi
2023-05-16 16:27:45 -07:00
2024-01-17 04:10:45 -08:00
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
#Set Downloads INFO
2023-04-27 13:51:00 -07:00
echo "10"
echo "# Setting files in their place"
2023-04-26 17:15:25 -07:00
# Set the appid for the non-Steam game
appid = NonSteamLaunchers
# Set the URL to download the MSI file from
msi_url = https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/installer/download/EpicGamesLauncherInstaller.msi
# Set the path to save the MSI file to
2023-08-12 14:02:52 -05:00
msi_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/EpicGamesLauncherInstaller.msi
2023-04-26 17:15:25 -07:00
# Set the URL to download the second file from
exe_url = https://webinstallers.gog-statics.com/download/GOG_Galaxy_2.0.exe
# Set the path to save the second file to
2023-08-12 14:02:52 -05:00
exe_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/GOG_Galaxy_2.0.exe
2023-04-26 17:15:25 -07:00
# Set the URL to download the third file from
ubi_url = https://ubi.li/4vxt9
# Set the path to save the third file to
2023-11-04 18:44:02 -07:00
ubi_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/UbisoftConnectInstaller.exe
2023-04-26 17:15:25 -07:00
# Set the URL to download the fifth file from
2023-06-10 22:27:59 -07:00
battle_url = "https://www.battle.net/download/getInstallerForGame?os=win&gameProgram=BATTLENET_APP&version=Live"
2023-04-26 17:15:25 -07:00
# Set the path to save the fifth file to
2023-08-12 14:02:52 -05:00
battle_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/Battle.net-Setup.exe
2023-04-26 17:15:25 -07:00
2023-04-27 04:19:15 -07:00
# Set the URL to download the sixth file from
amazon_url = https://download.amazongames.com/AmazonGamesSetup.exe
2023-04-26 17:15:25 -07:00
2023-04-27 04:19:15 -07:00
# Set the path to save the sixth file to
2023-08-12 14:02:52 -05:00
amazon_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/AmazonGamesSetup.exe
2023-04-26 17:15:25 -07:00
2023-04-27 04:19:15 -07:00
# Set the URL to download the seventh file from
eaapp_url = https://origin-a.akamaihd.net/EA-Desktop-Client-Download/installer-releases/EAappInstaller.exe
# Set the path to save the seventh file to
2023-08-12 14:02:52 -05:00
eaapp_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/EAappInstaller.exe
2023-04-26 17:15:25 -07:00
2023-04-28 02:01:10 -07:00
# Set the URL to download the eighth file from
itchio_url = https://itch.io/app/download?platform= windows
# Set the path to save the eighth file to
2023-08-12 14:02:52 -05:00
itchio_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/itch-setup.exe
2023-04-28 02:01:10 -07:00
2023-05-02 21:15:40 -07:00
# Set the URL to download the ninth file from
legacygames_url = https://cdn.legacygames.com/LegacyGamesLauncher/legacy-games-launcher-setup-1.10.0-x64-full.exe
2023-04-28 02:01:10 -07:00
2023-05-02 21:15:40 -07:00
# Set the path to save the ninth file to
2023-08-12 14:02:52 -05:00
legacygames_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/legacy-games-launcher-setup-1.10.0-x64-full.exe
2023-04-28 02:01:10 -07:00
2023-05-05 15:24:07 -07:00
# Set the URL to download the tenth file from
humblegames_url = https://www.humblebundle.com/app/download
# Set the path to save the tenth file to
2023-08-12 14:02:52 -05:00
humblegames_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/Humble-App-Setup-1.1.8+411.exe
2023-05-05 15:24:07 -07:00
2023-05-09 03:50:48 -07:00
# Set the URL to download the eleventh file from
indiegala_url = https://content.indiegalacdn.com/common/IGClientSetup.exe
2023-05-05 15:24:07 -07:00
2023-05-09 03:50:48 -07:00
# Set the path to save the eleventh file to
2023-08-12 14:02:52 -05:00
indiegala_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/IGClientSetup.exe
2023-05-05 15:24:07 -07:00
2023-05-09 19:32:41 -07:00
# Set the URL to download the twelfth file from
rockstar_url = https://gamedownloads.rockstargames.com/public/installer/Rockstar-Games-Launcher.exe
# Set the path to save the twelfth file to
2023-08-12 14:02:52 -05:00
rockstar_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/Rockstar-Games-Launcher.exe
2023-05-09 19:32:41 -07:00
2023-06-02 16:20:17 -06:00
# Set the URL to download the Glyph Launcher file from
glyph_url = https://glyph.dyn.triongames.com/glyph/live/GlyphInstall.exe
# Set the path to save the Glyph Launcher to
2023-08-12 14:02:52 -05:00
glyph_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/GlyphInstall.exe
2023-06-02 16:20:17 -06:00
2023-06-03 23:17:16 -07:00
2023-07-12 01:21:19 -07:00
# Set the URL to download the Playstation Launcher file from
psplus_url = https://download-psplus.playstation.com/downloads/psplus/pc/latest
# Set the path to save the Playstation Launcher to
2023-08-12 14:02:52 -05:00
psplus_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/PlayStationPlus-12.2.0.exe
2023-07-12 01:21:19 -07:00
2023-05-05 15:24:07 -07:00
2023-11-24 14:52:03 +00:00
# Set the URL to download the VK Play Launcher file from
vkplay_url = https://static.gc.vkplay.ru/VKPlayLoader.exe
# Set the path to save the VK Play Launcher to
vkplay_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/VKPlayLoader.exe
2024-07-03 05:00:44 -07:00
2024-08-28 20:08:16 -07:00
# Set the URL to download the Hoyo Play Play Launcher file from
hoyoplay_url = "https://download-porter.hoyoverse.com/download-porter/2024/06/07/hyp_global_setup_1.0.5.exe"
2024-07-03 05:00:44 -07:00
# Set the path to save the Hoyo Play Launcher to
2024-08-28 20:01:26 -07:00
hoyoplay_file = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/HoYoPlay_install.exe "
2024-07-03 05:00:44 -07:00
2024-08-02 03:26:30 -07:00
# Set the URL to download the Nexon Launcher file from
nexon_url = "https://download.nxfs.nexon.com/download-launcher?file=NexonLauncherSetup.exe&client-id=959013368.1720525616"
# Set the path to save the Nexon Launcher to
nexon_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/NexonLauncherSetup.exe
2025-01-28 03:12:24 -08:00
# Set the URL to download the GameJolt Launcher file from
gamejolt_url = "https://download.gamejolt.net/7f4ea08f3f8b964dafd1df8a4a4e44f4af49390b6c9402bd25d410b71341fb0b,1738120837,7/data/games/5/162/362412/files/66bc359fe3e14/gamejoltclientsetup.exe"
# Set the path to save the GameJolt Launcher to
gamejolt_file = ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/gamejoltclientsetup.exe
# Set the URL to download the artix Launcher file from
artixgame_url = https://launch.artix.com/latest/ArtixLauncher_win_x64.exe
# Set the path to save the artix Launcher to
artixgame_file = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/ArtixLauncher_win_x64.exe "
# Set the URL to download the arc Launcher file from
arc_url = https://www.arcgames.com/download
# Set the path to save the arc Launcher to
arc_file = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/Ar3Setup.exe "
2024-06-28 19:05:32 -07:00
#End of Downloads INFO
2023-11-24 14:52:03 +00:00
2023-04-27 13:51:00 -07:00
2023-04-26 17:15:25 -07:00
2023-05-02 05:52:53 -07:00
2024-10-25 03:28:42 -07:00
2024-08-02 03:26:30 -07:00
# Function to handle common uninstallation tasks
handle_uninstall_common( ) {
2024-06-28 19:05:32 -07:00
compatdata_dir = $1
2024-08-02 03:26:30 -07:00
uninstaller_path = $2
uninstaller_options = $3
app_name = $4
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
# Set the path to the Proton directory
2024-12-03 15:52:43 +01:00
proton_dir = $( find -L " ${ logged_in_home } /.steam/root/compatibilitytools.d " -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
2023-05-09 03:50:48 -07:00
2024-06-28 19:05:32 -07:00
# Set the paths for the environment variables
STEAM_RUNTIME = " ${ logged_in_home } /.steam/root/ubuntu12_32/steam-runtime/run.sh "
STEAM_COMPAT_CLIENT_INSTALL_PATH = " ${ logged_in_home } /.local/share/Steam "
STEAM_COMPAT_DATA_PATH = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ compatdata_dir } "
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Export the STEAM_COMPAT_DATA_PATH variable
export STEAM_COMPAT_DATA_PATH
export STEAM_COMPAT_CLIENT_INSTALL_PATH
2023-05-04 16:30:31 -07:00
2024-08-02 03:26:30 -07:00
# Run the uninstaller using Proton with the specified options
echo "Running uninstaller using Proton with the specified options"
" $STEAM_RUNTIME " " $proton_dir /proton " run " $uninstaller_path " $uninstaller_options
# Display Zenity window
zenity --info --text= " $app_name has been uninstalled. " --width= 200 --height= 150 &
sleep 3
killall zenity
}
# Function to handle EA App uninstallation
handle_uninstall_ea( ) {
mkdir -p ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation
2024-06-28 19:05:32 -07:00
# Download EA App file
if [ ! -f " $eaapp_file " ] ; then
echo "Downloading EA App file"
wget $eaapp_url -O $eaapp_file
2024-05-06 11:53:54 -07:00
fi
2023-05-04 16:30:31 -07:00
2024-08-02 03:26:30 -07:00
handle_uninstall_common " $1 " " $eaapp_file " "/uninstall /quiet" "EA App"
}
2024-05-06 00:57:34 -07:00
2024-08-02 03:26:30 -07:00
# Function to handle GOG Galaxy uninstallation
handle_uninstall_gog( ) {
gog_uninstaller = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ 1 } /pfx/drive_c/Program Files (x86)/GOG Galaxy/unins000.exe "
handle_uninstall_common " $1 " " $gog_uninstaller " "/SILENT" "GOG Galaxy"
2024-06-28 19:05:32 -07:00
}
2024-05-06 00:57:34 -07:00
2024-08-02 03:26:30 -07:00
# Uninstall EA App
2024-06-28 19:05:32 -07:00
if [ [ $uninstall_options = = *"Uninstall EA App" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Electronic Arts " ] ] ; then
2024-08-02 03:26:30 -07:00
handle_uninstall_ea "NonSteamLaunchers"
2024-06-28 19:05:32 -07:00
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/Program Files/Electronic Arts " ] ] ; then
2024-08-02 03:26:30 -07:00
handle_uninstall_ea "TheEAappLauncher"
fi
fi
# Uninstall GOG Galaxy
if [ [ $uninstall_options = = *"Uninstall GOG Galaxy" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/GOG Galaxy " ] ] ; then
handle_uninstall_gog "NonSteamLaunchers"
2024-08-02 20:34:01 -07:00
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/pfx/drive_c/Program Files (x86)/GOG Galaxy " ] ] ; then
handle_uninstall_gog "GogGalaxyLauncher"
2023-08-12 11:47:52 -05:00
fi
2024-05-06 11:53:54 -07:00
fi
2024-05-06 00:57:34 -07:00
2024-08-02 03:26:30 -07:00
# Function to handle Legacy Games Launcher uninstallation
handle_uninstall_legacy( ) {
legacy_uninstaller = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ 1 } /pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher/Uninstall Legacy Games Launcher.exe "
handle_uninstall_common " $1 " " $legacy_uninstaller " "/allusers /S" "Legacy Games Launcher"
}
# Uninstall Legacy Games Launcher
if [ [ $uninstall_options = = *"Uninstall Legacy Games Launcher" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher " ] ] ; then
handle_uninstall_legacy "NonSteamLaunchers"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher " ] ] ; then
handle_uninstall_legacy "LegacyGamesLauncher"
fi
fi
2023-04-27 04:19:15 -07:00
2024-08-23 21:42:52 -07:00
# Function to handle PlayStation Plus uninstallation
handle_uninstall_psplus( ) {
psplus_uninstaller = "MsiExec.exe"
psplus_uninstaller_options = "/X{3DE02040-3CB7-4D4A-950E-773F04FC4DE8} /quiet"
handle_uninstall_common " $1 " " $psplus_uninstaller " " $psplus_uninstaller_options " "PlayStation Plus"
}
# Uninstall PlayStation Plus
if [ [ $uninstall_options = = *"Uninstall PlayStation Plus" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/PlayStationPlus " ] ] ; then
handle_uninstall_psplus "NonSteamLaunchers"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/PlaystationPlusLauncher/pfx/drive_c/Program Files (x86)/PlayStationPlus " ] ] ; then
handle_uninstall_psplus "PlaystationPlusLauncher"
fi
fi
2025-01-28 03:12:24 -08:00
# Function to handle Artix uninstallation
handle_uninstall_artix( ) {
artix_uninstaller = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ 1 } /pfx/drive_c/Program Files/Artix Game Launcher/Uninstall Artix Game Launcher.exe "
handle_uninstall_common " $1 " " $artix_uninstaller " "/S" "Artix Game Launcher"
}
# Uninstall Artix
if [ [ $uninstall_options = = *"Uninstall Artix Game Launcher" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Artix Game Launcher " ] ] ; then
handle_uninstall_artix "NonSteamLaunchers"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ArtixGameLauncher/pfx/drive_c/Program Files/Artix Game Launcher " ] ] ; then
handle_uninstall_artix "ArtixGameLauncher"
fi
fi
2023-04-27 04:19:15 -07:00
2024-08-23 22:13:41 -07:00
2024-06-28 19:05:32 -07:00
uninstall_launcher( ) {
local uninstall_options = $1
local launcher = $2
local path1 = $3
local path2 = $4
local remove_path1 = $5
local remove_path2 = $6
shift 6
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
if [ [ $uninstall_options = = *" Uninstall $launcher " * ] ] ; then
if [ [ -f " $path1 " ] ] ; then
rm -rf " $remove_path1 "
zenity --info --text= " $launcher has been uninstalled. " --width= 200 --height= 150 &
sleep 3
killall zenity
elif [ [ -f " $path2 " ] ] ; then
rm -rf " $remove_path2 "
zenity --info --text= " $launcher has been uninstalled. " --width= 200 --height= 150 &
sleep 3
killall zenity
2024-05-17 04:23:54 -07:00
fi
2024-06-28 19:05:32 -07:00
for env_var_prefix in " $@ " ; do # Loop over the remaining arguments
sed -i " /^export ${ env_var_prefix } .*/Id " " ${ logged_in_home } /.config/systemd/user/env_vars "
done
echo " Deleted environment variables for $launcher "
2024-05-06 11:53:54 -07:00
fi
2024-06-28 19:05:32 -07:00
}
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Function to process uninstall options
process_uninstall_options( ) {
local uninstall_options = $1
if [ [ -n $uninstall_options ] ] ; then
# Call uninstall_launcher for each launcher
# Add more launchers as needed
2024-08-02 20:34:01 -07:00
if [ [ $uninstall_options = = *"Uninstall GOG Galaxy" * ] ] ; then
2024-08-02 03:26:30 -07:00
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/GOG Galaxy " ] ] ; then
handle_uninstall_gog "NonSteamLaunchers"
2024-08-02 20:34:01 -07:00
uninstall_launcher " $uninstall_options " "GOG Galaxy" " $gog_galaxy_path1 " " $gog_galaxy_path2 " "" "" "gog"
2024-08-02 03:26:30 -07:00
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/pfx/drive_c/Program Files (x86)/GOG Galaxy " ] ] ; then
handle_uninstall_gog "GogGalaxyLauncher"
2024-08-02 20:34:01 -07:00
uninstall_launcher " $uninstall_options " "GOG Galaxy" " $gog_galaxy_path1 " " $gog_galaxy_path2 " "" "" "gog"
2024-08-02 03:26:30 -07:00
fi
fi
2024-06-28 19:05:32 -07:00
if [ [ $uninstall_options = = *"Uninstall EA App" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Electronic Arts " ] ] ; then
2024-08-02 03:26:30 -07:00
handle_uninstall_ea "NonSteamLaunchers"
uninstall_launcher " $uninstall_options " "EA App" " $eaapp_path1 " " $eaapp_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe " "eaapp" "ea_app"
sed -i '/repaireaapp/d' " ${ logged_in_home } /.config/systemd/user/env_vars "
2024-06-28 19:05:32 -07:00
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/Program Files/Electronic Arts " ] ] ; then
2024-08-02 03:26:30 -07:00
handle_uninstall_ea "TheEAappLauncher"
uninstall_launcher " $uninstall_options " "EA App" " $eaapp_path1 " " $eaapp_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe " "eaapp" "ea_app"
sed -i '/repaireaapp/d' " ${ logged_in_home } /.config/systemd/user/env_vars "
2024-06-28 19:05:32 -07:00
fi
fi
2024-08-02 03:26:30 -07:00
if [ [ $uninstall_options = = *"Uninstall Legacy Games" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Legacy Games " ] ] ; then
handle_uninstall_legacy "NonSteamLaunchers"
uninstall_launcher " $uninstall_options " "Legacy Games" " $legacygames_path1 " " $legacygames_path2 " "" "" "legacy"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/pfx/drive_c/Program Files/Legacy Games " ] ] ; then
handle_uninstall_legacy "LegacyGamesLauncher"
uninstall_launcher " $uninstall_options " "Legacy Games" " $legacygames_path1 " " $legacygames_path2 " "" "" "legacy"
fi
fi
2024-08-23 21:42:52 -07:00
if [ [ $uninstall_options = = *"Uninstall Playstation Plus" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/PlayStationPlus " ] ] ; then
handle_uninstall_psplus "NonSteamLaunchers"
uninstall_launcher " $uninstall_options " "Playstation Plus" " $psplus_path1 " " $psplus_path2 " "" "" "psplus"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/PlaystationPlusLauncher " ] ] ; then
handle_uninstall_psplus "PlaystationPlusLauncher"
uninstall_launcher " $uninstall_options " "Playstation Plus" " $psplus_path1 " " $psplus_path2 " "" "" "psplus"
fi
fi
2024-08-23 22:13:41 -07:00
2025-01-28 03:12:24 -08:00
if [ [ $uninstall_options = = *"Uninstall Artix Game Launcher" * ] ] ; then
if [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Artix Game Launcher " ] ] ; then
handle_uninstall_artix "NonSteamLaunchers"
uninstall_launcher " $uninstall_options " "Artix Game Launcher" " $artixgame_path1 " " $artixgame_path2 " "" "" "artixgame"
elif [ [ -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ArtixGameLauncher/pfx/drive_c/Program Files/Artix Game Launcher " ] ] ; then
handle_uninstall_artix "ArtixGameLauncher"
uninstall_launcher " $uninstall_options " "Artix Game Launcher" " $artixgame_path1 " " $artixgame_path2 " "" "" "artixgame"
fi
fi
2024-08-23 22:13:41 -07:00
if [ [ $uninstall_options = = *"Uninstall RemotePlayWhatever" * ] ] ; then
rm -rf " ${ logged_in_home } /.local/share/applications/RemotePlayWhatever "
rm -rf " ${ logged_in_home } /.local/share/applications/RemotePlayWhatever.desktop "
zenity --info --text= "RemotePlayWhatever has been uninstalled." --width= 200 --height= 150 &
sleep 3
killall zenity
fi
2025-01-28 03:12:24 -08:00
2024-08-02 03:26:30 -07:00
uninstall_launcher " $uninstall_options " "Uplay" " $uplay_path1 " " $uplay_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Ubisoft " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/UplayLauncher " "uplay" "ubisoft"
uninstall_launcher " $uninstall_options " "Battle.net" " $battlenet_path1 " " $battlenet_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Battle.net " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/Battle.netLauncher " "battle" "bnet"
uninstall_launcher " $uninstall_options " "Epic Games" " $epic_games_launcher_path1 " " $epic_games_launcher_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Epic Games " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/EpicGamesLauncher " "epic"
uninstall_launcher " $uninstall_options " "Amazon Games" " $amazongames_path1 " " $amazongames_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/Amazon Games " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher " "amazon"
uninstall_launcher " $uninstall_options " "itch.io" " $itchio_path1 " " $itchio_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/itch " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/itchioLauncher " "itchio"
2024-12-18 05:29:28 -08:00
uninstall_launcher " $uninstall_options " "Humble Games Collection" " $humblegames_path1 " " $humblegames_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Humble App " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher " "humble"
2024-08-02 03:26:30 -07:00
uninstall_launcher " $uninstall_options " "IndieGala" " $indiegala_path1 " " $indiegala_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/IGClient " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/IndieGalaLauncher " "indie"
uninstall_launcher " $uninstall_options " "Rockstar Games Launcher" " $rockstar_path1 " " $rockstar_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Rockstar Games " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/RockstarGamesLauncher " "rockstar"
uninstall_launcher " $uninstall_options " "Glyph Launcher" " $glyph_path1 " " $glyph_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Glyph " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GlyphLauncher " "glyph"
uninstall_launcher " $uninstall_options " "VK Play" " $vkplay_path1 " " $vkplay_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/GameCenter " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/VKPlayLauncher " "vkplay"
uninstall_launcher " $uninstall_options " "HoYoPlay" " $hoyoplay_path1 " " $hoyoplay_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/HoYoPlay " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HoYoPlayLauncher " "hoyoplay"
uninstall_launcher " $uninstall_options " "Nexon Launcher" " $nexon_path1 " " $nexon_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Nexon " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NexonLauncher " "nexon"
2025-01-28 03:12:24 -08:00
uninstall_launcher " $uninstall_options " "Game Jolt Client" " $gamejolt_path1 " " $gamejolt_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/GameJoltClient " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GameJoltLauncher " "gamejolt"
uninstall_launcher " $uninstall_options " "ARC Launcher" " $arc_path1 " " $arc_path2 " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Arc " " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ARCLauncher " "arc"
2023-06-05 11:25:44 -07:00
fi
2024-08-02 03:26:30 -07:00
# If the uninstall was successful, set uninstalled_any_launcher to true
2024-06-28 19:05:32 -07:00
if [ $? -eq 0 ] ; then
uninstalled_any_launcher = true
2023-06-05 11:25:44 -07:00
fi
2024-06-28 19:05:32 -07:00
}
2023-04-30 05:53:54 -07:00
2024-08-02 03:26:30 -07:00
2024-06-28 19:05:32 -07:00
if [ $# -gt 0 ] ; then
# Add a flag that gets set when any launcher is uninstalled
uninstalled_any_launcher = false
for arg in " $@ " ; do
if [ [ $arg = = *"Uninstall " * ] ] ; then
launcher = ${ arg # "Uninstall " }
# Set the flag to true
uninstalled_any_launcher = true
if [ [ -n $launcher ] ] ; then
process_uninstall_options " Uninstall $launcher "
2024-06-19 00:51:52 -07:00
fi
2024-03-19 14:25:23 -07:00
fi
2023-11-04 19:48:38 -07:00
done
2024-06-28 19:05:32 -07:00
# Check the flag after the loop
if $uninstalled_any_launcher ; then
echo "Uninstallation completed successfully."
rm -rf " $download_dir "
exit 0
fi
else
# No command line arguments were provided
# Check if the Uninstall button was clicked in the GUI
if [ [ $options = = "Uninstall" ] ] || [ [ $selected_launchers = = "Uninstall" ] ] ; then
# The Uninstall button was clicked in the GUI
# Display the zenity window to select launchers to uninstall
uninstall_options = $( zenity --list --checklist \
--title= "Uninstall Launchers" \
--text= "Select the launchers you want to Uninstall..." \
--column= "Select" --column= "This will delete the launcher and all of its games and files." \
--width= 508 --height= 507 \
FALSE "Epic Games" \
2024-08-04 02:05:02 -07:00
FALSE "GOG Galaxy" \
2024-06-28 19:05:32 -07:00
FALSE "Uplay" \
FALSE "Battle.net" \
FALSE "EA App" \
FALSE "Amazon Games" \
FALSE "Legacy Games" \
FALSE "itch.io" \
2024-12-18 05:29:28 -08:00
FALSE "Humble Games Collection" \
2024-06-28 19:05:32 -07:00
FALSE "IndieGala" \
FALSE "Rockstar Games Launcher" \
FALSE "Glyph Launcher" \
FALSE "Playstation Plus" \
FALSE "VK Play" \
2024-07-03 05:00:44 -07:00
FALSE "HoYoPlay" \
2024-08-02 03:26:30 -07:00
FALSE "Nexon Launcher" \
2025-01-28 03:12:24 -08:00
FALSE "Game Jolt Client" \
FALSE "Artix Game Launcher" \
FALSE "ARC Launcher" \
2024-08-23 22:18:56 -07:00
FALSE "RemotePlayWhatever" \
2024-06-28 19:05:32 -07:00
)
# Convert the returned string to an array
IFS = '|' read -r -a uninstall_options_array <<< " $uninstall_options "
# Loop through the array and uninstall each selected launcher
for launcher in " ${ uninstall_options_array [@] } " ; do
process_uninstall_options " Uninstall $launcher "
done
echo "Uninstallation completed successfully."
rm -rf " $download_dir "
exit 0
fi
2023-04-27 04:19:15 -07:00
fi
2024-06-28 19:05:32 -07:00
#End of Uninstall
2024-05-06 11:53:54 -07:00
2023-04-27 13:51:00 -07:00
2024-06-28 19:05:32 -07:00
move_to_sd( ) {
local launcher_id = $1
local original_dir = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ launcher_id } "
local sd_path = $( get_sd_path)
local new_dir = " ${ sd_path } / ${ launcher_id } "
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
# Resolve symbolic link to its target
if [ [ -L " ${ original_dir } " ] ] ; then
original_dir = $( readlink " ${ original_dir } " )
2023-04-27 04:19:15 -07:00
fi
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
if [ [ -d " ${ original_dir } " ] ] && [ [ $move_options = = *" ${ launcher_id } " * ] ] ; then
mv " ${ original_dir } " " ${ new_dir } "
ln -s " ${ new_dir } " " ${ original_dir } "
2023-04-27 04:19:15 -07:00
fi
2024-06-28 19:05:32 -07:00
}
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Check if the first command line argument is "Move to SD Card"
if [ [ $1 = = "Move to SD Card" ] ] ; then
# Shift the arguments to remove the first one
shift
# Use the remaining arguments as the launcher IDs to move
for launcher in " $@ " ; do
move_to_sd " $launcher "
done
else
# The first command line argument is not "Move to SD Card"
# Use Zenity to get the launcher IDs to move
if [ [ $options = = "Move to SD Card" ] ] ; then
CheckInstallationDirectory
2023-04-26 17:15:25 -07:00
2025-01-28 03:12:24 -08:00
move_options = $( zenity --list --text= "Which launcher IDs do you want to move to the SD card?" --checklist --column= "Select" --column= "Launcher ID" $nonsteamlauncher_move_value "NonSteamLaunchers" $epicgameslauncher_move_value "EpicGamesLauncher" $goggalaxylauncher_move_value "GogGalaxyLauncher" $uplaylauncher_move_value "UplayLauncher" $battlenetlauncher_move_value "Battle.netLauncher" $eaapplauncher_move_value "TheEAappLauncher" $amazongameslauncher_move_value "AmazonGamesLauncher" $itchiolauncher_move_value "itchioLauncher" $legacygameslauncher_move_value "LegacyGamesLauncher" $humblegameslauncher_move_value "HumbleGamesLauncher" $indiegalalauncher_move_value "IndieGalaLauncher" $rockstargameslauncher_move_value "RockstarGamesLauncher" $glyphlauncher_move_value "GlyphLauncher" $pspluslauncher_move_value "PlaystationPlusLauncher" $vkplaylauncher_move_value "VKPlayLauncher" $hoyoplaylauncher_move_value "HoYoPlayLauncher" $nexonlauncher_move_value "NexonLauncher" $gamejoltlauncher_move_value "GameJoltLauncher" $artixgame_move_value "ArtixGameLauncher" $arc_move_value "ARCLauncher" --width= 335 --height= 524)
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
if [ $? -eq 0 ] ; then
zenity --info --text= "The selected directories have been moved to the SD card and symbolic links have been created." --width= 200 --height= 150
2023-04-26 17:15:25 -07:00
2024-06-28 19:05:32 -07:00
IFS = "|" read -ra selected_launchers <<< " $move_options "
for launcher in " ${ selected_launchers [@] } " ; do
move_to_sd " $launcher "
done
2023-04-27 04:19:15 -07:00
fi
2024-06-28 19:05:32 -07:00
IFS = "|" read -ra selected_launchers <<< " $move_options "
for launcher in " ${ selected_launchers [@] } " ; do
move_to_sd " $launcher "
done
2023-05-02 05:52:53 -07:00
2024-06-28 19:05:32 -07:00
if [ $? -eq 0 ] ; then
zenity --info --text= "The selected directories have been moved to the SD card and symbolic links have been created." --width= 200 --height= 150
2024-05-17 04:23:54 -07:00
fi
2024-06-28 19:05:32 -07:00
# Exit the script
exit 0
fi
2023-06-12 04:05:58 -07:00
2023-04-27 04:19:15 -07:00
fi
2023-04-26 17:15:25 -07:00
2024-07-16 01:06:19 -07:00
function stop_service {
2024-06-28 19:05:32 -07:00
# Stop the service
systemctl --user stop nslgamescanner.service
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Delete the NSLGameScanner.py
rm -rf ${ logged_in_home } /.config/systemd/user/NSLGameScanner.py
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Delete the service file
rm -rf ${ logged_in_home } /.config/systemd/user/nslgamescanner.service
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Remove the symlink
unlink ${ logged_in_home } /.config/systemd/user/default.target.wants/nslgamescanner.service
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# Reload the systemd user instance
systemctl --user daemon-reload
2024-07-16 01:06:19 -07:00
}
# Get the command line arguments
args = ( " $@ " )
# Check if the Stop NSLGameScanner option was passed as a command line argument or clicked in the GUI
if [ [ " ${ args [@] } " = ~ " Stop NSLGameScanner " ] ] || [ [ $options = = "Stop NSLGameScanner" ] ] ; then
stop_service
2023-04-27 04:19:15 -07:00
2024-06-28 19:05:32 -07:00
# If command line arguments were provided, exit the script
if [ ${# args [@] } -ne 0 ] ; then
rm -rf ${ logged_in_home } /.config/systemd/user/env_vars
exit 0
2023-04-27 04:19:15 -07:00
fi
2024-06-28 19:05:32 -07:00
# If no command line arguments were provided, display the zenity window
zenity --question --text= "NSLGameScanner has been stopped. Do you want to run it again?" --width= 200 --height= 150
if [ $? = 0 ] ; then
# User wants to run NSLGameScanner again
python3 $python_script_path
else
# User does not want to run NSLGameScanner again
2024-07-16 01:06:19 -07:00
stop_service
2024-07-16 01:00:26 -07:00
exit 0
2024-06-28 19:05:32 -07:00
fi
2023-04-27 04:19:15 -07:00
fi
2024-05-08 13:04:09 -07:00
2024-06-28 19:05:32 -07:00
# TODO: probably better to break this subshell into a function that can then be redirected to zenity
# Massive subshell pipes into `zenity --progress` around L2320 for GUI rendering
(
2024-11-04 06:10:57 -08:00
2024-06-28 19:05:32 -07:00
#Update Proton GE
# Call the function directly
update_proton
2024-11-04 06:10:57 -08:00
update_umu_launcher
2024-05-08 13:04:09 -07:00
2024-06-28 19:05:32 -07:00
# Also call the function when the button is pressed
if [ [ $options = = *"Update Proton-GE" * ] ] ; then
update_proton
2024-11-04 06:10:57 -08:00
update_umu_launcher
2024-06-28 19:05:32 -07:00
fi
2024-05-08 13:04:09 -07:00
2023-05-02 21:15:40 -07:00
2024-11-04 06:10:57 -08:00
2024-06-28 19:05:32 -07:00
echo "20"
echo "# Creating files & folders"
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Check if the user selected any launchers
if [ -n " $options " ] ; then
# User selected at least one launcher
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Create app id folder in compatdata folder if it doesn't exist and if the user selected to use a single app ID folder
if [ " $use_separate_appids " = false ] && [ ! -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid " ] ; then
2024-05-06 11:53:54 -07:00
mkdir -p " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid "
fi
2024-06-28 19:05:32 -07:00
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Change working directory to Proton's
cd $proton_dir
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Set the STEAM_RUNTIME environment variable
export STEAM_RUNTIME = " ${ logged_in_home } /.steam/root/ubuntu12_32/steam-runtime/run.sh "
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH = " ${ logged_in_home } /.local/share/Steam "
2024-05-09 05:11:22 -07:00
2024-06-28 19:05:32 -07:00
# Set the STEAM_COMPAT_DATA_PATH environment variable for the first file
export STEAM_COMPAT_DATA_PATH = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ appid } "
2024-05-06 11:53:54 -07:00
2024-09-08 00:56:46 -07:00
if [ [ $options = = *"NSLGameSaves" * ] ] ; then
echo "Running restore..."
2024-09-09 13:25:28 -07:00
nohup flatpak run com.github.mtkennerly.ludusavi --config " ${ logged_in_home } /.var/app/com.github.mtkennerly.ludusavi/config/ludusavi/NSLconfig/ " restore --force > /dev/null 2>& 1 &
2024-09-08 00:56:46 -07:00
wait $!
echo "Restore completed"
zenity --info --text= "Restore was successful" --timeout= 5
exit 0
fi
2024-06-28 19:05:32 -07:00
###Launcher Installations
#Terminate Processese
function terminate_processes {
process_names = ( " $@ " ) # Array of process names
for process_name in " ${ process_names [@] } " ; do
end = $(( SECONDS+75)) # Timeout
while ! pgrep -f " $process_name " > /dev/null; do
if [ $SECONDS -gt $end ] ; then
echo " Timeout while waiting for $process_name to start "
return 1
fi
sleep 1
done
echo " Attempting to terminate $process_name "
pkill -f " $process_name "
end = $(( SECONDS+60)) # Timeout
while pgrep -f " $process_name " > /dev/null; do
if [ $SECONDS -gt $end ] ; then
echo " Timeout while trying to kill $process_name , force terminating "
pkill -9 -f " $process_name "
break
fi
sleep 1
done
echo " $process_name terminated successfully "
done
}
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
function install_gog {
echo "45"
echo "# Downloading & Installing Gog Galaxy...Please wait..."
2024-05-06 11:53:54 -07:00
2024-06-30 02:11:04 -07:00
# Cancel & Exit the GOG Galaxy Setup Wizard
2024-12-13 21:54:28 -08:00
end = $(( SECONDS+90)) # Timeout after 90 seconds
2024-06-30 02:11:04 -07:00
while true; do
if pgrep -f "GalaxySetup.tmp" > /dev/null; then
pkill -f "GalaxySetup.tmp"
break
fi
if [ $SECONDS -gt $end ] ; then
echo "Timeout while trying to kill GalaxySetup.tmp"
break
fi
2024-06-28 19:05:32 -07:00
sleep 1
done
2024-05-06 11:53:54 -07:00
2024-12-13 21:54:28 -08:00
# Check both Temp directories for Galaxy installer folder
temp_dir1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/drive_c/users/steamuser/AppData/Local/Temp "
temp_dir2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/drive_c/users/steamuser/Temp "
# First check temp_dir1 (AppData/Local/Temp)
if [ -d " $temp_dir1 " ] ; then
cd " $temp_dir1 "
# Check if we found the installer folder
for dir in GalaxyInstaller_*; do
if [ -d " $dir " ] ; then
galaxy_installer_folder = " $dir "
break
fi
done
2024-09-28 22:11:00 -07:00
fi
2023-05-05 15:24:07 -07:00
2024-12-13 21:54:28 -08:00
# If not found, check temp_dir2 (Temp)
if [ -z " $galaxy_installer_folder " ] && [ -d " $temp_dir2 " ] ; then
cd " $temp_dir2 "
# Now check if we found the installer folder in the second directory
for dir in GalaxyInstaller_*; do
if [ -d " $dir " ] ; then
galaxy_installer_folder = " $dir "
break
fi
done
fi
2024-09-28 22:11:00 -07:00
2024-12-13 21:54:28 -08:00
# If no installer folder was found in either directory, exit
if [ -z " $galaxy_installer_folder " ] ; then
echo "Galaxy installer folder not found in either Temp directory"
2024-09-28 22:11:00 -07:00
return 1
fi
2023-05-05 15:24:07 -07:00
2024-12-13 21:54:28 -08:00
# Copy the GalaxyInstaller_* folder to Downloads
echo " Found Galaxy installer folder: $galaxy_installer_folder "
cp -r " $galaxy_installer_folder " " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/ "
# Navigate to the copied folder in Downloads
2024-09-28 22:11:00 -07:00
cd " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/ $( basename " $galaxy_installer_folder " ) "
2023-05-05 15:24:07 -07:00
2024-06-28 19:05:32 -07:00
# Run GalaxySetup.exe with the /VERYSILENT and /NORESTART options
echo "Running GalaxySetup.exe with the /VERYSILENT and /NORESTART options"
2024-12-13 21:54:28 -08:00
" $STEAM_RUNTIME " " $proton_dir /proton " run GalaxySetup.exe /VERYSILENT /NORESTART &
# Wait for the GalaxySetup.exe to finish running with a timeout of 90 seconds
end = $(( SECONDS+90)) # Timeout after 90 seconds
while true; do
# Kill GalaxyClient.exe every 10 seconds if it's running
2024-12-13 22:19:42 -08:00
if [ $(( SECONDS % 20 )) -eq 0 ] ; then
2024-12-13 21:54:28 -08:00
if pgrep -f "GalaxyClient.exe" > /dev/null; then
echo "Killing GalaxyClient.exe"
pkill -f "GalaxyClient.exe"
fi
fi
# Break the loop when GalaxySetup.exe finishes
if ! pgrep -f "GalaxySetup.exe" > /dev/null; then
echo "GalaxySetup.exe has finished running"
break
fi
# Timeout check (90 seconds)
if [ $SECONDS -gt $end ] ; then
echo "Timeout while waiting for GalaxySetup.exe to finish"
break
fi
sleep 1
done
2024-06-28 19:05:32 -07:00
}
2023-05-05 15:24:07 -07:00
2024-08-02 03:26:30 -07:00
2024-06-28 19:05:32 -07:00
# Battle.net specific installation steps
function install_battlenet {
terminate_processes "Battle.net.exe" #"BlizzardError.exe"
2024-08-28 02:38:54 -07:00
# Second installation
echo "Starting second installation of Battle.net"
" $STEAM_RUNTIME " " $proton_dir /proton " run " $battle_file " Battle.net-Setup.exe --lang= enUS --installpath= "C:\Program Files (x86)\Battle.net" &
second_install_pid = $!
# Wait for both installations to complete
wait $first_install_pid
wait $second_install_pid
terminate_processes "Battle.net.exe" #"BlizzardError.exe"
2024-06-28 19:05:32 -07:00
}
2023-05-05 15:24:07 -07:00
2024-06-28 19:05:32 -07:00
# Amazon Games specific installation steps
function install_amazon {
terminate_processes "Amazon Games.exe"
}
2023-05-05 15:24:07 -07:00
2024-06-28 19:05:32 -07:00
function install_eaapp {
terminate_processes "EADesktop.exe"
2024-08-02 03:26:30 -07:00
# Additional download for EA App
eaapp_download_dir = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/drive_c/users/steamuser/Downloads/ "
eaapp_file_name = "EAappInstaller.exe" # Replace with the actual file name if different
# Create the directory if it doesn't exist
mkdir -p " $eaapp_download_dir "
# Download the file
wget " $eaapp_url " -O " ${ eaapp_download_dir } ${ eaapp_file_name } "
2024-06-28 19:05:32 -07:00
}
2023-05-05 15:24:07 -07:00
2024-08-02 03:26:30 -07:00
2024-06-28 19:05:32 -07:00
# itch.io specific installation steps
function install_itchio {
terminate_processes "itch.exe"
}
2024-01-25 01:59:30 -08:00
2024-06-28 19:05:32 -07:00
# Humble Games specific installation steps
function install_humblegames {
2024-01-25 01:59:30 -08:00
# Create the handle-humble-scheme script
if [ [ ! -f " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/handle-humble-scheme " ] ] ; then
2024-06-28 19:05:32 -07:00
cat << EOF > " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/handle-humble-scheme "
#!/usr/bin/env sh
set -e
export STEAM_COMPAT_CLIENT_INSTALL_PATH = ~/.local/share/Steam
export STEAM_COMPAT_DATA_PATH = ~/.steam/steam/steamapps/compatdata/$appid
FIXED_SCHEME = "\$(echo " \$ 1" | sed " s/?/\/ /")"
2024-08-22 22:17:07 +09:00
echo \$ FIXED_SCHEME > " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/drive_c/.auth "
2024-06-28 19:05:32 -07:00
" $STEAM_RUNTIME " " $proton_dir /proton " run ~/.local/share/Steam/steamapps/compatdata/$appid /pfx/start-humble.cmd
EOF
2024-01-25 01:59:30 -08:00
chmod +x " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/handle-humble-scheme "
fi
# Create the Humble-scheme-handler.desktop file
if [ [ ! -f " ${ logged_in_home } /.local/share/applications/Humble-scheme-handler.desktop " ] ] ; then
2024-06-28 19:05:32 -07:00
cat << EOF > " ${ logged_in_home } /.local/share/applications/Humble-scheme-handler.desktop "
[ Desktop Entry]
Name = Humble App ( Login)
Comment = Target for handling Humble App logins. You should not run this manually.
Exec = ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/$appid /pfx/handle-humble-scheme %u
Type = Application
MimeType = x-scheme-handler/humble;
EOF
2024-01-25 01:59:30 -08:00
desktop-file-install --rebuild-mime-info-cache --dir= ${ logged_in_home } /.local/share/applications " ${ logged_in_home } /.local/share/applications/Humble-scheme-handler.desktop "
fi
# Create the start-humble.cmd script
if [ [ ! -f " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/start-humble.cmd " ] ] ; then
2024-06-28 19:05:32 -07:00
cat << EOF > " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid /pfx/start-humble.cmd "
@echo off
cd /d " C:\Program Files\Humble App\"
set /p Url = <"C:\.auth"
if defined Url (
start "" "Humble App.exe" "%Url%"
) else (
start "" "Humble App.exe" "%*"
)
exit
EOF
2024-05-06 11:53:54 -07:00
fi
2024-06-28 19:05:32 -07:00
wait
}
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Rockstar Games Launcher specific installation steps
function install_rockstar {
2024-05-13 05:11:59 -07:00
#Manually Install Rockstar Game Launcher
# Define directories and files
toolsDir = $( dirname " $( readlink -f " $0 " ) " )
checksumType = 'sha256'
rstarInstallUnzipFileDir = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/Rockstar "
rstarInstallDir = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ appid } /pfx/drive_c/Program Files/Rockstar Games/Launcher "
rstarStartMenuRunShortcutFolder = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ appid } /pfx/drive_c/users/steamuser/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Rockstar Games "
rstarStartMenuRunShortcut = " $rstarStartMenuRunShortcutFolder /Rockstar Games Launcher.lnk "
rstarRunTarget = " $rstarInstallDir /LauncherPatcher.exe "
rstarInstallUnzipFile = $rockstar_file
url = $rockstar_url
# Define checksum
checksum = '589f6b251424e01dcd912e6a059d2d98f33fa73aadcd6376c0e1f1109f594b48'
# Verify checksum (sha256sum command may vary based on distribution)
echo " $checksum $rstarInstallUnzipFile " | sha256sum -c -
# Extract files from EXE and capture the output
output = $( 7z e " $rockstar_file " -o" $rstarInstallUnzipFileDir " -aoa)
# Parse the output to get the ProductVersion
version = $( echo " $output " | grep 'ProductVersion:' | awk '{print $2}' )
ls -l " $rstarInstallUnzipFileDir "
# Create Program Files folders to prepare for copying files
mkdir -p " $rstarInstallDir /Redistributables/VCRed "
mkdir -p " $rstarInstallDir /ThirdParty/Steam "
mkdir -p " $rstarInstallDir /ThirdParty/Epic "
cp " $rstarInstallUnzipFileDir /449 " " $rstarInstallDir /Redistributables/VCRed/vc_redist.x64.exe "
cp " $rstarInstallUnzipFileDir /450 " " $rstarInstallDir /Redistributables/VCRed/vc_redist.x86.exe "
cp " $rstarInstallUnzipFileDir /451 " " $rstarInstallDir /ThirdParty/Steam/steam_api64.dll "
while IFS = ' ' read -r number dll; do
dll = ${ dll // \/ / \\ }
filename = $( basename " $dll " | tr -d '\r' )
if [ [ $dll = = Redistributables\\ * ] ] || [ [ $dll = = ThirdParty\\ Steam\\ * ] ] || [ [ $number = = 474 ] ] || [ [ $number = = 475 ] ] ; then
continue
elif [ [ $dll = = ThirdParty\\ Epic\\ * ] ] ; then
cp " $rstarInstallUnzipFileDir / $number " " $epicInstallDir / $filename "
else
cp " $rstarInstallUnzipFileDir / $number " " $rstarInstallDir / $filename "
fi
done < " $download_dir /Rockstar/211 "
cp " $rstarInstallUnzipFileDir /474 " " $rstarInstallDir /ThirdParty/Epic/EOSSDK-Win64-Shipping.dll "
cp " $rstarInstallUnzipFileDir /475 " " $rstarInstallDir /ThirdParty/Epic/EOSSDK-Win64-Shipping-1.14.2.dll "
# Use a loop for chmod commands
for file in Launcher.exe LauncherPatcher.exe offline.pak RockstarService.exe RockstarSteamHelper.exe uninstall.exe; do
chmod +x " $rstarInstallDir / $file "
done
size_kb = $( du -sk " $rstarInstallDir " | cut -f1)
size_hex = $( printf '%08x\n' $size_kb )
wine_registry_path = "HKEY_LOCAL_MACHINE\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Rockstar Games Launcher"
# Use a loop for registry commands
declare -A registry_keys = (
[ "DisplayName" ] = "Rockstar Games Launcher"
[ "DisplayIcon" ] = "C:\\Program Files\\Rockstar Games\\Launcher\\Launcher.exe, 0"
[ "DisplayVersion" ] = " $version "
[ "Publisher" ] = "Rockstar Games"
[ "InstallLocation" ] = "C:\\Program Files\\Rockstar Games\\Launcher"
[ "EstimatedSize" ] = " 0x $size_hex "
[ "UninstallString" ] = "C:\\Program Files\\Rockstar Games\\Launcher\\uninstall.exe"
[ "QuietUninstallString" ] = "\"C:\\Program Files\\Rockstar Games\\Launcher\\uninstall.exe\" /S"
[ "HelpLink" ] = "https://www.rockstargames.com/support"
[ "URLInfoAbout" ] = "https://www.rockstargames.com/support"
[ "URLUpdateInfo" ] = "https://www.rockstargames.com"
[ "NoModify" ] = "0x1"
[ "NoRepair" ] = "0x1"
[ "Comments" ] = "Rockstar Games Launcher"
[ "Readme" ] = "https://www.rockstargames.com/support"
)
for key in " ${ !registry_keys[@] } " ; do
" $STEAM_RUNTIME " " $proton_dir /proton " run reg add " $wine_registry_path " /v " $key " /t REG_SZ /d " ${ registry_keys [ $key ] } " /f
done
" $STEAM_RUNTIME " " $proton_dir /proton " run " $rstarInstallDir /Redistributables/VCRed/vc_redist.x64.exe " /install /quiet /norestart
" $STEAM_RUNTIME " " $proton_dir /proton " run " $rstarInstallDir /Redistributables/VCRed/vc_redist.x86.exe " /install /quiet /norestart
2024-06-28 19:05:32 -07:00
wait
}
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# VK Play specific installation steps
function install_vkplay {
terminate_processes "GameCenter.exe"
}
2024-05-06 11:53:54 -07:00
2024-08-02 03:26:30 -07:00
# Nexon specific installation steps
function install_nexon {
terminate_processes "nexon_runtime.e"
}
2024-05-06 11:53:54 -07:00
2023-06-02 16:20:17 -06:00
2024-08-28 04:25:50 -07:00
# HoYo specific installation steps
function install_hoyo {
hoyo_dir = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ appid } /pfx/drive_c/Program Files/HoYoPlay "
2024-08-28 20:01:26 -07:00
installer_file = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/HoYoPlay_install.exe "
2024-08-28 04:25:50 -07:00
target_dir = " ${ hoyo_dir } /1.0.5.88 "
echo "Creating directory for HoYoPlay..."
mkdir -p " ${ hoyo_dir } " || { echo "Failed to create directory" ; return 1; }
echo "Copying installer to the target directory..."
cp " ${ installer_file } " " ${ hoyo_dir } " || { echo "Failed to copy installer" ; return 1; }
echo "Changing directory to the target directory..."
cd " ${ hoyo_dir } " || { echo "Failed to change directory" ; return 1; }
echo "Running 7z extraction..."
2024-08-28 20:01:26 -07:00
output = $( 7z x "HoYoPlay_install.exe" -o" ${ hoyo_dir } " -aoa)
2024-08-28 04:25:50 -07:00
if [ $? -ne 0 ] ; then
echo "Extraction failed"
echo " 7z output: $output "
return 1
fi
echo "Extraction completed successfully"
echo "Copying launcher.exe to the HoYoPlay directory..."
cp " ${ target_dir } /launcher.exe " " ${ hoyo_dir } /launcher.exe " || { echo "Failed to copy launcher.exe" ; return 1; }
echo "Running HYP.exe..."
" $STEAM_RUNTIME " " $proton_dir /proton " run " ${ target_dir } /HYP.exe " || { echo "Failed to run HYP.exe" ; return 1; } &
sleep 5 # Wait for 5 seconds before terminating HYP.exe
2024-08-28 04:35:30 -07:00
terminate_processes "HYP.exe"
2024-08-28 04:25:50 -07:00
echo "Removing installer file..."
2024-08-28 20:01:26 -07:00
rm -f " ${ hoyo_dir } /HoYoPlay_install.exe " || { echo "Failed to remove installer file" ; return 1; }
2024-08-28 04:25:50 -07:00
echo "HoYoPlay installation steps completed successfully"
}
2024-08-28 20:01:26 -07:00
2025-01-28 03:12:24 -08:00
2024-06-28 19:05:32 -07:00
#Launcher Installs
function install_launcher {
launcher_name = $1
appid_name = $2
file_name = $3
file_url = $4
run_command = $5
progress_update = $6
pre_install_command = $7
post_install_command = $8
run_in_background = $9 # New parameter to specify if the launcher should run in the background
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
echo " ${ progress_update } "
echo " # Downloading & Installing ${ launcher_name } ...please wait... "
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Check if the user selected the launcher
if [ [ $options = = *" ${ launcher_name } " * ] ] ; then
# User selected the launcher
echo " User selected ${ launcher_name } "
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Set the appid for the launcher
if [ " $use_separate_appids " = true ] ; then
appid = ${ appid_name }
else
appid = NonSteamLaunchers
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid " ] ; then
mkdir -p " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ $appid "
fi
2023-06-02 16:20:17 -06:00
2024-06-28 19:05:32 -07:00
# Change working directory to Proton's
cd $proton_dir
2023-06-03 23:17:16 -07:00
2024-06-28 19:05:32 -07:00
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH = " ${ logged_in_home } /.local/share/Steam "
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Set the STEAM_COMPAT_DATA_PATH environment variable for the launcher
export STEAM_COMPAT_DATA_PATH = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ appid } "
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Download file
if [ ! -f " $file_name " ] ; then
echo " Downloading ${ file_name } "
wget $file_url -O $file_name
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Execute the pre-installation command, if provided
if [ -n " $pre_install_command " ] ; then
echo " Executing pre-install command for ${ launcher_name } "
eval " $pre_install_command "
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Run the file using Proton with the specified command
echo " Running ${ file_name } using Proton with the specified command "
if [ " $run_in_background " = true ] ; then
if [ " $launcher_name " = "GOG Galaxy" ] ; then
" $STEAM_RUNTIME " " $proton_dir /proton " run " $exe_file " &
install_gog
elif [ " $launcher_name " = "Battle.net" ] ; then
" $STEAM_RUNTIME " " $proton_dir /proton " run " $battle_file " Battle.net-Setup.exe --lang= enUS --installpath= "C:\Program Files (x86)\Battle.net" &
install_battlenet
elif [ " $launcher_name " = "Amazon Games" ] ; then
" $STEAM_RUNTIME " " $proton_dir /proton " run " $amazon_file " &
install_amazon
elif [ " $launcher_name " = "Humble Games Collection" ] ; then
" $STEAM_RUNTIME " " $proton_dir /proton " run " $humblegames_file " /S /D= "C:\Program Files\Humble App"
wait
install_humblegames
elif [ " $launcher_name " = "Rockstar Games Launcher" ] ; then
install_rockstar
2025-01-28 03:12:24 -08:00
elif [ " $launcher_name " = "ARC Launcher" ] ; then
" $STEAM_RUNTIME " " $proton_dir /proton " run " $arc_file "
pid = $!
while pgrep -x "Arc3Install_202" > /dev/null; do
sleep 1
done
sleep 5
echo "ARC Launcher installation complete."
2024-06-28 19:05:32 -07:00
else
" $STEAM_RUNTIME " " $proton_dir /proton " run ${ run_command } &
fi
else
" $STEAM_RUNTIME " " $proton_dir /proton " run ${ run_command }
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Execute the post-installation command, if provided
if [ -n " $post_install_command " ] ; then
echo " Executing post-install command for ${ launcher_name } "
eval " $post_install_command "
fi
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Wait for the installation process to complete
wait
2024-05-06 11:53:54 -07:00
fi
2024-06-28 19:05:32 -07:00
}
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Install Epic Games Launcher
install_launcher "Epic Games" "EpicGamesLauncher" " $msi_file " " $msi_url " "MsiExec.exe /i " $msi_file " -opengl /qn" "30" "" ""
2024-05-06 11:53:54 -07:00
2024-06-28 19:05:32 -07:00
# Install GOG Galaxy
install_launcher "GOG Galaxy" "GogGalaxyLauncher" " $exe_file " " $exe_url " " $exe_file " "40" "" "" true
2023-06-12 04:05:58 -07:00
2024-06-28 19:05:32 -07:00
# Install Ubisoft Connect
install_launcher "Ubisoft Connect" "UplayLauncher" " $ubi_file " " $ubi_url " " $ubi_file /S " "50" "" ""
2023-06-10 14:05:24 -07:00
2024-06-28 19:05:32 -07:00
# Install Battle.net
install_launcher "Battle.net" "Battle.netLauncher" " $battle_file " " $battle_url " "" "70" "" "" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
#Install Amazon Games
install_launcher "Amazon Games" "AmazonGamesLauncher" " $amazon_file " " $amazon_url " "" "80" "" "" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
#Install EA App
install_launcher "EA App" "TheEAappLauncher" " $eaapp_file " " $eaapp_url " " $eaapp_file /quiet " "88" "" "install_eaapp" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install itch.io
install_launcher "itch.io" "itchioLauncher" " $itchio_file " " $itchio_url " " $itchio_file --silent " "89" "" "install_itchio" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install Legacy Games
install_launcher "Legacy Games" "LegacyGamesLauncher" " $legacygames_file " " $legacygames_url " " $legacygames_file /S " "90" "" ""
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install Humble Games
install_launcher "Humble Games Collection" "HumbleGamesLauncher" " $humblegames_file " " $humblegames_url " "" "91" "" "" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install IndieGala
install_launcher "IndieGala" "IndieGalaLauncher" " $indiegala_file " " $indiegala_url " " $indiegala_file /S " "92" "" ""
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install Rockstar Games Launcher
install_launcher "Rockstar Games Launcher" "RockstarGamesLauncher" " $rockstar_file " " $rockstar_url " "" "93" "" "" true
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install Glyph Launcher
install_launcher "Glyph Launcher" "GlyphLauncher" " $glyph_file " " $glyph_url " " $glyph_file " "94" "" ""
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install Playstation Plus Launcher
install_launcher "Playstation Plus" "PlaystationPlusLauncher" " $psplus_file " " $psplus_url " " $psplus_file /q " "96" "" ""
2023-11-24 14:52:03 +00:00
2024-06-28 19:05:32 -07:00
# Install VK Play
install_launcher "VK Play" "VKPlayLauncher" " $vkplay_file " " $vkplay_url " " $vkplay_file " "98" "" "install_vkplay" true
2024-07-03 05:00:44 -07:00
# Install Hoyo Play
2024-08-28 04:25:50 -07:00
install_launcher "HoYoPlay" "HoYoPlayLauncher" " $hoyoplay_file " " $hoyoplay_url " "" "99" "" "install_hoyo" true
2024-08-02 03:26:30 -07:00
# Install Nexon Launcher
install_launcher "Nexon Launcher" "NexonLauncher" " $nexon_file " " $nexon_url " " $nexon_file " "99" "" "install_nexon" true
2025-01-28 03:12:24 -08:00
# Install GameJolt Launcher
install_launcher "Game Jolt Client" "GameJoltLauncher" " $gamejolt_file " " $gamejolt_url " " $gamejolt_file /silent " "99" "" ""
# Install artix Launcher
install_launcher "Artix Game Launcher" "ArtixGameLauncher" " $artixgame_file " " $artixgame_url " " $artixgame_file /S " "99" "" ""
# Install ARC Launcher
install_launcher "ARC Launcher" "ARCLauncher" " $arc_file " " $arc_url " " $arc_file " "99" "" "" true
2024-06-28 19:05:32 -07:00
#End of Launcher Installations
2023-11-24 14:52:03 +00:00
2024-10-25 03:28:42 -07:00
2024-10-24 23:26:38 -07:00
wait
2024-05-17 01:03:21 -07:00
echo "99"
echo "# Checking if Chrome is installed...please wait..."
# Check if user selected any of the options
2025-01-21 17:33:07 -08:00
if [ [ $options = = *"Apple TV+" * ] ] || [ [ $options = = *"Plex" * ] ] || [ [ $options = = *"Crunchyroll" * ] ] || [ [ $options = = *"WebRcade" * ] ] || [ [ $options = = *"WebRcade Editor" * ] ] || [ [ $options = = *"Netflix" * ] ] || [ [ $options = = *"Fortnite" * ] ] || [ [ $options = = *"Venge" * ] ] || [ [ $options = = *"Xbox Game Pass" * ] ] || [ [ $options = = *"Geforce Now" * ] ] || [ [ $options = = *"Boosteroid Cloud Gaming" * ] ] || [ [ $options = = *"Amazon Luna" * ] ] || [ [ $options = = *"Hulu" * ] ] || [ [ $options = = *"Disney+" * ] ] || [ [ $options = = *"Amazon Prime Video" * ] ] || [ [ $options = = *"Youtube" * ] ] || [ [ $options = = *"Twitch" * ] ] || [ [ $options = = *"Stim.io" * ] ] || [ [ $options = = *"WatchParty" * ] ] ; then
2024-10-24 23:24:59 -07:00
2024-05-17 01:03:21 -07:00
# User selected one of the options
echo "User selected one of the options"
# Check if Google Chrome is already installed
if flatpak list | grep com.google.Chrome & > /dev/null; then
echo "Google Chrome is already installed"
flatpak --user override --filesystem= /run/udev:ro com.google.Chrome
else
# Check if the Flathub repository exists
if flatpak remote-list | grep flathub & > /dev/null; then
echo "Flathub repository exists"
else
# Add the Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
fi
2023-07-12 01:21:19 -07:00
2024-05-17 01:03:21 -07:00
# Install Google Chrome
flatpak install --user flathub com.google.Chrome -y
# Run the flatpak --user override command
flatpak --user override --filesystem= /run/udev:ro com.google.Chrome
fi
fi
2024-10-24 23:24:59 -07:00
2024-09-08 00:56:46 -07:00
echo "99.1"
echo "# Checking if Ludusavi is installed...please wait..."
# AutoInstall Ludusavi
# Check if Ludusavi is already installed
if flatpak list | grep com.github.mtkennerly.ludusavi & > /dev/null; then
echo "Ludusavi is already installed"
else
# Check if the Flathub repository exists
if flatpak remote-list | grep flathub & > /dev/null; then
echo "Flathub repository exists"
else
# Add the Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
fi
# Install Ludusavi
flatpak install --user flathub com.github.mtkennerly.ludusavi -y
fi
echo "Ludusavi installation script completed"
# Ensure Ludusavi is installed before proceeding
if ! flatpak list | grep com.github.mtkennerly.ludusavi & > /dev/null; then
echo "Ludusavi installation failed. Exiting script."
exit 1
fi
2024-09-09 21:47:24 -07:00
2024-09-08 00:56:46 -07:00
rclone_zip_url = "https://downloads.rclone.org/rclone-current-linux-amd64.zip"
rclone_zip_file = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation/rclone-current-linux-amd64.zip "
2024-09-09 13:25:28 -07:00
rclone_base_dir = " ${ logged_in_home } /Downloads/NonSteamLaunchersInstallation "
2024-09-09 21:47:24 -07:00
nsl_config_dir = " ${ logged_in_home } /.var/app/com.github.mtkennerly.ludusavi/config/ludusavi/NSLconfig "
# Function to download and extract rclone
download_and_extract_rclone( ) {
# Check if rclone already exists in the NSLconfig directory
if [ -f " ${ nsl_config_dir } /rclone " ] ; then
echo " rclone already exists in ${ nsl_config_dir } . Skipping download. "
return
fi
2024-09-08 00:56:46 -07:00
2024-09-09 21:47:24 -07:00
if [ -d " $rclone_base_dir " ] ; then
echo "Downloading rclone..."
if ! wget -O " $rclone_zip_file " " $rclone_zip_url " ; then
echo "Failed to download rclone. Exiting script."
exit 1
fi
2024-09-08 00:56:46 -07:00
2024-09-09 21:47:24 -07:00
echo "Extracting rclone..."
if ! unzip -o " $rclone_zip_file " -d " $rclone_base_dir " ; then
echo "Failed to extract rclone. Exiting script."
exit 1
fi
2024-09-09 13:25:28 -07:00
2024-09-09 21:47:24 -07:00
echo "rclone downloaded and extracted"
else
echo "Download directory does not exist. Exiting script."
return
fi
# Find the extracted rclone directory dynamically
rclone_extract_dir = $( find " $rclone_base_dir " -maxdepth 1 -type d -name "rclone-v*-linux-amd64" | head -n 1)
rclone_bin = " ${ rclone_extract_dir } /rclone "
# Debug: Check if rclone_bin exists
if [ -f " $rclone_bin " ] ; then
echo " rclone binary found at $rclone_bin "
else
echo " rclone binary not found at $rclone_bin . Exiting script. "
return
fi
2024-09-09 13:25:28 -07:00
2024-09-09 21:47:24 -07:00
# Ensure the NSLconfig directory exists
mkdir -p " $nsl_config_dir "
# Move rclone to the NSLconfig directory
if [ -f " $rclone_bin " ] ; then
echo " Moving rclone to $nsl_config_dir "
mv " $rclone_bin " " $nsl_config_dir "
rclone_path = " ${ nsl_config_dir } /rclone "
echo " rclone moved to $nsl_config_dir "
else
echo "rclone binary not found. Exiting script."
fi
}
# Run the function in a separate process
download_and_extract_rclone &
rclone_pid = $!
wait $rclone_pid
2024-09-09 13:25:28 -07:00
2024-09-08 00:56:46 -07:00
# Setting up Backup Saves through Ludusavi
# Define the directory and file path
config_dir = " ${ logged_in_home } /.var/app/com.github.mtkennerly.ludusavi/config/ludusavi "
2024-09-09 13:25:28 -07:00
nsl_config_dir = " $config_dir /NSLconfig "
2024-09-08 00:56:46 -07:00
backup_dir = " $config_dir /config_backups "
timestamp = $( date +%m-%d-%Y_%H:%M:%S)
backup_config_file = " $backup_dir /config.yaml.bak_ $timestamp "
# Create the backup directory if it doesn't exist
mkdir -p " $backup_dir "
# Backup existing config.yaml if it exists
2024-09-09 13:25:28 -07:00
if [ -f " $config_dir /config.yaml " ] ; then
cp " $config_dir /config.yaml " " $backup_config_file "
2024-09-08 00:56:46 -07:00
echo " Existing config.yaml backed up to $backup_config_file "
fi
2024-05-17 01:03:21 -07:00
2024-09-09 13:25:28 -07:00
# Create the NSLconfig directory if it doesn't exist
mkdir -p " $nsl_config_dir "
2024-09-08 00:56:46 -07:00
2024-09-09 13:25:28 -07:00
# Write the configuration to the NSLconfig file
cat <<EOL > " $nsl_config_dir /config.yaml "
2024-09-08 00:56:46 -07:00
---
runtime:
threads: ~
release:
check: true
manifest:
enable: true
language: en-US
theme: light
roots:
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/EpicGamesLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/UplayLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/Battle.netLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/itchioLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/IndieGalaLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/RockstarGamesLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GlyphLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/PlaystationPlusLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/VKPlayLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/HoYoPlayLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NexonLauncher/pfx/drive_c/
2025-01-28 03:12:24 -08:00
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/GameJoltLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ArtixGameLauncher/pfx/drive_c/
- store: otherWindows
path: ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ARCLauncher/pfx/drive_c/
2024-09-08 00:56:46 -07:00
redirects: [ ]
backup:
path: ${ logged_in_home } /NSLGameSaves
ignoredGames: [ ]
filter:
excludeStoreScreenshots: false
cloud:
exclude: false
epic: false
gog: false
origin: false
steam: false
uplay: false
ignoredPaths: [ ]
ignoredRegistry: [ ]
toggledPaths: { }
toggledRegistry: { }
sort:
key: status
reversed: false
retention:
full: 1
differential: 0
format:
chosen: simple
zip:
compression: deflate
compression:
deflate:
level: 6
bzip2:
level: 6
zstd:
level: 10
restore:
path: ${ logged_in_home } /NSLGameSaves
ignoredGames: [ ]
toggledPaths: { }
toggledRegistry: { }
sort:
key: status
reversed: false
scan:
showDeselectedGames: true
showUnchangedGames: true
showUnscannedGames: true
cloud:
remote: ~
path: NSLGameSaves
synchronize: true
apps:
rclone:
2024-09-09 21:47:24 -07:00
path: " ${ logged_in_home } /.var/app/com.github.mtkennerly.ludusavi/config/ludusavi/NSLconfig/rclone "
2024-09-08 00:56:46 -07:00
arguments: "--fast-list --ignore-checksum"
customGames: [ ]
EOL
# Run Once
echo "Running backup..."
2024-09-09 13:25:28 -07:00
nohup flatpak run com.github.mtkennerly.ludusavi --config " $nsl_config_dir " backup --force > /dev/null 2>& 1 &
2024-09-08 00:56:46 -07:00
wait $!
echo "Backup completed"
# End of Ludusavi configuration
2024-08-04 02:05:02 -07:00
2024-04-29 02:50:16 -07:00
2024-10-25 03:28:42 -07:00
2023-07-24 00:10:27 -07:00
echo "100"
echo "# Installation Complete - Steam will now restart. Your launchers will be in your library!...Food for thought...do Jedis use Force Compatability?"
2023-04-27 13:51:00 -07:00
) |
zenity --progress \
--title= "Update Status" \
2023-05-16 16:27:45 -07:00
--text= "Starting update...please wait..." --width= 450 --height= 350\
2023-07-24 00:10:27 -07:00
--percentage= 0 --auto-close
2023-04-26 17:15:25 -07:00
2024-06-22 05:28:03 -07:00
# Write to env_vars
2024-01-17 04:10:45 -08:00
# Initialize the env_vars file
> ${ logged_in_home } /.config/systemd/user/env_vars
2024-06-22 05:28:03 -07:00
write_env_vars( ) {
local launcher_path = " $1 "
local launcher_name = " $2 "
local launcher_dir_name = " $3 "
local launcher_args = " $4 " # Additional parameter for launcher-specific arguments
local launcher_env_var_name = " $5 " # Additional parameter for the environment variable name
2024-05-18 21:48:43 -07:00
2024-06-22 05:28:03 -07:00
local shortcut_directory = " \" ${ launcher_path } \" ${ launcher_args } "
local launch_options = " STEAM_COMPAT_DATA_PATH=\" ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/ ${ launcher_dir_name } /\" %command% "
local starting_dir = " \" $( dirname " ${ launcher_path } " ) \" "
2024-05-18 21:48:43 -07:00
2024-06-22 05:28:03 -07:00
# Write the variables directly to the env_vars file
echo " export ${ launcher_name } shortcutdirectory= ${ shortcut_directory } " >> " ${ logged_in_home } /.config/systemd/user/env_vars "
echo " export ${ launcher_name } launchoptions= ${ launch_options } " >> " ${ logged_in_home } /.config/systemd/user/env_vars "
echo " export ${ launcher_name } startingdir= ${ starting_dir } " >> " ${ logged_in_home } /.config/systemd/user/env_vars "
echo " export ${ launcher_env_var_name } = ${ launcher_dir_name } " >> " ${ logged_in_home } /.config/systemd/user/env_vars "
2024-05-18 21:48:43 -07:00
2024-06-22 05:28:03 -07:00
echo " ${ launcher_name ^ } Launcher found at ${ launcher_path } "
}
2024-05-18 21:48:43 -07:00
2024-06-22 05:28:03 -07:00
check_and_write( ) {
local launcher_name = " $1 "
local path1 = " $2 "
local path2 = " $3 "
local launcher_dir_name_path1 = " $4 "
local launcher_dir_name_path2 = " $5 "
local launcher_args = " $6 "
local launcher_env_var_name = " $7 "
if [ [ -f " $path1 " ] ] ; then
write_env_vars " $path1 " " $launcher_name " " $launcher_dir_name_path1 " " $launcher_args " " $launcher_env_var_name "
elif [ [ -f " $path2 " ] ] ; then
write_env_vars " $path2 " " $launcher_name " " $launcher_dir_name_path2 " " $launcher_args " " $launcher_env_var_name "
else
echo " ${ launcher_name ^ } Launcher not found "
fi
}
2024-05-18 21:48:43 -07:00
2024-06-22 05:28:03 -07:00
# Env_vars Configuration Paths
check_and_write "epic" " $epic_games_launcher_path1 " " $epic_games_launcher_path2 " "NonSteamLaunchers" "EpicGamesLauncher" "-opengl" "epic_games_launcher"
check_and_write "gog" " $gog_galaxy_path1 " " $gog_galaxy_path2 " "NonSteamLaunchers" "GogGalaxyLauncher" "" "gog_galaxy_launcher"
check_and_write "uplay" " $uplay_path1 " " $uplay_path2 " "NonSteamLaunchers" "UplayLauncher" "" "ubisoft_connect_launcher"
check_and_write "battlenet" " $battlenet_path1 " " $battlenet_path2 " "NonSteamLaunchers" "Battle.netLauncher" "" "bnet_launcher"
check_and_write "eaapp" " $eaapp_path1 " " $eaapp_path2 " "NonSteamLaunchers" "TheEAappLauncher" "" "ea_app_launcher"
check_and_write "amazon" " $amazongames_path1 " " $amazongames_path2 " "NonSteamLaunchers" "AmazonGamesLauncher" "" "amazon_launcher"
check_and_write "itchio" " $itchio_path1 " " $itchio_path2 " "NonSteamLaunchers" "itchioLauncher" "" "itchio_launcher"
check_and_write "legacy" " $legacygames_path1 " " $legacygames_path2 " "NonSteamLaunchers" "LegacyGamesLauncher" "" "legacy_launcher"
check_and_write "humble" " $humblegames_path1 " " $humblegames_path2 " "NonSteamLaunchers" "HumbleGamesLauncher" "" "humble_launcher"
check_and_write "indie" " $indiegala_path1 " " $indiegala_path2 " "NonSteamLaunchers" "IndieGalaLauncher" "" "indie_launcher"
check_and_write "rockstar" " $rockstar_path1 " " $rockstar_path2 " "NonSteamLaunchers" "RockstarGamesLauncher" "" "rockstar_launcher"
check_and_write "glyph" " $glyph_path1 " " $glyph_path2 " "NonSteamLaunchers" "GlyphLauncher" "" "glyph_launcher"
check_and_write "psplus" " $psplus_path1 " " $psplus_path2 " "NonSteamLaunchers" "PlaystationPlusLauncher" "" "psplus_launcher"
check_and_write "vkplay" " $vkplay_path1 " " $vkplay_path2 " "NonSteamLaunchers" "VKPlayLauncher" "" "vkplay_launcher"
2024-07-03 05:00:44 -07:00
check_and_write "hoyoplay" " $hoyoplay_path1 " " $hoyoplay_path2 " "NonSteamLaunchers" "HoYoPlayLauncher" "" "hoyoplay_launcher"
2024-08-02 03:26:30 -07:00
check_and_write "nexon" " $nexon_path1 " " $nexon_path2 " "NonSteamLaunchers" "NexonLauncher" "" "nexon_launcher"
2025-01-28 03:12:24 -08:00
check_and_write "gamejolt" " $gamejolt_path1 " " $gamejolt_path2 " "NonSteamLaunchers" "GameJoltLauncher" "" "gamejolt_launcher"
check_and_write "artixgame" " $artixgame_path1 " " $artixgame_path2 " "NonSteamLaunchers" "ArtixGameLauncher" "" "artixgame_launcher"
check_and_write "arc" " $arc_path1 " " $arc_path2 " "NonSteamLaunchers" "ARCLauncher" "" "arc_launcher"
2024-08-02 03:26:30 -07:00
# Special Shortcut for EA App NoRepair
eaapp_path1 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe "
eaapp_path2 = " ${ logged_in_home } /.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/users/steamuser/Downloads/EAappInstaller.exe "
check_and_write "repaireaapp" " $eaapp_path1 " " $eaapp_path2 " "NonSteamLaunchers" "TheEAappLauncher" "" "repaireaapp"
2024-06-22 05:28:03 -07:00
# End of writing to env_vars
2024-05-18 21:48:43 -07:00
2024-06-28 19:05:32 -07:00
# Set the env_vars variable
if [ " $use_separate_appids " != true ] ; then
echo " export separate_appids= $use_separate_appids " >> ${ logged_in_home } /.config/systemd/user/env_vars
fi
2023-08-12 11:47:52 -05:00
2024-05-07 11:45:25 -07:00
2024-05-18 21:39:24 -07:00
2024-08-02 03:26:30 -07:00
2024-05-09 21:09:08 -07:00
#Other Applications
if [ [ $options = = *"RemotePlayWhatever" * ] ] ; then
# Set the directory path
DIRECTORY = " ${ logged_in_home } /.local/share/applications "
# Check if the directory exists
if [ ! -d " $DIRECTORY " ] ; then
mkdir -p " $DIRECTORY "
fi
# Get the latest release URL for RemotePlayWhatever
RELEASE_URL = $( curl -s https://api.github.com/repos/m4dEngi/RemotePlayWhatever/releases/latest | grep -o 'https://github.com/m4dEngi/RemotePlayWhatever/releases/download/.*RemotePlayWhatever.*\.AppImage' )
# Download the latest RemotePlayWhatever AppImage
wget -P " $DIRECTORY " " $RELEASE_URL "
# Get the downloaded file name
DOWNLOADED_FILE = $( basename " $RELEASE_URL " )
# Rename the downloaded file
mv " $DIRECTORY / $DOWNLOADED_FILE " " $DIRECTORY /RemotePlayWhatever "
# Make the file executable
chmod +x " $DIRECTORY /RemotePlayWhatever "
echo " RemotePlayWhatever downloaded, renamed to Remote Play Whatever, made executable, created in $DIRECTORY "
2024-05-13 21:09:26 -07:00
# Create a new .desktop file
echo " [Desktop Entry]
Type = Application
Exec = $DIRECTORY /RemotePlayWhatever \" --appid 0\"
Name = RemotePlayWhatever
Icon = $DIRECTORY /RemotePlayWhatever" > " $DIRECTORY /RemotePlayWhatever.desktop"
# Make the .desktop file executable
chmod +x " $DIRECTORY /RemotePlayWhatever.desktop "
steamos-add-to-steam " $DIRECTORY /RemotePlayWhatever.desktop "
2024-05-09 21:09:08 -07:00
sleep 5
echo "added RemotePlayWhatever to steamos"
fi
2023-07-12 01:21:19 -07:00
# Set Chrome options based on user's selection
2025-01-28 23:08:41 -08:00
# Function to set Chrome launch options for a given service
set_chrome_launch_options( ) {
local option_var = " ${ 1 } chromelaunchoptions "
local launch_options = " run --branch=stable --arch=x86_64 --command=/app/bin/chrome --file-forwarding com.google.Chrome @@u @@ --window-size=1280,800 --force-device-scale-factor=1.00 --device-scale-factor=1.00 --start-fullscreen $2 --no-first-run --enable-features=OverlayScrollbar "
2023-06-12 04:05:58 -07:00
2025-01-28 23:08:41 -08:00
# Write to environment variables file
echo $option_var = $launch_options >> ${ logged_in_home } /.config/systemd/user/env_vars
}
2025-01-21 17:33:07 -08:00
2025-01-28 23:08:41 -08:00
# Array of options, command names, and corresponding URLs
declare -A services = (
[ "Xbox Game Pass" ] = "xbox|https://www.xbox.com/play"
[ "WatchParty" ] = "watchparty|https://www.watchparty.me"
[ "Netflix" ] = "netflix|https://www.netflix.com"
[ "GeForce Now" ] = "geforce|https://play.geforcenow.com"
[ "Hulu" ] = "hulu|https://www.hulu.com/welcome"
[ "Disney+" ] = "disney|https://www.disneyplus.com"
[ "Amazon Prime Video" ] = "amazon|https://www.amazon.com/primevideo"
[ "Youtube" ] = "youtube|https://www.youtube.com"
[ "Amazon Luna" ] = "luna|https://luna.amazon.com"
[ "Twitch" ] = "twitch|https://www.twitch.tv"
[ "Fortnite" ] = "fortnite|https://www.xbox.com/en-US/play/games/fortnite/BT5P2X999VH2"
[ "Venge" ] = "venge|https://venge.io"
[ "Boosteroid Cloud Gaming" ] = "boosteroid|https://cloud.boosteroid.com"
[ "WebRcade" ] = "webrcade|https://play.webrcade.com"
[ "WebRcade Editor" ] = "webrcadeedit|https://editor.webrcade.com"
[ "Plex" ] = "plex|https://www.plex.tv"
[ "Crunchyroll" ] = "crunchy|https://www.crunchyroll.com"
[ "Apple TV+" ] = "apple|https://tv.apple.com"
[ "Stim.io" ] = "stimio|https://stim.io"
[ "Rocketcrab" ] = "rocketcrab|https://rocketcrab.com"
)
# Check user selection and call the function for each option
for option in " ${ !services[@] } " ; do
if [ [ $options = = *" $option " * ] ] ; then
IFS = '|' read -r name url <<< " ${ services [ $option ] } "
set_chrome_launch_options " $name " " $url "
fi
done
2025-01-21 17:33:07 -08:00
2023-07-12 01:21:19 -07:00
# Check if any custom websites were provided
if [ ${# custom_websites [@] } -gt 0 ] ; then
# User entered one or more custom websites
# Convert the custom_websites array to a string
custom_websites_str = $( IFS = ", " ; echo " ${ custom_websites [*] } " )
2024-02-09 09:56:09 +00:00
echo " export custom_websites_str= $custom_websites_str " >> ${ logged_in_home } /.config/systemd/user/env_vars
2023-07-12 01:21:19 -07:00
fi
2023-05-09 03:50:48 -07:00
2024-10-25 03:28:42 -07:00
2023-05-29 18:41:29 -07:00
# Create the download directory if it doesn't exist
mkdir -p " $download_dir "
2023-06-27 23:03:55 -07:00
# Get the version of Python being used
python_version = $( python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")' )
2023-05-29 18:41:29 -07:00
2023-06-25 21:02:52 -07:00
# Create a directory for the vdf module
2023-08-12 14:02:52 -05:00
mkdir -p " ${ download_dir } /lib/python ${ python_version } /site-packages/vdf "
2023-05-29 18:41:29 -07:00
2023-06-27 23:03:55 -07:00
# Download the vdf module from the GitHub repository
download_url = "https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck/raw/main/Modules/vdf/__init__.py"
2023-08-12 14:02:52 -05:00
wget -P " ${ download_dir } /lib/python ${ python_version } /site-packages/vdf " " $download_url "
2023-05-29 18:41:29 -07:00
# Set the PYTHONPATH environment variable
2023-08-12 14:02:52 -05:00
export PYTHONPATH = " ${ download_dir } /lib/python ${ python_version } /site-packages/: $PYTHONPATH "
2023-06-27 23:03:55 -07:00
2023-05-26 01:15:12 -07:00
# Set the default Steam directory
2023-08-12 12:11:01 -05:00
steam_dir = " ${ logged_in_home } /.local/share/Steam "
2023-05-08 03:22:21 -07:00
2024-10-17 12:13:02 -07:00
set +x
2024-05-19 00:14:49 -07:00
# Check if the loginusers.vdf file exists in either of the two directories
2024-07-02 23:40:00 -07:00
if [ [ -f " ${ logged_in_home } /.steam/root/config/loginusers.vdf " ] ] || [ [ -f " ${ logged_in_home } /.local/share/Steam/config/loginusers.vdf " ] ] ; then
2024-05-19 00:14:49 -07:00
if [ [ -f " ${ logged_in_home } /.steam/root/config/loginusers.vdf " ] ] ; then
file_path = " ${ logged_in_home } /.steam/root/config/loginusers.vdf "
else
2024-07-02 23:40:00 -07:00
file_path = " ${ logged_in_home } /.local/share/Steam/config/loginusers.vdf "
2024-05-19 00:14:49 -07:00
fi
2024-05-19 00:01:22 -07:00
2024-05-19 00:14:49 -07:00
# Extract the block of text for the most recent user
most_recent_user = $( sed -n '/"users"/,/"MostRecent" "1"/p' " $file_path " )
2023-05-27 00:58:59 -07:00
2024-05-19 00:14:49 -07:00
# Initialize variables
max_timestamp = 0
current_user = ""
current_steamid = ""
2024-01-18 18:38:02 -08:00
2024-10-17 12:13:02 -07:00
2024-01-18 18:38:02 -08:00
# Process each user block
2024-05-19 00:14:49 -07:00
# Set IFS to only look for Commas to avoid issues with Whitespace in older account names.
2024-02-13 20:50:52 +00:00
while IFS = "," read steamid account timestamp; do
2024-01-18 18:38:02 -08:00
if ( ( timestamp > max_timestamp ) ) ; then
max_timestamp = $timestamp
current_user = $account
current_steamid = $steamid
fi
2024-05-19 00:14:49 -07:00
# Output our discovered values as comma seperated string to be read into the IDs.
2024-01-18 18:38:02 -08:00
done < <( echo " $most_recent_user " | awk -v RS = '}\n' -F'\n' '
{
for ( i = 1; i<= NF; i++) {
if ( $i ~ /[ 0-9] { 17} /) {
split( $i ,a, "\"" ) ; steamid = a[ 2] ;
}
if ( $i ~ /"AccountName" /) {
split( $i ,b, "\"" ) ; account = b[ 4] ;
}
if ( $i ~ /"Timestamp" /) {
split( $i ,c, "\"" ) ; timestamp = c[ 4] ;
}
}
2024-02-13 20:50:52 +00:00
print steamid "," account "," timestamp
2024-01-18 18:38:02 -08:00
} ' )
2023-05-08 03:22:21 -07:00
2024-01-18 18:38:02 -08:00
# Print the currently logged in user
if [ [ -n $current_user ] ] ; then
echo " SteamID: $current_steamid "
else
echo "No users found."
fi
2023-05-27 22:19:05 -07:00
2024-10-17 12:13:02 -07:00
2024-01-18 18:38:02 -08:00
# Convert steamid to steamid3
steamid3 = $(( current_steamid - 76561197960265728 ))
2023-05-27 22:19:05 -07:00
2024-01-18 18:38:02 -08:00
# Directly map steamid3 to userdata folder
2024-01-22 17:11:59 -08:00
userdata_folder = " ${ logged_in_home } /.steam/root/userdata/ ${ steamid3 } "
2024-01-17 16:21:45 -08:00
2024-01-18 18:38:02 -08:00
# Check if userdata_folder exists
if [ [ -d " $userdata_folder " ] ] ; then
echo " Found userdata folder for user with SteamID $current_steamid : $userdata_folder "
else
echo " Could not find userdata folder for user with SteamID $current_steamid "
fi
2023-05-26 01:15:12 -07:00
else
2024-01-17 04:10:45 -08:00
echo "Could not find loginusers.vdf file"
2023-05-26 01:15:12 -07:00
fi
2023-05-08 03:22:21 -07:00
2024-01-17 04:10:45 -08:00
2024-10-17 12:13:02 -07:00
set -x
2024-01-17 16:17:57 -08:00
2024-01-17 16:21:45 -08:00
2023-05-27 22:19:05 -07:00
# Check if userdata folder was found
2023-05-12 01:56:42 -07:00
if [ [ -n " $userdata_folder " ] ] ; then
2023-05-27 22:19:05 -07:00
# Userdata folder was found
2023-05-12 01:56:42 -07:00
echo " Current user's userdata folder found at: $userdata_folder "
2023-05-08 03:22:21 -07:00
2023-05-27 22:19:05 -07:00
# Find shortcuts.vdf file for current user
2023-05-12 01:56:42 -07:00
shortcuts_vdf_path = $( find " $userdata_folder " -type f -name shortcuts.vdf)
2023-05-08 01:11:53 -07:00
2023-05-12 01:56:42 -07:00
# Check if shortcuts_vdf_path is not empty
if [ [ -n " $shortcuts_vdf_path " ] ] ; then
2024-06-21 08:31:11 -07:00
# Define backup directory
backup_dir = " $( dirname " $shortcuts_vdf_path " ) /shortcuts.vdf_backups "
mkdir -p " $backup_dir "
2023-05-27 22:19:05 -07:00
# Create backup of shortcuts.vdf file
2024-06-21 21:52:10 -07:00
cp " $shortcuts_vdf_path " " $backup_dir /shortcuts.vdf.bak_ $( date +%m-%d-%Y_%H:%M:%S) "
2023-05-08 01:03:07 -07:00
else
2024-06-21 06:26:13 -07:00
# Find config directory for current user
config_dir = $( find " $userdata_folder " -maxdepth 1 -type d -name config)
# Check if config_dir is not empty
if [ [ -n " $config_dir " ] ] ; then
# Create new shortcuts.vdf file at expected location for current user
touch " $config_dir /shortcuts.vdf "
shortcuts_vdf_path = " $config_dir /shortcuts.vdf "
else
# Create new config directory and new shortcuts.vdf file at expected location for current user
mkdir " $userdata_folder /config/ "
touch " $userdata_folder /config/shortcuts.vdf "
config_dir = " $userdata_folder /config/ "
shortcuts_vdf_path = " $config_dir /shortcuts.vdf "
fi
2023-05-08 01:03:07 -07:00
fi
2023-05-12 01:56:42 -07:00
else
2023-05-27 22:19:05 -07:00
# Userdata folder was not found
2023-05-12 01:56:42 -07:00
echo "Current user's userdata folder not found"
2023-05-06 14:18:49 -07:00
fi
2023-05-05 00:44:56 -07:00
2023-05-08 01:03:07 -07:00
2024-06-28 19:05:32 -07:00
2023-08-12 11:47:52 -05:00
# Pre check for updating the config file
2023-06-02 13:14:30 -07:00
# Set the default Steam directory
2023-08-12 15:05:47 -05:00
steam_dir_root = " ${ logged_in_home } /.steam/root "
2023-06-02 13:14:30 -07:00
# Set the path to the config.vdf file
2023-08-12 15:05:47 -05:00
config_vdf_path = " ${ steam_dir_root } /config/config.vdf "
2023-06-02 13:14:30 -07:00
# Check if the config.vdf file exists
if [ -f " $config_vdf_path " ] ; then
# Create a backup of the config.vdf file
2023-08-12 15:05:47 -05:00
backup_path = " ${ steam_dir_root } /config/config.vdf.bak "
2023-06-02 13:14:30 -07:00
cp " $config_vdf_path " " $backup_path "
# Set the name of the compatibility tool to use
2023-11-19 23:41:43 -08:00
compat_tool_name = $( ls " ${ logged_in_home } /.steam/root/compatibilitytools.d " | grep "GE-Proton" | sort -V | tail -n1)
2023-06-02 13:14:30 -07:00
else
echo "Could not find config.vdf file"
fi
2023-11-19 23:41:43 -08:00
2024-01-25 20:22:09 -08:00
# Write variables to a file before script is detached
echo " export steamid3= $steamid3 " >> ${ logged_in_home } /.config/systemd/user/env_vars
echo " export logged_in_home= $logged_in_home " >> ${ logged_in_home } /.config/systemd/user/env_vars
echo " export compat_tool_name= $compat_tool_name " >> ${ logged_in_home } /.config/systemd/user/env_vars
2024-02-06 01:21:11 -08:00
echo " export python_version= $python_version " >> ${ logged_in_home } /.config/systemd/user/env_vars
2024-02-08 16:24:28 -08:00
echo " export chromedirectory= $chromedirectory " >> ${ logged_in_home } /.config/systemd/user/env_vars
echo " export chrome_startdir= $chrome_startdir " >> ${ logged_in_home } /.config/systemd/user/env_vars
2024-01-25 20:22:09 -08:00
2024-10-17 03:08:11 -07:00
2024-02-27 06:54:27 -08:00
# Check if either directory does not exist
2024-03-14 13:40:32 +00:00
if [ " ${ deckyplugin } " = false ] ; then
2024-10-25 03:28:42 -07:00
# Function to display a Zenity message
show_message( ) {
zenity --notification --text= " $1 " --timeout= 1
}
show_message "Activating Scanner..."
# Setup NSLGameScanner.service
python_script_path = " ${ logged_in_home } /.config/systemd/user/NSLGameScanner.py "
# Define your GitHub link
github_link = "https://raw.githubusercontent.com/moraroy/NonSteamLaunchers-On-Steam-Deck/main/NSLGameScanner.py"
# Check if the service is already running
service_status = $( systemctl --user is-active nslgamescanner.service)
if [ " $service_status " = "active" ] || [ " $service_status " = "activating" ] ; then
echo "Service is already running or activating. Stopping the service..."
systemctl --user stop nslgamescanner.service
fi
echo "Updating Python script from GitHub..."
curl -o $python_script_path $github_link
echo "Starting the service..."
python3 $python_script_path
show_message "Restarting Steam..."
2024-02-18 22:47:04 -08:00
# Detach script from Steam process
2024-07-15 00:56:16 -07:00
nohup sh -c 'sleep 10; /usr/bin/steam %U' &
2024-02-18 22:47:04 -08:00
2024-02-15 00:00:20 -08:00
# Close all instances of Steam
steam_pid( ) { pgrep -x steam ; }
steam_running = $( steam_pid)
[ [ -n " $steam_running " ] ] && killall steam
2024-02-13 18:41:47 -08:00
2024-02-15 00:00:20 -08:00
# Wait for the steam process to exit
2024-10-25 03:28:42 -07:00
while steam_pid > /dev/null; do
sleep 5
done
2024-02-09 03:37:41 -08:00
fi
2024-10-25 03:28:42 -07:00
show_message "Waiting to detect plugin..."
sleep 20
2024-10-17 03:08:11 -07:00
2025-01-04 08:22:17 -08:00
2024-10-17 12:13:02 -07:00
# Function to switch to Game Mode
switch_to_game_mode( ) {
echo "Switching to Game Mode..."
rm -rf " $download_dir "
rm -rf ${ logged_in_home } /.config/systemd/user/nslgamescanner.service
unlink ${ logged_in_home } /.config/systemd/user/default.target.wants/nslgamescanner.service
systemctl --user daemon-reload
qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout
}
# Function to display a Zenity message
show_message( ) {
2025-01-04 08:22:17 -08:00
zenity --notification --text= " $1 " --timeout= 1
2024-10-17 12:13:02 -07:00
}
# Set the remote repository URL
2024-11-04 06:10:57 -08:00
REPO_URL = "https://github.com/moraroy/NonSteamLaunchersDecky/archive/refs/heads/main.zip"
2024-10-17 12:13:02 -07:00
# Set the local directory path
LOCAL_DIR = " ${ logged_in_home } /homebrew/plugins/NonSteamLaunchers "
2025-01-05 11:04:31 -08:00
# Function to check if a directory exists and contains files
directory_exists_and_not_empty( ) {
[ -d " $1 " ] && [ -n " $( ls -A " $1 " ) " ]
}
2025-01-04 08:22:17 -08:00
2025-01-05 11:04:31 -08:00
# Function to fetch version from GitHub
2025-01-04 08:22:17 -08:00
fetch_github_version( ) {
2025-01-05 11:04:31 -08:00
response = $( curl -s "https://raw.githubusercontent.com/moraroy/NonSteamLaunchersDecky/refs/heads/main/package.json" )
echo " $response " | jq -r '.version'
2025-01-04 08:22:17 -08:00
}
2025-01-05 11:04:31 -08:00
# Function to fetch local version from package.json
2025-01-04 08:22:17 -08:00
fetch_local_version( ) {
if [ -f " $LOCAL_DIR /package.json " ] ; then
2025-01-05 11:04:31 -08:00
jq -r '.version' " $LOCAL_DIR /package.json "
2025-01-04 08:22:17 -08:00
else
2025-01-05 11:04:31 -08:00
echo "null"
2025-01-04 08:22:17 -08:00
fi
}
# Function to compare versions
compare_versions( ) {
2025-01-05 11:04:31 -08:00
local local_version = $( fetch_local_version)
local github_version = $( fetch_github_version)
2025-01-04 08:22:17 -08:00
2025-01-05 11:04:31 -08:00
if [ " $local_version " = = "null" ] ; then
echo "Local version not found, need installation."
return 1 # Local version is missing, so installation is needed
2025-01-04 08:22:17 -08:00
fi
echo " Local Version: $local_version , GitHub Version: $github_version "
if [ " $local_version " = = " $github_version " ] ; then
2025-01-05 11:04:31 -08:00
echo "Plugin is up-to-date."
return 0 # No update needed
2025-01-04 08:22:17 -08:00
else
2025-01-05 11:04:31 -08:00
echo "Update needed."
return 1 # Versions don't match, so update is needed
2025-01-04 08:22:17 -08:00
fi
}
2025-01-05 11:04:31 -08:00
# Main logic
2024-10-17 12:13:02 -07:00
2025-01-05 11:04:31 -08:00
show_message "Detecting environment..."
2024-10-25 03:28:42 -07:00
2025-01-05 11:04:31 -08:00
# Check if Decky Loader exists
if ! directory_exists_and_not_empty " ${ logged_in_home } /homebrew/plugins " ; then
zenity --error --text= " This is not an error. Decky Loader was not detected. Please install it from their website and re-run this script to access the plugin version of NSL."
exit 1
fi
2024-10-21 02:38:54 -07:00
2025-01-05 11:04:31 -08:00
# Check if the NSL Plugin exists
if directory_exists_and_not_empty " $LOCAL_DIR " ; then
NSL_PLUGIN_EXISTS = true
2024-10-17 12:13:02 -07:00
else
2025-01-05 11:04:31 -08:00
NSL_PLUGIN_EXISTS = false
2024-10-17 12:13:02 -07:00
fi
2025-01-05 11:04:31 -08:00
set +x
# Compare versions and update if necessary
if compare_versions; then
echo "No update needed. Plugin is already up-to-date."
show_message "Plugin is up-to-date."
else
echo "Updating plugin..."
while true; do
USER_INPUT = $( zenity --forms --title= "Authentication Required" --text= "NSL Plugin requires an update or needs installation! Please enter your sudo password to proceed:" --separator= "|" --add-password= "Password" )
USER_PASSWORD = $( echo $USER_INPUT | cut -d'|' -f1)
if [ -z " $USER_PASSWORD " ] ; then
zenity --error --text= "No password entered. Exiting." --timeout 5
exit 1
fi
echo " $USER_PASSWORD " | sudo -S echo "Password accepted" 2>/dev/null
if [ $? -eq 0 ] ; then
break
else
zenity --error --text= "Incorrect password. Please try again."
fi
done
# Remove existing plugin if it exists
2025-01-04 08:22:17 -08:00
if $NSL_PLUGIN_EXISTS ; then
2025-01-05 11:04:31 -08:00
show_message "Removing existing plugin..."
2025-01-04 08:22:17 -08:00
echo " $USER_PASSWORD " | sudo -S rm -rf " $LOCAL_DIR "
fi
2024-10-20 01:21:08 -07:00
2025-01-05 11:04:31 -08:00
# Install or update plugin
2025-01-04 08:22:17 -08:00
sudo systemctl stop plugin_loader.service
2024-11-04 06:10:57 -08:00
2025-01-05 11:04:31 -08:00
# Create directory and set permissions
2025-01-04 08:22:17 -08:00
echo " $USER_PASSWORD " | sudo -S mkdir -p " $LOCAL_DIR "
echo " $USER_PASSWORD " | sudo -S chmod -R u+rw " $LOCAL_DIR "
echo " $USER_PASSWORD " | sudo -S chown -R $USER :$USER " $LOCAL_DIR "
2024-10-17 03:08:11 -07:00
2025-01-05 11:04:31 -08:00
# Download and extract repository
2025-01-04 08:22:17 -08:00
curl -L " $REPO_URL " -o /tmp/NonSteamLaunchersDecky.zip
echo " $USER_PASSWORD " | sudo -S unzip -o /tmp/NonSteamLaunchersDecky.zip -d /tmp/
echo " $USER_PASSWORD " | sudo -S cp -r /tmp/NonSteamLaunchersDecky-main/* " $LOCAL_DIR "
echo " $USER_PASSWORD " | sudo -S rm -rf /tmp/NonSteamLaunchersDecky*
2024-10-17 03:08:11 -07:00
2025-01-04 22:33:38 -08:00
set -x
2024-10-17 03:08:11 -07:00
2025-01-05 11:04:31 -08:00
# Switch to game mode and restart service
show_message " NSL Plugin installed. Switching to Game Mode..."
2025-01-04 22:33:38 -08:00
switch_to_game_mode
sudo systemctl restart plugin_loader.service
fi
2024-10-20 01:21:08 -07:00
2024-10-17 03:08:11 -07:00
2024-02-10 17:18:51 -08:00
2024-02-13 18:32:49 -08:00
2024-10-17 03:20:16 -07:00
2024-10-17 03:48:37 -07:00
2024-10-21 02:38:54 -07:00
2025-01-04 08:22:17 -08:00
2024-02-10 17:18:51 -08:00
# TODO: might be better to relocate temp files to `/tmp` or even use `mktemp -d` since `rm -rf` is potentially dangerous without the `-i` flag
2024-10-17 03:08:11 -07:00
2024-02-10 17:18:51 -08:00
# Delete NonSteamLaunchersInstallation subfolder in Downloads folder
rm -rf " $download_dir "
2024-05-08 14:13:52 -07:00
2024-10-17 03:08:11 -07:00
2024-05-08 14:13:52 -07:00
echo "Script completed successfully."
exit 0