mirror of
https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck.git
synced 2024-11-19 23:59:19 +01:00
97 lines
3.1 KiB
Bash
97 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
# ENVIRONMENT VARIABLES
|
|
# $USER
|
|
logged_in_user=$(logname 2>/dev/null || whoami)
|
|
# $HOME
|
|
logged_in_home=$(eval echo "~${logged_in_user}")
|
|
|
|
# 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() {
|
|
zenity --notification --text="$1" --timeout=1
|
|
}
|
|
|
|
# Set the remote repository URL
|
|
REPO_URL="https://github.com/moraroy/NonSteamLaunchersDecky/archive/refs/heads/main.zip"
|
|
|
|
# Set the local directory path
|
|
LOCAL_DIR="${logged_in_home}/homebrew/plugins/NonSteamLaunchers"
|
|
|
|
# Check if the Decky Loader and NSL Plugin exist
|
|
DECKY_LOADER_EXISTS=false
|
|
NSL_PLUGIN_EXISTS=false
|
|
|
|
if [ -d "${logged_in_home}/homebrew/plugins" ]; then
|
|
DECKY_LOADER_EXISTS=true
|
|
fi
|
|
|
|
if [ -d "$LOCAL_DIR" ]; then
|
|
if [ -z "$(ls -A $LOCAL_DIR)" ]; then
|
|
NSL_PLUGIN_EXISTS=false
|
|
else
|
|
NSL_PLUGIN_EXISTS=true
|
|
fi
|
|
fi
|
|
|
|
set +x
|
|
|
|
if $DECKY_LOADER_EXISTS; then
|
|
while true; do
|
|
USER_INPUT=$(zenity --forms --title="Authentication Required" --text="Decky Loader detected! $(if $NSL_PLUGIN_EXISTS; then echo 'NSL Plugin also detected and will be updated to the latest version 🚀.'; else echo 'But no NSL plugin :(. Would you like to inject it and go to Game Mode?'; fi) 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
|
|
else
|
|
zenity --error --text="Decky Loader not detected. Please download and install it from their website first and re-run this script to get the NSL Plugin."
|
|
rm -rf "$download_dir"
|
|
exit 1
|
|
fi
|
|
|
|
if $NSL_PLUGIN_EXISTS; then
|
|
show_message "NSL Plugin detected. Deleting and updating..."
|
|
echo "Plugin directory exists. Removing..."
|
|
echo "$USER_PASSWORD" | sudo -S rm -rf "$LOCAL_DIR"
|
|
fi
|
|
|
|
show_message "Creating base directory and setting permissions..."
|
|
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"
|
|
|
|
echo "Downloading and extracting the repository..."
|
|
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*
|
|
|
|
set -x
|
|
cd "$LOCAL_DIR"
|
|
|
|
show_message "Plugin installed. Switching to Game Mode..."
|
|
switch_to_game_mode
|
|
|
|
sudo systemctl restart plugin_loader.service
|
|
|