#!/bin/bash #variables ESDE_toolName="EmulationStation-DE" ESDE_toolType="AppImage" ESDE_toolPath="${toolsPath}/EmulationStation-DE-x64_SteamDeck.AppImage" ESDE_releaseURL="https://gitlab.com/es-de/emulationstation-de/-/raw/master/es-app/assets/latest_steam_deck_appimage.txt" es_systemsFile="$HOME/.emulationstation/custom_systems/es_systems.xml" es_settingsFile="$HOME/.emulationstation/es_settings.xml" #cleanupOlderThings ESDE_cleanup(){ echo "NYI" } #Install ESDE_install(){ setMSG "Installing $ESDE_toolName" curl $ESDE_releaseURL --output "$toolsPath/latesturl.txt" latestURL=$(grep "https://gitlab" "$toolsPath/latesturl.txt") curl "$latestURL" --output "$ESDE_toolPath" rm "$toolsPath/latesturl.txt" chmod +x "$ESDE_toolPath" } #ApplyInitialSettings ESDE_init(){ setMSG "Setting up $ESDE_toolName" mkdir -p "$HOME/.emulationstation/custom_systems/" rsync -avhp --mkpath "$EMUDECKGIT/configs/emulationstation/es_settings.xml" "$(dirname "$es_settingsFile")" --backup --suffix=.bak rsync -avhp --mkpath "$EMUDECKGIT/configs/emulationstation/custom_systems/es_systems.xml" "$(dirname "$es_systemsFile")" --backup --suffix=.bak ESDE_addCustomSystems ESDE_setEmulationFolder ESDE_setDefaultEmulators ESDE_applyTheme "$esdeTheme" ESDE_migrateDownloadedMedia ESDE_finalize } ESDE_update(){ setMSG "Setting up $ESDE_toolName" mkdir -p "$HOME/.emulationstation/custom_systems/" #update es_settings.xml rsync -avhp --mkpath "$EMUDECKGIT/configs/emulationstation/es_settings.xml" "$(dirname "$es_settingsFile")" --ignore-existing rsync -avhp --mkpath "$EMUDECKGIT/configs/emulationstation/custom_systems/es_systems.xml" "$(dirname "$es_systemsFile")" --ignore-existing ESDE_addCustomSystems ESDE_setEmulationFolder ESDE_setDefaultEmulators ESDE_applyTheme "$esdeTheme" ESDE_migrateDownloadedMedia ESDE_finalize } ESDE_addCustomSystems(){ #insert cemu custom system if it doesn't exist, but the file does if [[ $(grep -rnw "$es_systemsFile" -e 'Cemu (Proton)') == "" ]]; then xmlstarlet ed --inplace --subnode '/systemList' --type elem --name 'system' \ --var newSystem '$prev' \ --subnode '$newSystem' --type elem --name 'name' -v 'wiiu' \ --subnode '$newSystem' --type elem --name 'fullname' -v 'Nintendo Wii U' \ --subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/wiiu/roms' \ --subnode '$newSystem' --type elem --name 'extension' -v '.rpx .RPX .wud .WUD .wux .WUX .elf .ELF .iso .ISO .wad .WAD .wua .WUA' \ --subnode '$newSystem' --type elem --name 'command' -v "/usr/bin/bash ${toolsPath}/launchers/cemu.sh -f -g z:%ROM%" \ --insert '$newSystem/command' --type attr --name 'label' --value "Cemu (Proton)" \ --subnode '$newSystem' --type elem --name 'platform' -v 'wiiu' \ --subnode '$newSystem' --type elem --name 'theme' -v 'wiiu' \ "$es_systemsFile" fi #Custom Systems config end } #update ESDE_applyTheme(){ defaultTheme="EPICNOIR" local theme=$1 if [[ "${theme}" == "" ]]; then echo "ESDE: applyTheme parameter not set." theme="$defaultTheme" fi echo "ESDE: applyTheme $theme" mkdir -p "$HOME/.emulationstation/themes/" git clone https://github.com/dragoonDorise/es-theme-epicnoir.git "$HOME/.emulationstation/themes/es-epicnoir" >> /dev/null cd "$HOME/.emulationstation/themes/es-epicnoir" && git reset --hard HEAD && git clean -f -d && git pull echo -e "OK!" if [[ "$theme" == *"EPICNOIR"* ]]; then changeLine '' "$es_settingsFile" fi if [[ "$theme" == *"MODERN-DE"* ]]; then changeLine '' "$es_settingsFile" fi if [[ "$theme" == *"RBSIMPLE-DE"* ]]; then changeLine '' "$es_settingsFile" fi } #ConfigurePaths ESDE_setEmulationFolder(){ #update cemu custom system launcher to correct path by just replacing the line, if it exists. echo "updating $es_systemsFile" commandString="/usr/bin/bash ${toolsPath}/launchers/cemu.sh -f -g z:%ROM%" xmlstarlet ed -L -u '/systemList/system/command[@label="Cemu (Proton)"]' -v "$commandString" "$es_systemsFile" echo "updating $es_settingsFile" #configure roms Directory esDE_romDir="" #roms changeLine '" #search for media dir in xml, if not found, change to ours. If it's blank, also change to ours. mediaDirFound=$(grep -rnw "$es_settingsFile" -e 'MediaDirectory') mediaDirEmpty=$(grep -rnw "$es_settingsFile" -e '') if [[ $mediaDirFound == '' ]]; then echo "adding ES-DE ${esDE_MediaDir}" sed -i -e '$a'"${esDE_MediaDir}" "$es_settingsFile" # use config file instead of link elif [[ ! $mediaDirEmpty == '' ]]; then echo "setting ES-DE MediaDirectory to ${esDE_MediaDir}" changeLine '' $gamelistFile fi alternativeEmu=$(grep -rnw $gamelistFile -e 'alternativeEmulator') if [[ $alternativeEmu == '' ]]; then echo "" >> $gamelistFile fi sed -i "s|||g" $gamelistFile fi }