#!/bin/bash
chmod +x "$0"
set -x
version=v2.3
check_for_updates() {
# Set the URL to the GitHub API for the repository
local api_url="https://api.github.com/repos/moraroy/NonSteamLaunchers-On-Steam-Deck/releases/latest"
# Get the latest release tag from the GitHub API
local latest_version=$(curl -s "$api_url" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
# Compare the version number in the script against the latest release tag
if [ "$version" != "$latest_version" ]; then
# Display a Zenity window to notify the user that a new version is available
zenity --info --text="A new version is available: $latest_version\nPlease download it from GitHub." --width=200 --height=100
else
echo "You are already running the latest version: $version"
fi
}
check_for_updates
# Set the paths to the launcher executables
epic_games_launcher_path1="$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="$HOME/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher/pfx/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe"
gog_galaxy_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe"
gog_galaxy_path2="$HOME/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/pfx/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe"
origin_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Origin/Origin.exe"
origin_path2="$HOME/.local/share/Steam/steamapps/compatdata/OriginLauncher/pfx/drive_c/Program Files (x86)/Origin/Origin.exe"
uplay_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/upc.exe"
uplay_path2="$HOME/.local/share/Steam/steamapps/compatdata/UplayLauncher/pfx/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/upc.exe"
battlenet_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe"
battlenet_path2="$HOME/.local/share/Steam/steamapps/compatdata/Battle.netLauncher/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe"
eaapp_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Electronic Arts/EA Desktop/EA Desktop/EADesktop.exe"
eaapp_path2="$HOME/.local/share/Steam/steamapps/compatdata/TheEAappLauncher/pfx/drive_c/Program Files/Electronic Arts/EA Desktop/EA Desktop/EADesktop.exe"
amazongames_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/Amazon Games/App/Amazon Games.exe"
amazongames_path2="$HOME/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher/pfx/drive_c/users/steamuser/AppData/Local/Amazon Games/App/Amazon Games.exe"
itchio_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/users/steamuser/AppData/Local/itch/app-25.6.2/itch.exe"
itchio_path2="$HOME/.local/share/Steam/steamapps/compatdata/itchioLauncher/pfx/drive_c/users/steamuser/AppData/Local/itch/app-25.6.2/itch.exe"
legacygames_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher/Legacy Games Launcher.exe"
legacygames_path2="$HOME/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/pfx/drive_c/Program Files/Legacy Games/Legacy Games Launcher/Legacy Games Launcher.exe"
humblegames_path1="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/pfx/drive_c/Program Files/Humble App/Humble App.exe"
humblegames_path2="$HOME/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher/pfx/drive_c/Program Files/Humble App/Humble App.exe"
function CheckInstallations {
# Check if Epic Games Launcher is installed
if [[ -f "$epic_games_launcher_path1" ]]; then
# Epic Games Launcher is installed in path 1
epic_games_value="FALSE"
epic_games_text="Epic Games ===> $epic_games_launcher_path1"
elif [[ -f "$epic_games_launcher_path2" ]]; then
# Epic Games Launcher is installed in path 2
epic_games_value="FALSE"
epic_games_text="Epic Games ===> $epic_games_launcher_path2"
else
# Epic Games Launcher is not installed
epic_games_value="TRUE"
epic_games_text="Epic Games"
fi
# Check if GOG Galaxy is installed
if [[ -f "$gog_galaxy_path1" ]]; then
# GOG Galaxy is installed in path 1
gog_galaxy_value="FALSE"
gog_galaxy_text="GOG Galaxy ===> $gog_galaxy_path1"
elif [[ -f "$gog_galaxy_path2" ]]; then
# GOG Galaxy is installed in path 2
gog_galaxy_value="FALSE"
gog_galaxy_text="GOG Galaxy ===> $gog_galaxy_path2"
else
# GOG Galaxy is not installed
gog_galaxy_value="TRUE"
gog_galaxy_text="GOG Galaxy"
fi
# Check if Origin is installed
if [[ -f "$origin_path1" ]]; then
# Origin is installed in path 1
origin_value="FALSE"
origin_text="Origin ===> $origin_path1"
elif [[ -f "$origin_path2" ]]; then
# Origin is installed in path 2
origin_value="FALSE"
origin_text="Origin ===> $origin_path2"
else
# Origin is not installed
origin_value="TRUE"
origin_text="Origin"
fi
# Check if Uplay is installed
if [[ -f "$uplay_path1" ]]; then
# Uplay is installed in path 1
uplay_value="FALSE"
uplay_text="Uplay ===> $uplay_path1"
elif [[ -f "$uplay_path2" ]]; then
# Uplay is installed in path 2
uplay_value="FALSE"
uplay_text="Uplay ===> $uplay_path2"
else
# Uplay is not installed
uplay_value="TRUE"
uplay_text="Uplay"
fi
# Check if Battle.net is installed
if [[ -f "$battlenet_path1" ]]; then
# Battle.net is installed in path 1
battlenet_value="FALSE"
battlenet_text="Battle.net ===> $battlenet_path1"
elif [[ -f "$battlenet_path2" ]]; then
# Battle.net is installed in path 2
battlenet_value="FALSE"
battlenet_text="Battle.net ===> $battlenet_path2"
else
# Battle.net is not installed
battlenet_value="TRUE"
battlenet_text="Battle.net"
fi
# Check if EA App is installed
if [[ -f "$eaapp_path1" ]]; then
# EA App is installed in path 1
eaapp_value="FALSE"
eaapp_text="EA App ===> $eaapp_path1"
elif [[ -f "$eaapp_path2" ]]; then
# EA App is installed in path 2
eaapp_value="FALSE"
eaapp_text="EA App ===> $eaapp_path2"
else
# EA App is not installed
eaapp_value="FALSE"
eaapp_text="EA App"
fi
# Check if Amazon Games is installed
if [[ -f "$amazongames_path1" ]]; then
# Amazon Games is installed in path 1
amazongames_value="FALSE"
amazongames_text="Amazon Games ===> $amazongames_path1"
elif [[ -f "$amazongames_path2" ]]; then
# Amazon Games is installed in path 2
amazongames_value="FALSE"
amazongames_text="Amazon Games ===> $amazongames_path2"
else
# Amazon Games is not installed
amazongames_value="TRUE"
amazongames_text="Amazon Games"
fi
# Check if itch.io is installed
if [[ -f "$itchio_path1" ]]; then
# itch.io is installed in path 1
itchio_value="FALSE"
itchio_text="itch.io ===> $itchio_path1"
elif [[ -f "$itchio_path2" ]]; then
# itch.io is installed in path 2
itchio_value="FALSE"
itchio_text="itch.io ===> $itchio_path2"
else
# itch.io is not installed
itchio_value="TRUE"
itchio_text="itch.io"
fi
# Check if Legacy Games Launcher is installed
if [[ -f "$legacygames_path1" ]]; then
# Legacy Games is installed in path 1
legacygames_value="FALSE"
legacygames_text="Legacy Games ===> $legacygames_path1"
elif [[ -f "$legacygames_path2" ]]; then
# Legacy Games is installed in path 2
legacygames_value="FALSE"
legacygames_text="Legacy Games ===> $legacygames_path2"
else
# Legacy Games is not installed
legacygames_value="TRUE"
legacygames_text="Legacy Games"
fi
# Check if Humble Games Launcher is installed
if [[ -f "$humblegames_path1" ]]; then
# Humble Games is installed in path 1 on local drive
humblegames_value="FALSE"
humblegames_text="Humble Games Collection ===> $humblegames_path1"
elif [[ -f "$humblegames_path2" ]]; then
# Humble Games is installed in path 2 on local drive
humblegames_value="FALSE"
humblegames_text="Humble Games Collection ===> $humblegames_path2"
else
# Humble Games is not installed
humblegames_value="TRUE"
humblegames_text="Humble Games Collection"
fi
}
function CheckInstallationDirectory {
# Check if NonSteamLaunchers is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers" ]]; then
# NonSteamLaunchers is installed
nonsteamlauncher_move_value="TRUE"
else
# NonSteamLaunchers is not installed
nonsteamlauncher_move_value="FALSE"
fi
# Check if EpicGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher" ]]; then
# EpicGamesLauncher is installed
epicgameslauncher_move_value="TRUE"
else
# EpicGamesLauncher is not installed
epicgameslauncher_move_value="FALSE"
fi
# Check if GogGalaxyLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher" ]]; then
# GogGalaxyLauncher is installed
goggalaxylauncher_move_value="TRUE"
else
# GogGalaxyLauncher is not installed
goggalaxylauncher_move_value="FALSE"
fi
# Check if OriginLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/OriginLauncher" ]]; then
# OriginLauncher is installed
originlauncher_move_value="TRUE"
else
# OriginLauncher is not installed
originlauncher_move_value="FALSE"
fi
# Check if UplayLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/UplayLauncher" ]]; then
# UplayLauncher is installed
uplaylauncher_move_value="TRUE"
else
# UplayLauncher is not installed
uplaylauncher_move_value="FALSE"
fi
# Check if Battle.netLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/Battle.netLauncher" ]]; then
# Battle.netLauncher is installed
battlenetlauncher_move_value="TRUE"
else
# Battle.netLauncher is not installed
battlenetlauncher_move_value="FALSE"
fi
# Check if TheEAappLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/TheEAappLauncher" ]]; then
# TheEAappLauncher is installed
eaapplauncher_move_value="TRUE"
else
# TheEAappLauncher is not installed
eaapplauncher_move_value="FALSE"
fi
# Check if AmazonGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher" ]]; then
# AmazonGamesLauncher is installed
amazongameslauncher_move_value="TRUE"
else
# AmazonGamesLauncher is not installed
amazongameslauncher_move_value="FALSE"
fi
# Check if itchioLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/itchioLauncher" ]]; then
# itchioLauncher is installed
itchiolauncher_move_value="TRUE"
else
# itchioLauncher is not installed
itchiolauncher_move_value="FALSE"
fi
# Check if LegacyGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher" ]]; then
# LegacyGamesLauncher is installed
legacygameslauncher_move_value="TRUE"
else
# LegacyGamesLauncher is not installed
legacygameslauncher_move_value="FALSE"
fi
# Check if HumbleGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher" ]]; then
# HumbleGamesLauncher is installed
humblegameslauncher_move_value="TRUE"
else
# HumbleGamesLauncher is not installed
humblegameslauncher_move_value="FALSE"
fi
}
# Check which app IDs are installed
CheckInstallations
CheckInstallationDirectory
# Display a list of options using zenity
options=$(zenity --list --text="Which launchers do you want to download and install?" --checklist --column="$version" --column="Default = one App ID Installation" FALSE "Separate App IDs" $epic_games_value "$epic_games_text" $gog_galaxy_value "$gog_galaxy_text" $uplay_value "$uplay_text" $origin_value "$origin_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" --width=535 --height=425 --extra-button="Start Fresh" --extra-button="Move to SD Card")
# Check if the cancel button was clicked
if [ $? -eq 1 ] && [[ $options != "Start Fresh" ]] && [[ $options != "Move to SD Card" ]]; then
# The cancel button was clicked
echo "The cancel button was clicked"
exit 1
fi
# Check if no options were selected
if [ -z "$options" ]; then
# No options were selected
zenity --error --text="No options were selected. The script will now exit." --width=200 --height=150
exit 1
fi
# Check if the user selected to use separate app IDs
if [[ $options == *"Separate App IDs"* ]]; then
# 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
fi
# Check if the user selected both Origin and EA App
if [[ $options == *"Origin"* ]] && [[ $options == *"EA App"* ]] && [ "$use_separate_appids" = false ]; then
# User selected both Origin and EA App without selecting separate app IDs
zenity --error --text="You cannot select both Origin and EA App at the same time unless you select separate app IDs." --width=200 --height=150
exit 1
fi
# Check if Origin is already installed
if [[ -f "$origin_path1" ]] || [[ -f "$origin_path2" ]]; then
# Origin is installed
if [[ $options == *"EA App"* ]] && [ "$use_separate_appids" = false ]; then
# User selected EA App without selecting separate app IDs
zenity --error --text="You cannot install EA App because Origin is already installed. Please select separate app IDs if you want to install both." --width=200 --height=150
exit 1
fi
fi
# Check if EA App is already installed
if [[ -f "$eaapp_path1" ]] || [[ -f "$eaapp_path2" ]]; then
# EA App is installed
if [[ $options == *"Origin"* ]] && [ "$use_separate_appids" = false ]; then
# User selected Origin without selecting separate app IDs
zenity --error --text="You cannot install Origin because EA App is already installed. Please select separate app IDs if you want to install both." --width=200 --height=150
exit 1
fi
fi
# Check if the Start Fresh button was clicked
if [[ $options == "Start Fresh" ]]; then
# The Start Fresh button was clicked
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. This means anything youve installed (launchers or games) WITH THIS SCRIPT ONLY will be deleted if you have them there. Are you sure?" --width=300 --height=250; then
# The user clicked the "Yes" button
# Add code here to delete the directories
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/OriginLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/UplayLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/Battle.netLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/TheEAappLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/itchioLauncher"
unlink & rm -rf "$HOME/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher"
rm -rf "/run/media/mmcblk0p1/NonSteamLaunchers/"
rm -rf "/run/media/mmcblk0p1/EpicGamesLauncher/"
rm -rf "/run/media/mmcblk0p1/GogGalaxyLauncher/"
rm -rf "/run/media/mmcblk0p1/OriginLauncher/"
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 ~/Downloads/NonSteamLaunchersInstallation
# Exit the script
exit 0
else
# The user clicked the "No" button
# Add code here to exit the script
exit 0
fi
fi
if [[ $options == "Move to SD Card" ]]; then
# The Move to SD Card button was clicked
# Check which app IDs are installed
# Add similar checks for other app IDs here
CheckInstallationDirectory
move_options=$(zenity --list --text="Which app IDs do you want to move to the SD card?" --checklist --column="Select" --column="App ID" $nonsteamlauncher_move_value "NonSteamLaunchers" $epicgameslauncher_move_value "EpicGamesLauncher" $goggalaxylauncher_move_value "GogGalaxyLauncher" $originlauncher_move_value "OriginLauncher" $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" --width=535 --height=415)
# Check if the cancel button was clicked
if [ $? -eq 0 ]; then
# The OK button was clicked
# Display a message to the user indicating that the operation was successful
zenity --info --text="The selected directories have been moved to the SD card and symbolic links have been created." --width=200 --height=150
fi
# Set the path to the new directory on the SD card
new_dir="/run/media/mmcblk0p1"
# Check if NonSteamLaunchers is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers" ]]; then
# NonSteamLaunchers is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers"
else
# NonSteamLaunchers is not installed
original_dir=""
fi
# Check if the user selected to move NonSteamLaunchers
if [[ $move_options == *"NonSteamLaunchers"* ]] && [[ -n $original_dir ]]; then
# Move the NonSteamLaunchers directory to the SD card
mv "$original_dir" "$new_dir/NonSteamLaunchers"
# Create a symbolic link to the new directory
ln -s "$new_dir/NonSteamLaunchers" "$original_dir"
fi
# Check if EpicGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher" ]]; then
# EpicGamesLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher"
else
# EpicGamesLauncher is not installed
original_dir=""
fi
# Check if the user selected to move EpicGamesLauncher
if [[ $move_options == *"EpicGamesLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the EpicGamesLauncher directory to the SD card
mv "$original_dir" "$new_dir/EpicGamesLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/EpicGamesLauncher" "$original_dir"
fi
# Check if GogGalaxyLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher" ]]; then
# GogGalaxyLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher"
else
# GogGalaxyLauncher is not installed
original_dir=""
fi
# Check if the user selected to move GogGalaxyLauncher
if [[ $move_options == *"GogGalaxyLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the GogGalaxyLauncher directory to the SD card
mv "$original_dir" "$new_dir/GogGalaxyLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/GogGalaxyLauncher" "$original_dir"
fi
# Check if OriginLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/OriginLauncher" ]]; then
# OriginLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/OriginLauncher"
else
# OriginLauncher is not installed
original_dir=""
fi
# Check if the user selected to move OriginLauncher
if [[ $move_options == *"OriginLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the OriginLauncher directory to the SD card
mv "$original_dir" "$new_dir/OriginLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/OriginLauncher" "$original_dir"
fi
# Check if UplayLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/UplayLauncher" ]]; then
# UplayLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/UplayLauncher"
else
# UplayLauncher is not installed
original_dir=""
fi
# Check if the user selected to move UplayLauncher
if [[ $move_options == *"UplayLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the UplayLauncher directory to the SD card
mv "$original_dir" "$new_dir/UplayLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/UplayLauncher" "$original_dir"
fi
# Check if Battle.netLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/Battle.netLauncher" ]]; then
# Battle.netLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/Battle.netLauncher"
else
# Battle.netLauncher is not installed
original_dir=""
fi
# Check if the user selected to move Battle.netLauncher
if [[ $move_options == *"Battle.netLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the Battle.netLauncher directory to the SD card
mv "$original_dir" "$new_dir/Battle.netLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/Battle.netLauncher" "$original_dir"
fi
# Check if TheEAappLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/TheEAappLauncher" ]]; then
# TheEAappLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/TheEAappLauncher"
else
# TheEAappLauncher is not installed
original_dir=""
fi
# Check if the user selected to move TheEAappLauncher
if [[ $move_options == *"TheEAappLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the TheEAappLauncher directory to the SD card
mv "$original_dir" "$new_dir/TheEAappLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/TheEAappLauncher" "$original_dir"
fi
# Check if AmazonGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher" ]]; then
# AmazonGamesLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher"
else
# AmazonGamesLauncher is not installed
original_dir=""
fi
# Check if the user selected to move AmazonGamesLauncher
if [[ $move_options == *"AmazonGamesLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the AmazonGamesLauncher directory to the SD card
mv "$original_dir" "$new_dir/AmazonGamesLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/AmazonGamesLauncher" "$original_dir"
fi
# Check if itchioLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/itchioLauncher" ]]; then
# itchioLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/itchioLauncher"
else
# itchioLauncher is not installed
original_dir=""
fi
# Check if the user selected to move itchioLauncher
if [[ $move_options == *"itchioLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the itchioLauncher directory to the SD card
mv "$original_dir" "$new_dir/itchioLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/itchioLauncher" "$original_dir"
fi
# Check if LegacyGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher" ]]; then
# LegacyGamesLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher"
else
# LegacyGamesLauncher is not installed
original_dir=""
fi
# Check if the user selected to move LegacyGamesLauncher
if [[ $move_options == *"LegacyGamesLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the LegacyGamesLauncher directory to the SD card
mv "$original_dir" "$new_dir/LegacyGamesLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/LegacyGamesLauncher" "$original_dir"
fi
# Check if HumbleGamesLauncher is installed
if [[ -d "$HOME/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher" ]]; then
# HumbleGamesLauncher is installed
original_dir="$HOME/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher"
else
# HumbleGamesLauncher is not installed
original_dir=""
fi
# Check if the user selected to move HumbleGamesLauncher
if [[ $move_options == *"HumbleGamesLauncher"* ]] && [[ -n $original_dir ]]; then
# Move the HumbleGamesLauncher directory to the SD card
mv "$original_dir" "$new_dir/HumbleGamesLauncher"
# Create a symbolic link to the new directory
ln -s "$new_dir/HumbleGamesLauncher" "$original_dir"
fi
# Exit the script
exit 1
fi
echo "0"
echo "# Detecting and Installing GE-Proton"
# check to make sure compatabilitytools.d exists and makes it if it doesnt
if [ ! -d "$HOME/.steam/root/compatibilitytools.d" ]; then
mkdir -p "$HOME/.steam/root/compatibilitytools.d"
fi
(
# Create NonSteamLaunchersInstallation subfolder in Downloads folder
mkdir -p ~/Downloads/NonSteamLaunchersInstallation
# Set the path to the Proton directory
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
# Set the URLs to download GE-Proton from
ge_proton_url1=https://github.com/GloriousEggroll/proton-ge-custom/releases/latest/download/GE-Proton.tar.gz
ge_proton_url2=https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-2/GE-Proton8-2.tar.gz
# Check if GE-Proton is installed
if [ -z "$proton_dir" ]; then
# Download GE-Proton using the first URL
echo "Downloading GE-Proton using the first URL"
wget $ge_proton_url1 -O ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
# Check if the download succeeded
if [ $? -ne 0 ]; then
# Download GE-Proton using the second URL
echo "Downloading GE-Proton using the second URL"
wget $ge_proton_url2 -O ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
fi
# Check if either download succeeded
if [ $? -eq 0 ]; then
# Install GE-Proton
echo "Installing GE-Proton"
tar -xvf ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz -C ~/.steam/root/compatibilitytools.d/
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
else
# Handle download failure
echo "Failed to download GE-Proton"
fi
else
# Check if installed version is the latest version
installed_version=$(basename $proton_dir | sed 's/GE-Proton-//')
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 using the first URL
echo "Downloading GE-Proton using the first URL"
wget $ge_proton_url1 -O ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
# Check if the download succeeded
if [ $? -ne 0 ]; then
# Download GE-Proton using the second URL
echo "Downloading GE-Proton using the second URL"
wget $ge_proton_url2 -O ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz
fi
# Check if either download succeeded
if [ $? -eq 0 ]; then
# Install GE-Proton
echo "Installing GE-Proton"
tar -xvf ~/Downloads/NonSteamLaunchersInstallation/GE-Proton.tar.gz -C ~/.steam/root/compatibilitytools.d/
proton_dir=$(find ~/.steam/root/compatibilitytools.d -maxdepth 1 -type d -name "GE-Proton*" | sort -V | tail -n1)
else
# Handle download failure
echo "Failed to download GE-Proton"
fi
fi
fi
echo "10"
echo "# Setting files in their place"
# 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
msi_file=~/Downloads/NonSteamLaunchersInstallation/EpicGamesLauncherInstaller.msi
# 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
exe_file=~/Downloads/NonSteamLaunchersInstallation/GOG_Galaxy_2.0.exe
# Set the URL to download the third file from
ubi_url=https://ubi.li/4vxt9
# Set the path to save the third file to
ubi_file=~/Downloads/NonSteamLaunchersInstallation/UplayInstaller.exe
# Set the URL to download the fourth file from
origin_url=https://taskinoz.com/downloads/OriginSetup-10.5.119.52718.exe
# Set the path to save the fourth file to
origin_file=~/Downloads/NonSteamLaunchersInstallation/OriginSetup-10.5.119.52718.exe
# Set the URL to download the fifth file from
battle_url=https://www.battle.net/download/getInstallerForGame?os=win
# Set the path to save the fifth file to
battle_file=~/Downloads/NonSteamLaunchersInstallation/BattleNetInstaller.exe
# Set the URL to download the sixth file from
amazon_url=https://download.amazongames.com/AmazonGamesSetup.exe
# Set the path to save the sixth file to
amazon_file=~/Downloads/NonSteamLaunchersInstallation/AmazonGamesSetup.exe
# 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
eaapp_file=~/Downloads/NonSteamLaunchersInstallation/EAappInstaller.exe
# 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
itchio_file=~/Downloads/NonSteamLaunchersInstallation/itch-setup.exe
# 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
# Set the path to save the ninth file to
legacygames_file=~/Downloads/NonSteamLaunchersInstallation/legacy-games-launcher-setup-1.10.0-x64-full.exe
# 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
humblegames_file=~/Downloads/NonSteamLaunchersInstallation/Humble-App-Setup-1.1.8+411.exe
echo "20"
echo "# Creating folders"
# 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 "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_RUNTIME environment variable
export STEAM_RUNTIME="$HOME/.steam/root/ubuntu12_32/steam-runtime/run.sh"
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for the first file
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
wait
echo "30"
echo "# Downloading/Installing Epic Games"
# Check if the user selected Epic Games Launcher
if [[ $options == *"Epic Games"* ]]; then
# User selected Epic Games Launcher
echo "User selected Epic Games"
if [[ ! -f "$epic_games_launcher_path1" ]] && [[ ! -f "$epic_games_launcher_path2" ]]; then
# Epic Games Launcher is not installed
# Set the appid for the Epic Games Launcher
if [ "$use_separate_appids" = true ]; then
appid=EpicGamesLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download MSI file
if [ ! -f "$msi_file" ]; then
echo "Downloading MSI file"
wget $msi_url -O $msi_file
fi
# Run the MSI file using Proton with the /passive option
echo "Running MSI file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run MsiExec.exe /i "$msi_file" /qn
fi
fi
# Wait for the MSI file to finish running
wait
echo "40"
echo "# Downloading/Installing Gog Galaxy"
# Check if the user selected GOG Galaxy
if [[ $options == *"GOG Galaxy"* ]]; then
# User selected GOG Galaxy
echo "User selected GOG Galaxy"
# Check if Gog Galaxy Launcher is already installed
if [[ ! -f "$gog_galaxy_path1" ]] || [[ ! -f "$gog_galaxy_path2" ]]; then
# Gog Galaxy Launcher is not installed
# Set the appid for the Gog Galaxy 2.0
if [ "$use_separate_appids" = true ]; then
appid=GogGalaxyLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download EXE file
if [ ! -f "$exe_file" ]; then
echo "Downloading EXE file"
wget $exe_url -O $exe_file
fi
# Run the EXE file using Proton without the /passive option
echo "Running EXE file using Proton without the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$exe_file" &
else
# Gog Galaxy Launcher is already installed
echo "Gog Galaxy Launcher is already installed"
fi
echo "45"
echo "# Downloading/Installing Gog Galaxy"
# Cancel & Exit the GOG Galaxy Setup Wizard
while true; do
if pgrep -f "GalaxySetup.tmp" > /dev/null; then
pkill -f "GalaxySetup.tmp"
break
fi
sleep 1
done
# Navigate to %LocalAppData%\Temp
cd "$HOME/.local/share/Steam/steamapps/compatdata/$appid/pfx/drive_c/users/steamuser/Temp"
# Find the GalaxyInstaller_XXXXX folder and copy it to C:\Downloads
galaxy_installer_folder=$(find . -maxdepth 1 -type d -name "GalaxyInstaller_*" | head -n1)
cp -r "$galaxy_installer_folder" ~/Downloads/NonSteamLaunchersInstallation/
# Navigate to the C:\Downloads\GalaxyInstaller_XXXXX folder
cd ~/Downloads/NonSteamLaunchersInstallation/"$(basename $galaxy_installer_folder)"
# Run GalaxySetup.exe with the /VERYSILENT and /NORESTART options
echo "Running GalaxySetup.exe with the /VERYSILENT and /NORESTART options"
"$STEAM_RUNTIME" "$proton_dir/proton" run GalaxySetup.exe /VERYSILENT /NORESTART
# Wait for the EXE file to finish running
wait
fi
wait
echo "50"
echo "# Downloading/Installing Uplay"
# Check if user selected Uplay
if [[ $options == *"Uplay"* ]]; then
# User selected Uplay
echo "User selected Uplay"
# Check if Uplay Launcher is installed
if [[ ! -f "$uplay_path1" ]] || [[ ! -f "$uplay_path2" ]]; then
# Set the appid for the Ubisoft Launcher
if [ "$use_separate_appids" = true ]; then
appid=UplayLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download UBI file
if [ ! -f "$ubi_file" ]; then
echo "Downloading UBI file"
wget $ubi_url -O $ubi_file
fi
fi # Run the UBI file using Proton with the /passive option
echo "Running UBI file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$ubi_file" /S
fi
# Wait for the UBI file to finish running
wait
echo "60"
echo "# Downloading/Installing Origin"
# Check if user selected Origin
if [[ $options == *"Origin"* ]]; then
# User selected Origin
echo "User selected Origin"
# Check if Origin Launcher is installed
if [[ ! -f "$origin_path1" ]] || [[ ! -f "$origin_path2" ]]; then
# Set the appid for the Origin Launcher
if [ "$use_separate_appids" = true ]; then
appid=OriginLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download ORIGIN file
if [ ! -f "$origin_file" ]; then
echo "Downloading ORIGIN file"
wget $origin_url -O $origin_file
fi
# Run the ORIGIN file using Proton with the /passive option
echo "Running ORIGIN file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$origin_file" /SILENT
# Edit local.xml
sed -i 's|| \n \n \n \n|' "$HOME/.local/share/Steam/steamapps/compatdata/$appid/pfx/drive_c/ProgramData/Origin/local.xml"
# Terminate any processes with the name Origin.exe
pkill Origin.exe
# Wait for the ORIGIN file to finish running
wait
fi
fi
wait
echo "70"
echo "# Downloading/Installing Battle.net"
# Check if user selected Battle.net
if [[ $options == *"Battle.net"* ]]; then
# User selected Battle.net
echo "User selected Battle.net"
# Check if Battlenet Launcher is installed
if [[ ! -f "$battlenet_path1" ]] || [[ ! -f "$battlenet_path2" ]]; then
# Set the appid for the Battlenet Launcher
if [ "$use_separate_appids" = true ]; then
appid=Battle.netLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download BATTLE file
if [ ! -f "$battle_file" ]; then
echo "Downloading BATTLE file"
wget $battle_url -O $battle_file
fi
# Run the BATTLE file using Proton with the /passive option
echo "Running BATTLE file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$battle_file" Battle.net-Setup.exe --lang=enUS --installpath="C:\Program Files (x86)\Battle.net" &
while true; do
if pgrep -f "Battle.net.exe" > /dev/null; then
pkill -f "Battle.net.exe"
break
fi
sleep 1
done
fi
fi
wait
echo "80"
echo "# Downloading/Installing Amazon Games"
# Check if user selected Amazon Games
if [[ $options == *"Amazon Games"* ]]; then
# User selected Amazon Games
echo "User selected Amazon Games"
# Check if Amazon Games Launcher is installed
if [[ ! -f "$amazongames_path1" ]] || [[ ! -f "$amazongames_path2" ]]; then
# Set the appid for the Amazon Games Launcher
if [ "$use_separate_appids" = true ]; then
appid=AmazonGamesLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Amazon Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download Amazon file
if [ ! -f "$amazon_file" ]; then
echo "Downloading Amazon file"
wget $amazon_url -O $amazon_file
fi
# Run the Amazon file using Proton with the /passive option
echo "Running Amazon file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$amazon_file" &
while true; do
if pgrep -f "Amazon Games.exe" > /dev/null; then
pkill -f "Amazon Games.exe"
break
fi
sleep 1
done
fi
# Wait for the Amazon file to finish running
wait
fi
wait
echo "90"
echo "# Downloading/Installing EA App"
# Check if user selected EA App
if [[ $options == *"EA App"* ]]; then
# User selected EA App
echo "User selected EA App"
# Check if The EA App Launcher is installed
if [[ ! -f "$eaapp_path1" ]] || [[ ! -f "$eaapp_path2" ]]; then
# Set the appid for the EA App Launcher
if [ "$use_separate_appids" = true ]; then
appid=TheEAappLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download EA App file
if [ ! -f "$eaapp_file" ]; then
echo "Downloading EA App file"
wget $eaapp_url -O $eaapp_file
fi
# Run the EA App file using Proton with the /passive option
echo "Running EA App file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$eaapp_file" /quiet
counter=0
while true; do
if pgrep -f "EABackgroundService.exe" > /dev/null; then
pkill -f "EABackgroundService.exe"
break
fi
sleep 1
counter=$((counter + 1))
if [ $counter -ge 10 ]; then
break
fi
done
# Wait for the EA App file to finish running
wait
fi
fi
wait
echo "95"
echo "# Downloading/Installing itch.io"
# Check if the user selected itchio Launcher
if [[ $options == *"itch.io"* ]]; then
# User selected itchio Launcher
echo "User selected itch.io"
# Check if itchio Launcher is installed
if [[ ! -f "$itchio_path1" ]] || [[ ! -f "$itchio_path2" ]]; then
# Set the appid for the itchio Launcher
if [ "$use_separate_appids" = true ]; then
appid=itchioLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Epic Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download itchio file
if [ ! -f "$itchio_file" ]; then
echo "Downloading itchio file"
wget $itchio_url -O $itchio_file
fi
# Run the itchio file using Proton with the /passive option
echo "Running itchio file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$itchio_file"
fi
fi
wait
echo "98"
echo "# Downloading/Installing Legacy Games"
# Check if user selected Legacy Games
if [[ $options == *"Legacy Games"* ]]; then
# User selected Legacy Games
echo "User selected Legacy Games"
if [[ ! -f "$legacygames_path1" ]] && [[ ! -f "$legacygames_path2" ]]; then
# Legacy Games Launcher is not installed
# Set the appid for the Legacy Games Launcher
if [ "$use_separate_appids" = true ]; then
appid=LegacyGamesLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Legacy Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download Legacy file
if [ ! -f "$legacygames_file" ]; then
echo "Downloading Legacy file"
wget $legacygames_url -O $legacygames_file
fi
# Run the Legacy file using Proton with the /passive option
echo "Running Legacy file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$legacygames_file" /S
fi
fi
# Wait for the Legacy file to finish running
wait
echo "99"
echo "# Downloading/Installing Humble Games Collection"
# Check if the user selected Humble Games Launcher
if [[ $options == *"Humble Games Collection"* ]]; then
# User selected Humble Games Launcher
echo "User selected Humble Games Collection"
if [[ ! -f "$humblegames_path1" ]] && [[ ! -f "$humblegames_path2" ]]; then
# Humble Games Launcher is not installed
# Set the appid for the Humble Games Launcher
if [ "$use_separate_appids" = true ]; then
appid=HumbleGamesLauncher
else
appid=NonSteamLaunchers
fi
# Create app id folder in compatdata folder if it doesn't exist
if [ ! -d "$HOME/.local/share/Steam/steamapps/compatdata/$appid" ]; then
mkdir -p "$HOME/.local/share/Steam/steamapps/compatdata/$appid"
fi
# Change working directory to Proton's
cd $proton_dir
# Set the STEAM_COMPAT_CLIENT_INSTALL_PATH environment variable
export STEAM_COMPAT_CLIENT_INSTALL_PATH="~/.local/share/Steam"
# Set the STEAM_COMPAT_DATA_PATH environment variable for Humble Games Launcher
export STEAM_COMPAT_DATA_PATH=~/.local/share/Steam/steamapps/compatdata/$appid
# Download exe file
if [ ! -f "$humblegames_file" ]; then
echo "Downloading MSI file"
wget $humblegames_url -O $humblegames_file
fi
# Run the exe file using Proton with the /passive option
echo "Running Exe file using Proton with the /passive option"
"$STEAM_RUNTIME" "$proton_dir/proton" run "$humblegames_file" /S /D="C:\Program Files\Humble App"
fi
fi
# Delete NonSteamLaunchersInstallation subfolder in Downloads folder
rm -rf ~/Downloads/NonSteamLaunchersInstallation
echo "100"
echo "# Installation Complete - Steam will now restart. Your launchers will be in your library."
) |
zenity --progress \
--title="Update Status" \
--text="Starting update..." --width=450 --height=350\
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
wait
#Checking Files For Shortcuts and Setting Directories For Shortcuts
if [[ -f "$epic_games_launcher_path1" ]]; then
# Epic Games Launcher is installed at path 1
epicshortcutdirectory="\"$epic_games_launcher_path1\""
epiclaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$epic_games_launcher_path2" ]]; then
# Epic Games Launcher is installed at path 2
epicshortcutdirectory="\"$epic_games_launcher_path2\""
epiclaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/EpicGamesLauncher/\" %command%"
fi
if [[ -f "$gog_galaxy_path1" ]]; then
# Gog Galaxy Launcher is installed at path 1
gogshortcutdirectory="\"$gog_galaxy_path1\""
goglaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$epic_games_launcher_path2" ]]; then
# Gog Galaxy Launcher is installed at path 2
gogshortcutdirectory="\"$gog_galaxy_path2\""
goglaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/GogGalaxyLauncher/\" %command%"
fi
if [[ -f "$origin_path1" ]]; then
# Origin Launcher is installed at path 1
originshortcutdirectory="\"$origin_path1\""
originlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$origin_path2" ]]; then
# Origin Launcher is installed at path 2
originshortcutdirectory="\"$origin_path2\""
originlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/OriginLauncher/\" %command%"
fi
if [[ -f "$uplay_path1" ]]; then
# Uplay Launcher is installed at path 1
uplayshortcutdirectory="\"$uplay_path1\""
uplaylaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$origin_path2" ]]; then
# Uplay Launcher is installed at path 2
uplayshortcutdirectory="\"$uplay_path2\""
uplaylaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/UplayLauncher/\" %command%"
fi
if [[ -f "$battlenet_path1" ]]; then
# Battlenet Launcher is installed at path 1
battlenetshortcutdirectory="\"$battlenet_path1\""
battlenetlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$battlenet_path2" ]]; then
# Battlenet Launcher is installed at path 2
battlenetshortcutdirectory="\"$battlenet_path2\""
battlenetlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/Battle.netLauncher/\" %command%"
fi
if [[ -f "$eaapp_path1" ]]; then
# EA App Launcher is installed at path 1
eaappshortcutdirectory="\"$eaapp_path1\""
eaapplaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$eaapp_path2" ]]; then
# EA App Launcher is installed at path 2
eaappshortcutdirectory="\"$eaapp_path2\""
eaapplaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/TheEAappLauncher/\" %command%"
fi
if [[ -f "$amazongames_path1" ]]; then
# Amazon Games Launcher is installed at path 1
amazonshortcutdirectory="\"$amazongames_path1\""
amazonlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$amazongames_path2" ]]; then
# Amazon Games Launcher is installed at path 2
amazonshortcutdirectory="\"$amazongames_path2\""
amazonlaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/AmazonGamesLauncher/\" %command%"
fi
if [[ -f "$itchio_path1" ]]; then
# itchio Launcher is installed at path 1
itchioshortcutdirectory="\"$itchio_path1\""
itchiolaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$itchio_path2" ]]; then
# itchio Launcher is installed at path 2
itchioshortcutdirectory="\"$itchio_path2\""
itchiolaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/itchioLauncher/\" %command%"
fi
if [[ -f "$legacygames_path1" ]]; then
# Legacy Games Launcher is installed at path 1
legacyshortcutdirectory="\"$legacygames_path1\""
legacylaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$legacygames_path2" ]]; then
# Legacy Games Launcher is installed at path 2
legacyshortcutdirectory="\"$legacygames_path2\""
legacylaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/LegacyGamesLauncher/\" %command%"
fi
if [[ -f "$humblegames_path1" ]]; then
# Humble Games Launcher is installed at path 1
humbleshortcutdirectory="\"$humblegames_path1\""
humblelaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/\" %command%"
elif [[ -f "$humblegames_path2" ]]; then
# Humble Games Launcher is installed at path 2
humbleshortcutdirectory="\"$humblegames_path2\""
humblelaunchoptions="STEAM_COMPAT_DATA_PATH=\"/home/deck/.local/share/Steam/steamapps/compatdata/HumbleGamesLauncher/\" %command%"
fi
#VDF Library
# Set the download directory
download_dir=~/Downloads/NonSteamLaunchersInstallation
# Download the latest release of the vdf library from the Python Package Index
download_url="https://files.pythonhosted.org/packages/44/7f/74192f47d67c8bf3c47bf0d8487b3457614c2c98d58b6617721d217f3f79/vdf-3.4.tar.gz"
wget -P "$download_dir" "$download_url"
# Extract the downloaded tar.gz file
tar -xvf "$download_dir"/vdf-*.tar.gz -C "$download_dir"
#Setup Tools
# Download the latest release of setuptools from the Python Package Index
download_url="https://files.pythonhosted.org/packages/9b/be/13f54335c7dba713b0e97e11e7a41db3df4a85073d6c5a6e7f6468b22ee2/setuptools-60.2.0.tar.gz"
wget -P "$download_dir" "$download_url"
# Extract the downloaded tar.gz file
tar -xvf "$download_dir"/setuptools-*.tar.gz -C "$download_dir"
# Change to the extracted directory
cd "$download_dir"/setuptools-*/
# Add the installation directory to the PYTHONPATH environment variable
export PYTHONPATH="$download_dir/lib/python3.10/site-packages:$PYTHONPATH"
echo $PYTHONPATH
# Install setuptools
python setup.py install --prefix="$download_dir"
export PYTHONPATH="/usr/lib/python3.10/site-packages:$PYTHONPATH"
# Download extended-setup-tools from the provided URL
download_url="https://files.pythonhosted.org/packages/d2/a0/979ab67627f03da03eff3bc9d01c2969d89e33175764cdd5ec15a44efe50/extended-setup-tools-0.1.8.tar.gz"
wget -P "$download_dir" "$download_url"
# Extract the downloaded tar.gz file
tar -xvf "$download_dir"/extended-setup-tools-*.tar.gz -C "$download_dir"
# Change to the extracted directory
cd "$download_dir"/extended-setup-tools-*/
# Install extended-setup-tools
python setup.py install --prefix="$download_dir"
# Change to the extracted directory
cd "$download_dir"/vdf-*/
# Set the PYTHONPATH environment variable
export PYTHONPATH="$download_dir/lib/python3.10/site-packages:$PYTHONPATH"
# Install the vdf library
python setup.py install --prefix=~/Downloads/NonSteamLaunchersInstallation
# Find all shortcuts.vdf files
shortcuts_vdf_paths=$(find ~/.steam/root/userdata -type d -regextype posix-extended -regex '.*/[0-9]{9,10}/config' -not -path "*/0/*" -not -path "*/anonymous/*" -exec find {} -name shortcuts.vdf \;)
# Set the current date
current_date=$(date +%s)
# Set the maximum age of the shortcuts.vdf file in seconds (e.g. 1 week)
max_age=$((7*24*60*60))
# Initialize the shortcuts_vdf_path variable
shortcuts_vdf_path=""
# Loop through the shortcuts.vdf files
while read -r path; do
# Get the modification date of the shortcuts.vdf file
mod_date=$(date -r "$path" +%s)
# Calculate the age of the shortcuts.vdf file
age=$((current_date-mod_date))
# Check if the age of the shortcuts.vdf file is less than or equal to the maximum age
if [[ $age -le $max_age ]]; then
# The shortcuts.vdf file is current or up to date
# Set the shortcuts_vdf_path variable
shortcuts_vdf_path="$path"
break
fi
done <<< "$shortcuts_vdf_paths"
# Check if shortcuts_vdf_path is not empty
if [[ -n "$shortcuts_vdf_path" ]]; then
# Create a backup of the shortcuts.vdf file
cp "$shortcuts_vdf_path" "$shortcuts_vdf_path.bak"
else
# Find the config directory
config_dir=$(find ~/.steam/root/userdata -type d -regextype posix-extended -regex '.*/[0-9]{9,10}/config' -not -path "*/0/*" -not -path "*/anonymous/*")
# Check if config_dir is not empty
if [[ -n "$config_dir" ]]; then
# Create a new shortcuts.vdf file at the expected location
touch "$config_dir/shortcuts.vdf"
shortcuts_vdf_path="$config_dir/shortcuts.vdf"
else
# Create a new config directory and a new shortcuts.vdf file at the expected location
mkdir ~/.steam/root/userdata/*/config/
touch ~/.steam/root/userdata/*/config/shortcuts.vdf
config_dir=$(find ~/.steam/root/userdata/*/config/)
shortcuts_vdf_path="$config_dir/shortcuts.vdf"
fi
fi
# Run the Python script to create a new entry for a Steam shortcut
python -c "
import vdf
import subprocess
import os
# Load the shortcuts.vdf file
with open('$shortcuts_vdf_path', 'rb') as f:
shortcuts = vdf.binary_load(f)
# Check if the 'shortcuts' key exists in the dictionary
if 'shortcuts' not in shortcuts:
# Create an empty 'shortcuts' entry
shortcuts['shortcuts'] = {}
# Check the format of the 'shortcuts' entry
if isinstance(shortcuts['shortcuts'], dict):
# The 'shortcuts' entry is a dictionary
for key, value in shortcuts['shortcuts'].items():
# Check the type of the value
if not isinstance(value, (str, int, dict)):
pass
# Define the path of the Launchers
epicshortcutdirectory = '$epicshortcutdirectory'
gogshortcutdirectory = '$gogshortcutdirectory'
originshortcutdirectory = '$originshortcutdirectory'
uplayshortcutdirectory = '$uplayshortcutdirectory'
battlenetshortcutdirectory = '$battlenetshortcutdirectory'
eaappshortcutdirectory = '$eaappshortcutdirectory'
amazonshortcutdirectory = '$amazonshortcutdirectory'
itchioshortcutdirectory = '$itchioshortcutdirectory'
legacyshortcutdirectory = '$legacyshortcutdirectory'
humbleshortcutdirectory = '$humbleshortcutdirectory'
if epicshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Epic Games',
'Exe': '$epicshortcutdirectory',
'StartDir': '$epicshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$epiclaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if gogshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Gog Galaxy',
'Exe': '$gogshortcutdirectory',
'StartDir': '$gogshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$goglaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if uplayshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Ubisoft Connect',
'Exe': '$uplayshortcutdirectory',
'StartDir': '$uplayshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$uplaylaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if originshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Origin',
'Exe': '$originshortcutdirectory',
'StartDir': '$originshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$originlaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if battlenetshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Battle.net',
'Exe': '$battlenetshortcutdirectory',
'StartDir': '$battlenetshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$battlenetlaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if eaappshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'EA App',
'Exe': '$eaappshortcutdirectory',
'StartDir': '$eaappshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$eaapplaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if amazonshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Amazon Games',
'Exe': '$amazonshortcutdirectory',
'StartDir': '$amazonshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$amazonlaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if itchioshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'itch.io',
'Exe': '$itchioshortcutdirectory',
'StartDir': '$itchioshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$itchiolaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if legacyshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Legacy Games',
'Exe': '$legacyshortcutdirectory',
'StartDir': '$legacyshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$legacylaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
if humbleshortcutdirectory != '':
# Create a new entry for the Steam shortcut
new_entry = {
'appid': '',
'AppName': 'Humble Games Collection',
'Exe': '$humbleshortcutdirectory',
'StartDir': '$humbleshortcutdirectory',
'icon': '',
'ShortcutPath': '',
'LaunchOptions': '$humblelaunchoptions',
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitGameID': '',
'LastPlayTime': 0,
'tags': {
'0': 'favorite'
}
}
# Add the new entry to the shortcuts dictionary
entry_exists = False
if type(shortcuts['shortcuts']) == list:
for entry in shortcuts['shortcuts']:
entry.setdefault('AppName', '')
entry.setdefault('Exe', '')
if entry['AppName'] == new_entry['AppName'] and entry['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
shortcuts['shortcuts'].append(new_entry)
elif type(shortcuts['shortcuts']) == dict:
for key in shortcuts['shortcuts'].keys():
shortcuts['shortcuts'][key].setdefault('AppName', '')
shortcuts['shortcuts'][key].setdefault('Exe', '')
if shortcuts['shortcuts'][key]['AppName'] == new_entry['AppName'] and shortcuts['shortcuts'][key]['Exe'] == new_entry['Exe']:
entry_exists = True
break
if not entry_exists:
# Check if the shortcuts['shortcuts'] dictionary is empty
if not shortcuts['shortcuts']:
max_key = -1
else:
# Find the highest key value
max_key = max(int(key) for key in shortcuts['shortcuts'].keys())
# Add the new entry with a key value one higher than the current maximum
shortcuts['shortcuts'][str(max_key + 1)] = new_entry
# Save the updated shortcuts dictionary to the shortcuts.vdf file
with open('$shortcuts_vdf_path', 'wb') as f:
vdf.binary_dump(shortcuts, f)"
# Delete NonSteamLaunchersInstallation subfolder in Downloads folder
rm -rf ~/Downloads/NonSteamLaunchersInstallation
# Detach script from Steam process
nohup sh -c 'sleep 10; /usr/bin/steam' &
# Close all instances of Steam
killall steam