diff --git a/README.md b/README.md index 8f471e4e..e466599f 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,21 @@ # EmuDeck + [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/from-referrer/) -EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam ROM Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org) +EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck or any other Linux Distro, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam Rom Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org) -** If you are a dev please read till the bottom ** +# How to use EmuDeck? -There are two ways of using EmuDeck: +We recomend you take a look at our extensive Wiki, you'll find guides, videos and all sorts of content about the project: -## Using Steam ROM Manager - - - -This option gives you all your games presented with their box arts as if they were a regular Steam Game. -EmuDeck has preloaded configurations for Steam ROM Manager for the following systems: - -https://emudeck.github.io/emulators/steamos/supported-emulators/ - -## Using EmulationStation DE - - - -EmuDeck configures EmulationStation DE to use the same rom folders that EmuDeck creates for you and it even downloads all the emulators and cores the ES-DE needs, all configurations that EmuDeck installs are carried over when using EmulationStation DE. For a comprehensive list of all the systems that ESDE supports go to [ES-DE](https://es-de.org) - -# Hotkeys - -We try to use the same hotkeys for every emulator but some of them have their own different hotkeys, shown here: - -https://emudeck.github.io/controls-and-hotkeys/windows/hotkeys/?h=hotkeys - -Note that Nintendo-oriented emulators refer to "A" in the emulated sense (physical Steam Deck "B") +[EmuDeck Wiki](https://emudeck.github.io/how-to-install-emudeck/steamos/) # Developers, developers, developers. If you wanna help us improve EmuDeck we are open to accept your PR! Just keep in mind this simple guide: -- Think EmuDeck is for everybody, tech savvy and regular users, so everything has to be properly explained, use Easy mode for unattended automatic stuff. -- User input is non recommended, everything should be done with no mouse or keyboard input. If input is a must then you have to code your feature only on expert mode. +- Think that EmuDeck is for everybody, tech savvy and is specially directed to regular users that are new to Emulation, so everything has to be properly explained. - Things using sudo are a big no no, there are exceptions but always try to find a way of prevent using sudo. -- Every Emulator added has to be included on this readme file, have a SRM profile and follow the AmberElec hotkey mapping ( just check the previous table) +- Every Emulator needs to have a SRM profile and follow the AmberElec hotkey mapping. - Always do your PR to the dev branch. - -## Submitting a PR Request for a Steam ROM Manager Parser - -If you would like to submit a PR request for a Steam ROM Manager parser, use the following format: - -### The Basics - -* Spell out console names - no acronyms - * For example, `PSP` should be spelled out as `PlayStation Portable` -* Respect original capitalization and spacing - * A few examples: - * `RetroArch` uses a capital `R` and capital `A` - * The `Nintendo Game Boy` uses a capital `N`, `G`, and `B` with spaces between each word - * The `PlayStation Portable` uses a capital `P` and `S` in `PlayStation` as do the other `PlayStation` handhelds and consoles - -### Parser Structure - -* `configTitle`: - * `COMPANYNAME SYSTEMNAME - EMULATORNAME RETROARCHCORENAME` - * If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME` - * A few examples: - * Config Title: `"configTitle": "Amiga - RetroArch PUAE",` - * Config Title: `"configTitle": "Nintendo Game Boy Color - mGBA (Standalone)",` - * Config Title: `"configTitle": "Sony PlayStation 2 - PCSX2",` -* `steamCategory`: - * **Note:** Non-Default Parsers refer to when a system has multiple emulation choices (through alternative emulators or RetroArch cores). Only one of these parsers is enabled by default and any alternative choices are disabled by default. - * Default Parsers: - * `COMPANYNAME CONSOLENAME` - * Non-Default Parsers: - * Standalone: `COMPANYNAME CONSOLENAME - EMULATORNAME` - * RetroArch Core: `COMPANYNAME CONSOLENAME - RETROARCHCORENAME` - * If the RetroArch core's name is identical to the Standalone emulator name, add `RetroArch` in front of the `RETROARCHCORENAME` - * If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME` - * A few examples: - * Default Parsers: - * Mupen64Plus Next (RetroArch core for Nintendo 64) - * Steam Category Name: `"steamCategory": ""${Nintendo 64}",` - * DuckStation (PSX Emulator) - * Steam Category Name: `"steamCategory": "${Sony PlayStation}",` - * Non-Default Parsers: - * Rosalie's Mupen GUI (N64 Emulator) - * Steam Category Name: `"steamCategory": "${Nintendo 64 - Rosalie's Mupen GUI}",` - * Beetle PSX HW (RetroArch core for PSX) - * Steam Category Name: `"steamCategory": "${Sony PlayStation - Beetle PSX HW}",` - -### Parser Filename - -`companyname_systemname-emulatorname-retroarchcore.json` - -If it is a RetroArch core, replace `emulatorname` with `ra`. - -* A few examples: - * `nintendo_wii-dolphin.json` - * `nintendo_64-rmg.json` - * `nintendo_gba-ra-mgba.json` - * `sega_saturn-ra-mednafen.json` diff --git a/chimeraOS/configs/emulationstation/es_find_rules.xml b/chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml similarity index 100% rename from chimeraOS/configs/emulationstation/es_find_rules.xml rename to chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml diff --git a/cloudSyncHealth.sh b/cloudSyncHealth.sh new file mode 100644 index 00000000..a4e90afb --- /dev/null +++ b/cloudSyncHealth.sh @@ -0,0 +1,129 @@ +#!/bin/bash +clear +source "$HOME/.config/EmuDeck/backend/functions/all.sh" + +NONE='\033[00m' +RED='\033[01;31m' +GREEN='\033[01;32m' +YELLOW='\033[01;33m' +PURPLE='\033[01;35m' +CYAN='\033[01;36m' +WHITE='\033[01;37m' +BOLD='\033[1m' +UNDERLINE='\033[4m' +BLINK='\x1b[5m' +cloud_sync_upload_test(){ + local emuName=$1 + + if [ ! -d $savesPath/$emuName ];then + return 2 + fi + + echo "test" > "$savesPath/$emuName/.temp" + filePath="$savesPath/$emuName/.temp" + "$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$filePath" "$cloud_sync_provider":Emudeck/saves/$emuName/.temp && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1 +} + +cloud_sync_dowload_test(){ + local emuName=$1 + + if [ ! -d $savesPath/$emuName ];then + return 2 + fi + + echo "test" > "$savesPath/$emuName/.temp" + filePath="$savesPath/$emuName/.temp" + "$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.temp "$filePath" && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1 + +} + +echo -e "${CYAN}CloudSync Status Report${NONE}" +echo "" + +miArray=("Cemu" "citra" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" ) + +upload="true" +download="true" +launchers="true" +echo -e "${YELLOW}Checking launchers${NONE}" +for entry in "$toolsPath/launchers/"*.sh +do + if [ -f "$entry" ]; then + if grep -q "cloud_sync_startService" $entry; then + echo -e "$entry: ${GREEN}Success${NONE}" + else + echo -e "$entry: ${RED}Failure${NONE}" + launchers="false" + fi + fi +done + +if grep -q "cloud_sync_startService" "$toolsPath/launchers/esde/emulationstationde.sh"; then + echo -e "$toolsPath/launchers/esde/emulationstationde.sh: ${GREEN}Success${NONE}" +else + echo -e "$toolsPath/launchers/esde/emulationstationde.sh: ${RED}Failure${NONE}" +fi + +echo -e "${YELLOW}Checking for Windows old .lnk files${NONE}" +find "$savesPath" -type f -name "*.lnk" | while read -r entry +do + rm -rf $entry + echo "found and deleted: $entry" +done + +found_files="false" + +for entry in "$savesPath"/**/*.lnk +do + if [ -f "$entry" ]; then + rm -rf $entry + echo "found and deleted: $entry" + found_files="true" + fi +done + +if [ "$found_files" = "false" ]; then + echo "No files with the '.lnk' extension found." +fi + +echo -e "" +echo -e "${YELLOW}Testing uploading${NONE}" +# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento +for elemento in "${miArray[@]}"; do + echo -ne "Testing $elemento upload..." + if cloud_sync_upload_test $elemento;then + echo -e "${GREEN}Success${NONE}" + elif [ $? = 2 ]; then + echo -e "${YELLOW}Save folder not found${NONE}" + else + echo -e "${RED}Failure${NONE}" + upload="false" + fi +done +echo "" +echo -e "${YELLOW}Testing downloading${NONE}" +# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento +for elemento in "${miArray[@]}"; do + echo -ne "Testing $elemento download..." + if cloud_sync_dowload_test $elemento;then + echo -e "${GREEN}Success${NONE}" + elif [ $? = 2 ]; then + echo -e "${YELLOW}Save folder not found${NONE}" + else + echo -e "${RED}Failure${NONE}" + download="false" + fi +done +echo -e "" +echo -e "${CYAN}Recommendations${NONE}" + + + +if [ $download = "true" ] && [ $upload = "true" ] && [ $launchers = "true" ]; then + echo -e "${YELLOW}Everything seems to be in proper order, at least on Linux${NONE}" +else + echo -e "${YELLOW}Open EmuDeck, go to Manage Emulators and reset SteamRomManager Configuration. Then test some games and if it keeps failing open Steam Rom Manager and parse all your games again to get the proper launchers${NONE}" +fi + + +sleep 100000 \ No newline at end of file diff --git a/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini b/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini index b825dd67..633a38d3 100644 --- a/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini +++ b/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini @@ -125,7 +125,7 @@ RecentROM_8= RecentROM_9= SaveFilePath=/run/media/mmcblk0p1/Emulation/saves/melonDS/saves SavestatePath=/run/media/mmcblk0p1/Emulation/saves/melonDS/states -CheatFilePath= +CheatFilePath=/run/media/mmcblk0p1/Emulation/storage/melonDS/cheats EnableCheats=0 MouseHide=1 MouseHideSeconds=5 diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json b/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json index 54ac725e..1860cbb2 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json @@ -21,7 +21,7 @@ "specifiedAccounts": "" }, "parserInputs": { - "glob": "**/${title}@(.sh)" + "glob": "${title}@(.sh)" }, "titleFromVariable": { "limitToGroups": "", diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json b/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json index cb71af66..58ec1403 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json b/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json index 74fa333d..64cd6802 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json @@ -16,6 +16,7 @@ "defaultHeroImage": "", "defaultLogoImage": "", "defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png", + "disabled": false, "localImages": "", "localTallImages": "", "localHeroImages": "", diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json b/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json index 56d898d2..584fc1e2 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json index a1004a5f..2deef661 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json b/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json index 412b42a7..5f6427a5 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json index a8e9c743..b7c8bd3c 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json index a4e0a949..40d5261a 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json b/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json index 5bd4efad..87530ea8 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json @@ -22,6 +22,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json index 395700fa..79938cbd 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json index f229ad6c..7106d904 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json b/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json index b818d583..182ded3f 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json index 394f54a8..399ca14c 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json b/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json index 82918a1c..50d1636c 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json index 950883f7..2067b248 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json index 06070f13..125bb36e 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json index 022a72ce..e50ff7b8 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json index 383d83e5..7059a6be 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json index 1c4e14ef..d860b6bf 100644 --- a/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json +++ b/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json @@ -21,6 +21,7 @@ "localHeroImages": "", "localLogoImages": "", "localIcons": "", + "disabled": false, "userAccounts": { "specifiedAccounts": "", "skipWithMissingDataDir": true, diff --git a/functions/EmuScripts/emuDeckCemuNative.sh b/functions/EmuScripts/emuDeckCemuNative.sh index 155c1b85..58fb7455 100644 --- a/functions/EmuScripts/emuDeckCemuNative.sh +++ b/functions/EmuScripts/emuDeckCemuNative.sh @@ -8,12 +8,12 @@ CemuNative_functions () { declare -A CemuNative=( [emuName]="CemuNative" [emuType]="AppImage" - [emuPath]="${HOME}/Applications/Cemu.AppImage" + [emuPath]="${HOME}/Applications/CemuNative.AppImage" [configDir]="${HOME}/.config/Cemu" [configFile]="${HOME}/.config/Cemu/settings.xml" [shareDir]="${HOME}/.local/share/Cemu" ) - + # Cleanup older things cleanup () { echo "NYI" @@ -136,7 +136,7 @@ CemuNative_functions () { bezelOn () { echo "NYI" } - + # Bezels OFF bezelOff () { echo "NYI" diff --git a/functions/EmuScripts/emuDeckCitra.sh b/functions/EmuScripts/emuDeckCitra.sh index f28d3c62..55a227f8 100755 --- a/functions/EmuScripts/emuDeckCitra.sh +++ b/functions/EmuScripts/emuDeckCitra.sh @@ -1,10 +1,10 @@ #!/bin/bash #variables Citra_emuName="Citra" -Citra_emuType="FlatPak" -Citra_emuPath="org.citra_emu.citra" +Citra_emuType="AppImage" +Citra_emuPath="citra_emu" Citra_releaseURL="" -Citra_configFile="$HOME/.var/app/org.citra_emu.citra/config/citra-emu/qt-config.ini" +Citra_configFile="$HOME/.config/citra-emu/qt-config.ini" #cleanupOlderThings Citra_finalize(){ @@ -15,7 +15,8 @@ Citra_finalize(){ Citra_install(){ setMSG "Installing $Citra_emuName" installEmuFP "${Citra_emuName}" "${Citra_emuPath}" - flatpak override "${Citra_emuPath}" --filesystem=host --user + curl -L https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-linux > citra-setup-linux && chmod +x citra-setup-linux && ./citra-setup-linux --accept-licenses --confirm-command install + rm citra-setup-linux } #ApplyInitialSettings @@ -31,7 +32,7 @@ Citra_init(){ #update Citra_update(){ setMSG "Updating $Citra_emuName settings." - configEmuFP "${Citra_emuName}" "${Citra_emuPath}" + cd $HOME/.citra && ./maintenancetool update Citra_setupStorage Citra_setEmulationFolder Citra_setupSaves @@ -48,35 +49,35 @@ Citra_setEmulationFolder(){ #Setup symlink for AES keys mkdir -p "${biosPath}/citra/" - mkdir -p "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sysdata" - ln -sn "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sysdata" "${biosPath}/citra/keys" + mkdir -p "$HOME/.local/share/citra-emu/sysdata" + ln -sn "$HOME/.local/share/citra-emu/sysdata" "${biosPath}/citra/keys" } #SetupSaves Citra_setupSaves(){ - linkToSaveFolder citra saves "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" - linkToSaveFolder citra states "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/states" + linkToSaveFolder citra saves "$HOME/.local/share/citra-emu/sdmc" + linkToSaveFolder citra states "$HOME/.local/share/citra-emu/states" } #SetupStorage Citra_setupStorage(){ - if [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" ]; then + if [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.local/share/citra-emu/nand/" ]; then echo "citra nand does not exist in storagepath." echo -e "" setMSG "Moving Citra nand to the Emulation/storage folder" echo -e "" - mv "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" $storagePath/citra/nand/ - mv "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/" $storagePath/citra/sdmc/ + mv "$HOME/.local/share/citra-emu/nand/" $storagePath/citra/nand/ + mv "$HOME/.local/share/citra-emu/sdmc/" $storagePath/citra/sdmc/ - unlink "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" - unlink "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/" + unlink "$HOME/.local/share/citra-emu/nand/" + unlink "$HOME/.local/share/citra-emu/sdmc/" - ln -ns "${storagePath}/citra/nand/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" - ln -ns "${storagePath}/citra/sdmc/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/" + ln -ns "${storagePath}/citra/nand/" "$HOME/.local/share/citra-emu/nand/" + ln -ns "${storagePath}/citra/sdmc/" "$HOME/.local/share/citra-emu/sdmc/" fi } @@ -85,14 +86,14 @@ Citra_setupStorage(){ #WipeSettings Citra_wipe(){ setMSG "Wiping $Citra_emuName config directory. (factory reset)" - rm -rf "$HOME/.var/app/$Citra_emuPath" + rm -rf "$HOME/.config/citra-emu" } #Uninstall Citra_uninstall(){ setMSG "Uninstalling $Citra_emuName." - flatpak uninstall "$Citra_emuPath" --user -y + cd $HOME/.citra && ./maintenancetool purge } #setABXYstyle @@ -102,7 +103,31 @@ Citra_setABXYstyle(){ #Migrate Citra_migrate(){ -echo "NYI" +echo "Begin Citra Migration" + emu="Citra" + migrationFlag="$HOME/.config/EmuDeck/.${emu}MigrationCompleted" + #check if we have a nomigrateflag for $emu + if [ ! -f "$migrationFlag" ]; then + #citra flatpak to appimage + #From -- > to + migrationTable=() + migrationTable+=("$HOME/.var/app/org.citra_emu.citra/data/citra-emu" "$HOME/.local/share/citra-emu") + migrationTable+=("$HOME/.var/app/org.citra_emu.citra/config/citra-emu" "$HOME/.config/citra-emu") + + # migrateAndLinkConfig "$emu" "$migrationTable" + fi + + #move data from hidden folders out to these folders in case the user already put stuff here. + origPath="$HOME/.var/app/org.citra_emu.citra/data/citra_emu/" + + citra_setupStorage + + rsync -av "${origPath}citra/dump" "${storagePath}/citra/" && rm -rf "${origPath}citra/dump" + rsync -av "${origPath}citra/load" "${storagePath}/citra/" && rm -rf "${origPath}citra/load" + rsync -av "${origPath}citra/sdmc" "${storagePath}/citra/" && rm -rf "${origPath}citra/sdmc" + rsync -av "${origPath}citra/nand" "${storagePath}/citra/" && rm -rf "${origPath}citra/nand" + rsync -av "${origPath}citra/screenshots" "${storagePath}/citra/" && rm -rf "${origPath}citra/screenshots" + rsync -av "${origPath}citra/tas" "${storagePath}/citra/" && rm -rf "${origPath}citra/tas" } #WideScreenOn @@ -141,4 +166,4 @@ Citra_resetConfig(){ Citra_addSteamInputProfile(){ addSteamInputCustomIcons rsync -r "$EMUDECKGIT/configs/steam-input/citra_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/" -} +} \ No newline at end of file diff --git a/functions/EmuScripts/emuDeckRPCS3.sh b/functions/EmuScripts/emuDeckRPCS3.sh index 5fd70dc3..5b98b558 100644 --- a/functions/EmuScripts/emuDeckRPCS3.sh +++ b/functions/EmuScripts/emuDeckRPCS3.sh @@ -1,10 +1,11 @@ #!/bin/bash #variables -RPCS3_remuName="RPCS3" -RPCS3_emuType="FlatPak" -RPCS3_emuPath="net.rpcs3.RPCS3" -RPCS3_releaseURL="" -RPCS3_VFSConf="$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/vfs.yml" +RPCS3_emuName="RPCS3" +RPCS3_emuType="AppImage" +RPCS3_releaseURL="https://rpcs3.net/latest-appimage" +RPCS3_emuPath="$HOME/Applications/rpcs3.AppImage" +RPCS3_flatpakPath="$HOME/.var/app/net.rpcs3.RPCS3" +RPCS3_VFSConf="$HOME/.config/rpcs3/vfs.yml" #cleanupOlderThings RPCS3_cleanup(){ @@ -13,13 +14,40 @@ RPCS3_cleanup(){ #Install RPCS3_install(){ - installEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}" - flatpak override "${RPCS3_emuPath}" --filesystem=host --user + setMSG "Installing RPCS3" + + # RPCS3 does not have a "latest" tag on their GitHub repo. Open issue said to use the below URL instead. Modified from ES-DE script + RPCS3_releaseMD5="$(curl -sL https://rpcs3.net/latest-appimage | md5sum | cut -d ' ' -f 1)" + + local showProgress="$1" + + if [[ $RPCS3_releaseURL = "https://rpcs3.net/latest-appimage"* ]]; then + + if safeDownload "$RPCS3_remuName" "$RPCS3_releaseURL" "$RPCS3_emuPath" "$showProgress"; then + RPCS3_md5sum=($(md5sum $RPCS3_emuPath)) # get first element + if [ "$RPCS3_md5sum" == "$RPCS3_releaseMD5" ]; then + echo "RPCS3 PASSED HASH CHECK." + chmod +x "$RPCS3_emuPath" + else + echo "RPCS3 FAILED HASH CHECK. Expected $RPCS3_releaseMD5, got $RPCS3_md5sum" + fi + else + return 1 + fi + else + setMSG "$RPCS3_remuName not found" + return 1 + fi + + # Preserve flatpak permissions for old RPCS3 Install + flatpak override net.rpcs3.RPCS3 --filesystem=host --user + } #ApplyInitialSettings RPCS3_init(){ - configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}" "true" + RPCS3_migrate + configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3" "true" RPCS3_setupStorage RPCS3_setEmulationFolder RPCS3_setupSaves @@ -27,7 +55,8 @@ RPCS3_init(){ #update RPCS3_update(){ - configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}" + RPCS3_migrate + configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3" RPCS3_setupStorage RPCS3_setEmulationFolder RPCS3_setupSaves @@ -35,13 +64,14 @@ RPCS3_update(){ #ConfigurePaths RPCS3_setEmulationFolder(){ - iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": " - iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": " + iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": " + iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": " } #SetupSaves RPCS3_setupSaves(){ linkToSaveFolder rpcs3 saves "${storagePath}/rpcs3/dev_hdd0/home/00000001/savedata" + linkToSaveFolder rpcs3 trophy "${storagePath}/rpcs3/dev_hdd0/home/00000001/trophy" } @@ -50,11 +80,11 @@ RPCS3_setupStorage(){ mkdir -p "$storagePath/rpcs3/" - if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/${RPCS3_emuPath}/" ];then - echo "rpcs3 hdd does not exist in storagepath." + if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/" -o -d "$HOME/.config/rpcs3/" ]; then + echo "RPCS3 HDD does not exist in storage path" echo -e "" - setMSG "Moving rpcs3 HDD to the Emulation/storage folder" + setMSG "Moving RPCS3 HDD to the Emulation/storage folder" echo -e "" mkdir -p "$storagePath/rpcs3" @@ -62,24 +92,39 @@ RPCS3_setupStorage(){ if [ -d "$savesPath/rpcs3/dev_hdd0" ]; then mv -f "$savesPath"/rpcs3/dev_hdd0 "$storagePath"/rpcs3/ - elif [ -d "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" ]; then - rsync -av "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" + elif [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" ]; then + rsync -av "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" + + elif [ -d "$HOME/.config/rpcs3/dev_hdd0" ]; then + rsync -av "$HOME/.config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.config/rpcs3/dev_hdd0" fi fi } - #WipeSettings RPCS3_wipe(){ - rm -rf "$HOME/.var/app/$RPCS3_emuPath" - # prob not cause roms are here + setMSG "Wiping $RPCS3_emuName settings." + rm -rf "$HOME/.config/rpcs3" + rm -rf "$HOME/.cache/rpcs3" + } +# Create desktop shortcut +RPCS3_createDesktopShortcut(){ + + createDesktopShortcut "$HOME/.local/share/applications/$RPCS3_remuName.desktop" \ + "$RPCS3_emuName AppImage" \ + "${toolsPath}/launchers/rpcs3.sh" \ + "false" +} + #Uninstall RPCS3_uninstall(){ - flatpak uninstall "$RPCS3_emuPath" --user -y + setMSG "Uninstalling $RPCS3_emuName." + rm -rf "$RPCS3_emuPath" + RPCS3_wipe } #setABXYstyle @@ -89,7 +134,22 @@ RPCS3_setABXYstyle(){ #Migrate RPCS3_migrate(){ - echo "NYI" + echo "Begin RPCS3 Migration" + + # Migration + migrationFlag="$HOME/.config/EmuDeck/.${RPCS3_emuName}MigrationCompleted" + #check if we have a nomigrateflag for $emu + if [ ! -f "$migrationFlag" ]; then + #RPCS3 flatpak to appimage + #From -- > to + migrationTable=() + migrationTable+=("$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3" "$HOME/.config/rpcs3") + + migrateAndLinkConfig "$RPCS3_emuName" "$migrationTable" + fi + + echo "true" + } #WideScreenOn @@ -118,9 +178,13 @@ RPCS3_finalize(){ } RPCS3_IsInstalled(){ - isFpInstalled "$RPCS3_emuPath" + if [ -e "$RPCS3_emuPath" ] || [ -e "$RPCS3_flatpakPath" ]; then + echo "true" + else + echo "false" + fi } RPCS3_resetConfig(){ RPCS3_init &>/dev/null && echo "true" || echo "false" -} +} \ No newline at end of file diff --git a/functions/EmuScripts/emuDeckRetroArch.sh b/functions/EmuScripts/emuDeckRetroArch.sh index 2f76b721..a71fb710 100644 --- a/functions/EmuScripts/emuDeckRetroArch.sh +++ b/functions/EmuScripts/emuDeckRetroArch.sh @@ -47,13 +47,17 @@ RetroArch_init(){ mkdir -p "$biosPath/mame/bios" mkdir -p "$biosPath/dc" + mkdir -p "$biosPath/neocd" - echo "Put your Mame bios here" > "$biosPath/mame/bios/readme.txt" - echo "Put your Dreamcast bios here" > "biosPath/dc/readme.txt" - echo "Put your RetroArch, DuckStation, RPCSX2 bios here in this directory, don't create subfolders!" > "$biosPath/mame/bios/readme.txt" + echo "Put your MAME bios here" > "$biosPath/mame/bios/readme.txt" + echo "Put your Dreamcast bios here" > "$biosPath/dc/readme.txt" + echo "Put your Neo Geo CD bios here" > "$biosPath/neocd/readme.txt" + echo "Put your RetroArch, DuckStation, PCSX2 bios here in this directory, don't create subfolders!" > "$biosPath/readme.txt" } + + RetroArch_setCustomizations(){ # User customizations RetroArch_setShadersCRT @@ -186,7 +190,7 @@ RetroArch_setupSaves(){ linkToSaveFolder retroarch saves "$RetroArch_path/saves" RetroArch_setConfigOverride 'savestate_directory' "$savesPath/retroarch/states" "$RetroArch_configFile" - RetroArch_setConfigOverride 'savefile_directory' "$savesPath/retroarch/states" "$RetroArch_configFile" + RetroArch_setConfigOverride 'savefile_directory' "$savesPath/retroarch/saves" "$RetroArch_configFile" } diff --git a/functions/EmuScripts/emuDeckYuzu.sh b/functions/EmuScripts/emuDeckYuzu.sh index 163cc1b4..078e0df9 100644 --- a/functions/EmuScripts/emuDeckYuzu.sh +++ b/functions/EmuScripts/emuDeckYuzu.sh @@ -10,15 +10,15 @@ YuzuEA_emuPath="$HOME/Applications/yuzu-ea.AppImage" Yuzu_cleanup() { echo "Begin Yuzu Cleanup" #Fixes repeated Symlink for older installations - + if [ -f "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys" ]; then unlink "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys" fi - + if [ -f "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys" ]; then unlink "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/nand/system/Contents/registered/registered" fi - + } #Install @@ -234,9 +234,9 @@ YuzuEA_install() { local showProgress="$2" local user local auth - + read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" || echo "invalid" - + #echo "get bearer token" BEARERTOKEN=$(curl -X POST ${jwtHost} -H "X-Username: ${user}" -H "X-Token: ${auth}" -H "User-Agent: EmuDeck") @@ -256,12 +256,12 @@ YuzuEA_install() { } -YuzuEA_addToken(){ +YuzuEA_addToken(){ local tokenValue=$1 local user="" local auth="" - - read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" && YuzuEA_install $tokenValue || echo "invalid" + + read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" && YuzuEA_install "$tokenValue" || echo "invalid" } diff --git a/functions/ToolScripts/emuDeckCloudSync.sh b/functions/ToolScripts/emuDeckCloudSync.sh index c15a83cd..6fd436c6 100644 --- a/functions/ToolScripts/emuDeckCloudSync.sh +++ b/functions/ToolScripts/emuDeckCloudSync.sh @@ -64,6 +64,15 @@ cloud_sync_config(){ } +createCloudFile() { + local folder=$1 + local cloudFilePath="${folder}/.cloud" + if [ ! -f "$cloudFilePath" ]; then + echo "" > "$cloudFilePath" + fi +} + + cloud_sync_setup_providers(){ startLog ${FUNCNAME[0]} if [ "$cloud_sync_provider" == "Emudeck-NextCloud" ]; then @@ -109,13 +118,16 @@ cloud_sync_setup_providers(){ username="$(echo "$NCInput" | awk -F "," '{print $2}')" password="$(echo "$NCInput" | awk -F "," '{print $3}')" port="$(echo "$NCInput" | awk -F "," '{print $4}')" - - "$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)" + find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \; + "$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true" + find "$savesPath" -type f -name "*.cloud" -exec rm {} \; else echo "Cancel SFTP Login" fi - - + elif [ "$cloud_sync_provider" == "Emudeck-OneDrive" ]; then + find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \; + "$cloud_sync_bin" config update "$cloud_sync_provider" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true" + find "$savesPath" -type f -name "*.cloud" -exec rm {} \; elif [ "$cloud_sync_provider" == "Emudeck-SMB" ]; then NCInput=$(zenity --forms \ @@ -132,8 +144,10 @@ cloud_sync_setup_providers(){ host="$(echo "$NCInput" | awk -F "," '{print $1}')" username="$(echo "$NCInput" | awk -F "," '{print $2}')" password="$(echo "$NCInput" | awk -F "," '{print $3}')" + find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \; + "$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true" + find "$savesPath" -type f -name "*.cloud" -exec rm {} \; - "$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)" else echo "Cancel SMB Login" fi @@ -289,16 +303,17 @@ cloud_sync_download(){ cloud_sync_check_lock if [ "$emuName" == "all" ]; then #We check the hashes + cloud_sync_save_hash "$savesPath/$emuName" local filePath="$savesPath/.hash" local hash=$(cat "$savesPath/.hash") - "$cloud_sync_bin" --progress copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/.hash "$filePath" + "$cloud_sync_bin" --progress copyto -L --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/.hash "$filePath" hashCloud=$(cat "$savesPath/.hash") if [ -f "$savesPath/.hash" ] && [ "$hash" != "$hashCloud" ]; then - ("$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/ "$savesPath" && ( + "$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/ "$savesPath" && ( local baseFolder="$savesPath/" for folder in $baseFolder*/ do @@ -307,23 +322,25 @@ cloud_sync_download(){ echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download fi done - )) | zenity --progress --title="Downloading saves - All systems" --text="Syncing saves..." --auto-close --width 300 --height 100 --pulsate + ) else echo "up to date" fi #Single Emu else + #We check the hashes + cloud_sync_save_hash "$emuName" local filePath="$savesPath/$emuName/.hash" local hash=$(cat "$savesPath/$emuName/.hash") - "$cloud_sync_bin" --progress copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.hash "$filePath" + "$cloud_sync_bin" --progress copyto -L --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.hash "$filePath" hashCloud=$(cat "$savesPath/$emuName/.hash") if [ -f "$savesPath/$emuName/.hash" ] && [ "$hash" != "$hashCloud" ];then - ("$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/$emuName/ "$savesPath"/$emuName/ && echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download) | zenity --progress --title="Downloading saves $emuName" --text="Syncing saves..." --auto-close --width 300 --height 100 --pulsate + "$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/$emuName/ "$savesPath"/$emuName/ && echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download else echo "up to date" fi @@ -332,15 +349,17 @@ cloud_sync_download(){ } -cloud_sync_createBackup(){ +cloud_sync_createBackup (){ startLog ${FUNCNAME[0]} - local $emuName=$1 + local emuName=$1 local date=$(date +"%D"); - cp -r "$savesPath/$emuName" "$toolsPath/save-backups/$emuName/" #We delete backups older than one month - find $toolsPath/save-backups -maxdepth 1 -type d -mtime +30 -delete + mkdir -p "$emulationPath/save-backups/$emuName/" + find "$emulationPath/save-backups/$emuName/" -maxdepth 1 -type d -mtime +30 -delete + cp -Lr "$savesPath/$emuName" "$emulationPath/save-backups/" } + cloud_sync_uploadEmu(){ startLog ${FUNCNAME[0]} local emuName=$1 @@ -519,7 +538,7 @@ cloud_sync_downloadEmuAll(){ } -cloud_sync_cloud_sync_uploadEmuAll(){ +cloud_sync_uploadEmuAll(){ cloud_sync_upload 'all' } @@ -619,7 +638,7 @@ cloud_decky_check_status(){ echo "disabled" fi else - echo "noInternet" + echo "disabled" fi } diff --git a/functions/ToolScripts/emuDeckESDE.sh b/functions/ToolScripts/emuDeckESDE.sh index 06650e24..c0987b1b 100644 --- a/functions/ToolScripts/emuDeckESDE.sh +++ b/functions/ToolScripts/emuDeckESDE.sh @@ -32,20 +32,36 @@ ESDE_migration(){ if [ -f "${toolsPath}/EmulationStation-DE-x64_SteamDeck.AppImage" ]; then mv "${toolsPath}/EmulationStation-DE-x64_SteamDeck.AppImage" "${toolsPath}/EmulationStation-DE.AppImage" sed -i "s|EmulationStation-DE-x64_SteamDeck.AppImage|EmulationStation-DE.AppImage|g" "$toolsPath/launchers/esde/emulationstationde.sh" + ESDE_createDesktopShortcut fi } +ESDE_createDesktopShortcut(){ + mkdir -p "$toolsPath/launchers/esde" + cp "$EMUDECKGIT/tools/launchers/esde/emulationstationde.sh" "$toolsPath/launchers/esde/emulationstationde.sh" + rm -rf $HOME/.local/share/applications/EmulationStation-DE.desktop + createDesktopShortcut "$HOME/.local/share/applications/EmulationStation-DE.desktop" \ + "EmulationStation-DE AppImage" \ + "${toolsPath}/launchers/esde/emulationstationde.sh" \ + "false" +} + +ESDE_uninstall(){ + rm -rf "${toolsPath}/EmulationStation-DE.AppImage" + rm -rf $HOME/.local/share/applications/EmulationStationDE.desktop +} + #Install ESDE_install(){ ESDE_SetAppImageURLS setMSG "Installing $ESDE_toolName" local showProgress="$1" - + local filename="$ESDE_toolName.$ESDE_toolType" if [[ $ESDE_releaseURL = "https://gitlab.com/es-de/emulationstation-de/-/package_files/"* ]]; then if installToolAI "$ESDE_toolName" "$ESDE_releaseURL" "" "$showProgress"; then - : + ESDE_createDesktopShortcut else return 1 fi @@ -56,11 +72,6 @@ ESDE_install(){ fi } -ESDE_uninstall(){ - rm -rf "${toolsPath}/EmulationStation-DE.AppImage" - rm -rf $HOME/.local/share/applications/EmulationStationDE.desktop -} - # ESDE20_install(){ # ESDE_SetAppImageURLS # setMSG "Installing $ESDE_toolName PreRelease" @@ -104,13 +115,25 @@ ESDE_init(){ ESDE_addCustomSystems ESDE_setEmulationFolder ESDE_setDefaultEmulators - ESDE_applyTheme "$esdeTheme" + ESDE_applyTheme "$esdeThemeUrl" "$esdeThemeName" ESDE_migrateDownloadedMedia ESDE_addSteamInputProfile ESDE_symlinkGamelists ESDE_finalize ESDE_migrateEpicNoir + if [ "$system" == "chimeraos" ] || [ "$system" == "ChimeraOS" ]; then + ESDE_chimeraOS + fi + +} + +ESDE_chimeraOS(){ + if [ ! -f $es_rulesFile ]; then + rsync -avhp --mkpath "$EMUDECKGIT/chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml" "$(dirname "$es_rulesFile")" --backup --suffix=.bak + else + xmlstarlet ed -d '//entry[contains(., "~/Applications/RetroArch-Linux*.AppImage") or contains(., "~/.local/share/applications/RetroArch-Linux*.AppImage") or contains(., "~/.local/bin/RetroArch-Linux*.AppImage") or contains(., "~/bin/RetroArch-Linux*.AppImage")]' $es_rulesFile > rules_temp.xml && mv rules_temp.xml $es_rulesFile + fi } @@ -134,7 +157,7 @@ ESDE_update(){ ESDE_addCustomSystems ESDE_setEmulationFolder ESDE_setDefaultEmulators - ESDE_applyTheme "$esdeTheme" + ESDE_applyTheme "$esdeThemeUrl" "$esdeThemeName" ESDE_migrateDownloadedMedia ESDE_addSteamInputProfile ESDE_symlinkGamelists @@ -168,30 +191,21 @@ ESDE_addCustomSystems(){ #update ESDE_applyTheme(){ - defaultTheme="https://github.com/anthonycaccese/epic-noir-revisited-es-de.git" - local theme=$1 - local themeName=$(basename "$(echo $theme | rev | cut -d'/' -f1 | rev)") - themeName="${themeName/.git/""}" + local themeUrl=$1 + local themeName=$2 - if [[ "${theme}" == "" ]]; then - echo "ESDE: applyTheme parameter not set." - theme="$defaultTheme" - fi - - echo "ESDE: applyTheme $theme" + echo "ESDE: applyTheme $themeName" mkdir -p "$HOME/.emulationstation/themes/" + if [ -d "$HOME/.emulationstation/themes/$themeName" ]; then + cd "$HOME/.emulationstation/themes/$themeName" && git pull + else + git clone $themeUrl "$HOME/.emulationstation/themes/" + fi + sed -i "s/" "$es_settingsFile" } + #ConfigurePaths ESDE_setEmulationFolder(){ #update cemu custom system launcher to correct path by just replacing the line, if it exists. diff --git a/functions/ToolScripts/emuDeckSRM.sh b/functions/ToolScripts/emuDeckSRM.sh index 43ec4d0a..a186741a 100644 --- a/functions/ToolScripts/emuDeckSRM.sh +++ b/functions/ToolScripts/emuDeckSRM.sh @@ -11,8 +11,8 @@ SRM_install(){ setMSG "Installing Steam ROM Manager" local showProgress="$1" - if installToolAI "$SRM_toolName" "$(getReleaseURLGH "SteamGridDB/steam-rom-manager" "AppImage")" "" "$showProgress"; then - : + if installToolAI "$SRM_toolName" "$(getReleaseURLGH "dragoonDorise/steam-rom-manager" "AppImage")" "" "$showProgress"; then + SRM_createDesktopShortcut else return 1 fi @@ -26,40 +26,20 @@ SRM_uninstall(){ } SRM_createDesktopShortcut(){ - local SRM_Shortcutlocation=$1 - - mkdir -p "$HOME/.local/share/applications/" - - mkdir -p "$HOME/.local/share/icons/emudeck/" - cp -v "$EMUDECKGIT/icons/srm.png" "$HOME/.local/share/icons/emudeck/" - - if [[ "$SRM_Shortcutlocation" == "" ]]; then - - SRM_Shortcutlocation="$HOME/.local/share/applications/SRM.desktop" - - fi - - echo "#!/usr/bin/env xdg-open - [Desktop Entry] - Name=Steam ROM Manager AppImage - Exec=zenity --question --width 450 --title \"Close Steam/Steam Input?\" --text \"Exit Steam to launch Steam ROM Manager? Desktop controls will temporarily revert to touch/trackpad/L2/R2 until you open Steam again.\" && (kill -15 \$(pidof steam) & $SRM_toolPath) - Icon=$HOME/.local/share/icons/emudeck/srm.png - Terminal=false - Type=Application - Categories=Game; - StartupNotify=false" > "$SRM_Shortcutlocation" - chmod +x "$SRM_Shortcutlocation" + mkdir -p "$toolsPath/launchers/srm" + cp "$EMUDECKGIT/tools/launchers/srm/steamrommanager.sh" "$toolsPath/launchers/srm/steamrommanager.sh" + rm -rf $HOME/.local/share/applications/SRM.desktop + createDesktopShortcut "$HOME/.local/share/applications/Steam ROM Manager.desktop" \ + "Steam ROM Manager AppImage" \ + "${toolsPath}/launchers/srm/steamrommanager.sh" \ + "false" } SRM_migration(){ if [ -d "${toolsPath}/srm" ]; then cp "${toolsPath}"/srm/*.AppImage "${toolsPath}" mv "${toolsPath}/Steam-ROM-Manager.AppImage" "${toolsPath}/Steam ROM Manager.AppImage" && rm -rf "${toolsPath}"/srm/ - rm -rf $HOME/.local/share/applications/SRM.desktop - createDesktopShortcut "$HOME/.local/share/applications/Steam ROM Manager.desktop" \ - "Steam ROM Manager AppImage" \ - "${toolsPath}/launchers/srm/steamrommanager.sh" \ - "false" + SRM_createDesktopShortcut fi } @@ -80,93 +60,153 @@ SRM_init(){ exclusionList="" #Multiemulator? if [ "$emuMULTI" != "both" ]; then - if [ "$emuMULTI" = "ra" ]; then - exclusionList=$exclusionList"ares/\n" - else - exclusionList=$exclusionList"atari_2600-ra-stella.json\n"; - exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n"; - exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n"; - exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n"; - exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n"; - exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n"; - exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n"; - exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n"; - exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n"; - exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n"; - exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n"; - exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n"; - exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n"; - exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n"; - exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n"; - exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n"; - exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n"; - exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n"; - exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n"; - exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n"; - exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n"; - exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n"; - exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n"; - exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n"; - fi + + if [ "$emuMULTI" = "undefined" ]; then + exclusionList=$exclusionList"ares/\n" + exclusionList=$exclusionList"amiga_600-ra-puae.json\n"; + exclusionList=$exclusionList"amiga_1200-ra-puae.json\n"; + exclusionList=$exclusionList"amiga_cd-ra-puae.json\n"; + exclusionList=$exclusionList"amiga-ra-puae.json\n"; + exclusionList=$exclusionList"amstrad_cpc-ra-cap32.json\n"; + exclusionList=$exclusionList"arcade_naomi-ra-flycast.json\n"; + exclusionList=$exclusionList"arcade-ra-fbneo.json\n"; + exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n"; + exclusionList=$exclusionList"arcade-ra-mame_2010.json\n"; + exclusionList=$exclusionList"arcade-ra-mame.json\n"; + exclusionList=$exclusionList"atari_2600-ra-stella.json\n"; + exclusionList=$exclusionList"atari_jaguar-ra-virtualjaguar.json\n"; + exclusionList=$exclusionList"atari_lynx-ra-mednafen.json\n"; + exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n"; + exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n"; + exclusionList=$exclusionList"commodore_16-ra-vice_xplus4.json\n"; + exclusionList=$exclusionList"commodore_64-ra-vice_x64.json\n"; + exclusionList=$exclusionList"commodore_vic_20-ra-vice_xvic.json\n"; + exclusionList=$exclusionList"doom-ra-prboom.json\n"; + exclusionList=$exclusionList"dos-ra-dosbox_pure.json\n"; + exclusionList=$exclusionList"nec_pc_98-ra-np2kai.json\n"; + exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n"; + exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n"; + exclusionList=$exclusionList"nintendo_3ds-citra.json\n"; + exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n"; + exclusionList=$exclusionList"nintendo_ds-melonds.json\n"; + exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n"; + exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n"; + exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n"; + exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n"; + exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n"; + exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n"; + exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n"; + exclusionList=$exclusionList"nintendo_sgb-ra-mesen-s.json\n"; + exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n"; + exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n"; + exclusionList=$exclusionList"panasonic_3do-ra-opera.json\n"; + exclusionList=$exclusionList"philips_cd_i-ra-same_cdi.json\n"; + exclusionList=$exclusionList"pico_8-ra-retro8.json\n"; + exclusionList=$exclusionList"rpg_maker-ra-easyrpg.json\n"; + exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n"; + exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n"; + exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n"; + exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n"; + exclusionList=$exclusionList"sega_saturn-ra-mednafen.json\n"; + exclusionList=$exclusionList"sega_saturn-ra-yabause.json\n"; + exclusionList=$exclusionList"sharp-x68000-ra-px68k.json\n"; + exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n"; + exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n"; + exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n"; + exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n"; + exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n"; + exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n"; + exclusionList=$exclusionList"tic-80-ra-tic80.json\n"; + elif [ "$emuMULTI" = "ra" ]; then + exclusionList=$exclusionList"ares/\n" + else + exclusionList=$exclusionList"atari_2600-ra-stella.json\n"; + exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n"; + exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n"; + exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n"; + exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n"; + exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n"; + exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n"; + exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n"; + exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n"; + exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n"; + exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n"; + exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n"; + exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n"; + exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n"; + exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n"; + exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n"; + exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n"; + exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n"; + exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n"; + exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n"; + exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n"; + exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n"; + fi fi #N64? if [ "$emuN64" != "both" ]; then - if [ "$emuN64" = "rgm" ]; then - exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n" - exclusionList=$exclusionList"nintendo_64-ares.json\n" - exclusionList=$exclusionList"nintendo_64dd-ares.json\n" - else - exclusionList=$exclusionList"nintendo_64-rmg.json\n" - fi + if [ "$emuN64" = "rgm" ]; then + exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n" + exclusionList=$exclusionList"nintendo_64-ares.json\n" + exclusionList=$exclusionList"nintendo_64dd-ares.json\n" + else + exclusionList=$exclusionList"nintendo_64-rmg.json\n" + fi fi #PSX? if [ "$emuPSX" != "both" ]; then - if [ "$emuPSX" = "duckstation" ]; then - exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n" - exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n" - exclusionList=$exclusionList"nintendo_64dd-ares.json\n" - else - exclusionList=$exclusionList"sony_psx-duckstation.json\n" - fi + if [ "$emuPSX" = "duckstation" ]; then + exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n" + exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n" + exclusionList=$exclusionList"nintendo_64dd-ares.json\n" + else + exclusionList=$exclusionList"sony_psx-duckstation.json\n" + fi fi #gba? if [ "$emuGBA" != "both" ]; then - if [ "$emuGBA" = "mgba" ]; then - exclusionList=$exclusionList"nintendo_gameboy-advance-ares.json\n" - exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n" - else - exclusionList=$exclusionList"nintendo_gba-mgba.json\n" - fi + if [ "$emuGBA" = "mgba" ]; then + exclusionList=$exclusionList"nintendo_gameboy-advance-ares.json\n" + exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n" + else + exclusionList=$exclusionList"nintendo_gba-mgba.json\n" + fi fi #psp if [ "$emuPSP" != "both" ]; then - if [ "$emuPSP" = "ppsspp" ]; then - exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n" - else - exclusionList=$exclusionList"sony_psp-ppsspp.json\n" - fi + if [ "$emuPSP" = "ppsspp" ]; then + exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n" + else + exclusionList=$exclusionList"sony_psp-ppsspp.json\n" + fi fi #melonDS if [ "$emuNDS" != "both" ]; then - if [ "$emuNDS" = "melonds" ]; then - exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n" - else - exclusionList=$exclusionList"nintendo_ds-melonds.json\n" - fi + if [ "$emuNDS" = "melonds" ]; then + exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n" + else + exclusionList=$exclusionList"nintendo_ds-melonds.json\n" + fi fi #mame if [ "$emuMAME" != "both" ]; then - if [ "$emuMAME" = "mame" ]; then - exclusionList=$exclusionList"arcade-ra-mame_2010.json\n" - exclusionList=$exclusionList"arcade-ra-mame.json\n" - exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n" - else - exclusionList=$exclusionList"arcade-mame.json\n" - exclusionList=$exclusionList"tiger_electronics_gamecom-mame.json\n" - exclusionList=$exclusionList"vtech_vsmile-mame.json\n" - exclusionList=$exclusionList"snk_neo_geo_cd-mame.json\n" - exclusionList=$exclusionList"philips_cd_i-mame.json\n" - fi + if [ "$emuMAME" = "mame" ]; then + exclusionList=$exclusionList"arcade-ra-mame_2010.json\n" + exclusionList=$exclusionList"arcade-ra-mame.json\n" + exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n" + else + exclusionList=$exclusionList"arcade-mame.json\n" + exclusionList=$exclusionList"tiger_electronics_gamecom-mame.json\n" + exclusionList=$exclusionList"vtech_vsmile-mame.json\n" + exclusionList=$exclusionList"snk_neo_geo_cd-mame.json\n" + exclusionList=$exclusionList"philips_cd_i-mame.json\n" + fi fi #Optional parsers exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n" @@ -176,6 +216,71 @@ SRM_init(){ exclusionList=$exclusionList"nintendo_gbc-mgba.json\n" exclusionList=$exclusionList"nintendo_gb-mGBA.json\n" + #Exclusion based on install status. + if [ $doInstallPrimeHack != "true" ]; then + exclusionList=$exclusionList"nintendo_primehack.json\n" + fi + if [ $doInstallRPCS3 != "true" ]; then + exclusionList=$exclusionList"sony_ps3-rpcs3-extracted_iso_psn.json\n" + exclusionList=$exclusionList"sony_ps3-rpcs3-pkg.json\n" + + fi + if [ $doInstallCitra != "true" ]; then + exclusionList=$exclusionList"nintendo_3ds-citra-mGBA.json\n" + + fi + if [ $doInstallDolphin != "true" ]; then + exclusionList=$exclusionList"nintendo_gc-dolphin.json\n" + exclusionList=$exclusionList"nintendo_wii-dolphin.json\n" + fi + if [ $doInstallDuck != "true" ]; then + exclusionList=$exclusionList"sony_psx-duckstation.json\n" + + fi + if [ $doInstallPPSSPP != "true" ]; then + exclusionList=$exclusionList"sony_psp-ppsspp.json\n" + + fi + if [ $doInstallXemu != "true" ]; then + exclusionList=$exclusionList"microsoft_xbox-xemu.json\n" + + fi + if [ $doInstallXenia != "true" ]; then + exclusionList=$exclusionList"microsoft_xbox_360-xenia-xbla.json\n" + exclusionList=$exclusionList"microsoft_xbox_360-xenia.json\n" + + fi + if [ $doInstallScummVM != "true" ]; then + exclusionList=$exclusionList"scumm_scummvm.json\n" + fi + if [ $doInstallRMG != "true" ]; then + exclusionList=$exclusionList"nintendo_64-rmg.json\n" + fi + if [ $doInstallmelonDS != "true" ]; then + exclusionList=$exclusionList"nintendo_ds-melonds.json\n" + fi + if [ $doInstallVita3K != "true" ]; then + exclusionList=$exclusionList"sony_psvita-vita3k-pkg.json\n" + fi + if [ $doInstallMGBA != "true" ]; then + exclusionList=$exclusionList"nintendo_gb-mGBA.json\n" + exclusionList=$exclusionList"nintendo_gba-mgba.json\n" + exclusionList=$exclusionList"nintendo_gbc-mgba.json\n" + fi + if [ $doInstallMAME != "true" ]; then + exclusionList=$exclusionList"arcade-mame.json\n" + fi + if [ $doInstallYuzu != "true" ]; then + exclusionList=$exclusionList"nintendo_switch-yuzu.json\n" + fi + if [ $doInstallRyujinx != "true" ]; then + exclusionList=$exclusionList"nintendo_switch-ryujinx.json\n" + fi + if [ "$doInstallPCSX2QT" != "true" ]; then + exclusionList=$exclusionList"sony_ps2-pcsx2.json\n" + fi + + echo -e $exclusionList > "$HOME/exclude.txt" rm -rf "$SRM_userData_configDir/parsers/emudeck/" @@ -192,7 +297,8 @@ SRM_init(){ rm -rf "$HOME/temp_parser" ln -s "$json_directory" "$HOME/temp_parser" files=$(find "$HOME/temp_parser/emudeck" -name "*.json" | sort) - jq -s '.' $files > "$output_file" + customfiles=$(find "$SRM_userData_configDir/parsers/custom/" -name "*.json" | sort) + jq -s '.' $files $customfiles > "$output_file" rm -rf "$HOME/temp_parser" sleep 1 @@ -207,7 +313,6 @@ SRM_init(){ sed -i "s|/run/media/mmcblk0p1/Emulation/roms|${romsPath}|g" "$SRM_userData_configDir/userSettings.json" sed -i "s|/run/media/mmcblk0p1/Emulation/tools|${toolsPath}|g" "$SRM_userData_configDir/userSettings.json" - echo -e "true" } @@ -233,15 +338,15 @@ SRM_resetConfig(){ SRM_IsInstalled(){ if [ -f "$SRM_toolPath" ]; then - echo "true" + echo "true" else - echo "false" + echo "false" fi } SRM_resetLaunchers(){ rsync -av --existing $HOME/.config/EmuDeck/backend/tools/launchers/ $toolsPath/launchers/ for entry in $toolsPath/launchers/*.sh do - chmod +x "$entry" + chmod +x "$entry" done } diff --git a/functions/all-darwin.sh b/functions/all-darwin.sh index d66a1e97..5098e913 100644 --- a/functions/all-darwin.sh +++ b/functions/all-darwin.sh @@ -59,7 +59,7 @@ source "$EMUDECKGIT"/functions/EmuScripts/emuDeckCemuNative.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckPCSX2.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRPCS3.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckCitra.sh -source "$EMUDECKGIT"/functions/EmuScripts/emuDeckDolphin.sh +source "$EMUDECKGIT"/functions/EmuScripts/emuDeckDolphin.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckPrimehack.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRetroArch.sh source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRyujinx.sh @@ -88,9 +88,5 @@ source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayGreenlight.sh #source "$EMUDECKGIT"/EmuScripts/emuDeckMAMEProton.sh # Darwin ovewrites -if [ $system == "darwin" ]; then - - source "$EMUDECKGIT/darwin/functions/helperFunctions.sh" - source "$EMUDECKGIT/darwin/functions/overrides.sh" - -fi \ No newline at end of file +source "$EMUDECKGIT/darwin/functions/helperFunctions.sh" +source "$EMUDECKGIT/darwin/functions/overrides.sh" diff --git a/functions/all.sh b/functions/all.sh index 53d525e6..b8f1cce9 100644 --- a/functions/all.sh +++ b/functions/all.sh @@ -1,4 +1,8 @@ #!/bin/bash +appleChip=$(uname -m) +if [ appleChip != "Linux" ]; then + PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH" +fi if [[ "$EMUDECKGIT" == "" ]]; then EMUDECKGIT="$HOME/.config/EmuDeck/backend" @@ -40,6 +44,7 @@ source "$EMUDECKGIT"/functions/updateEmuFP.sh source "$EMUDECKGIT"/functions/createFolders.sh source "$EMUDECKGIT"/functions/runSRM.sh source "$EMUDECKGIT"/functions/appImageInit.sh +source "$EMUDECKGIT"/functions/autofix.sh #toolScripts source "$EMUDECKGIT"/functions/ToolScripts/emuDeckESDE.sh @@ -87,6 +92,8 @@ source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayChiaki.sh source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayParsec.sh source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayMoonlight.sh source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayGreenlight.sh +source "$EMUDECKGIT"/functions/cloudSyncHealth.sh + #Soon #source "$EMUDECKGIT"/EmuScripts/emuDeckRedream.sh diff --git a/functions/appImageInit.sh b/functions/appImageInit.sh index 341432fe..bbeddb5f 100644 --- a/functions/appImageInit.sh +++ b/functions/appImageInit.sh @@ -1,6 +1,28 @@ #!/bin/bash appImageInit() { - mkdir -p "$HOME/emudeck/logs" + + if [ "$system" == "chimeraos" ]; then + ESDE_chimeraOS + mkdir -p $HOME/Applications + + downloads_dir="$HOME/Downloads" + destination_dir="$HOME/Applications" + file_name="EmuDeck" + + find "$downloads_dir" -type f -name "*$file_name*.AppImage" -exec mv {} "$destination_dir/$file_name.AppImage" \; + + fi + + #Autofixes, put here functions that make under the hood fixes. + autofix_duplicateESDE + #autofix_raSavesFolders + autofix_lnk SRM_migration ESDE_migration + SRM_createDesktopShortcut + ESDE_createDesktopShortcut + + # Init functions + mkdir -p "$HOME/emudeck/logs" + } diff --git a/functions/autofix.sh b/functions/autofix.sh new file mode 100644 index 00000000..eb9f3deb --- /dev/null +++ b/functions/autofix.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +zenityInfo(){ + local title=$1 + local text=$2 + text="`printf " $title\n\n$text"`" + zenity --info \ + --title="EmuDeck AutoFix" \ + --width="450" \ + --text="${text}" 2>/dev/null +} + +autofix_duplicateESDE(){ + if [ -f "$toolsPath/launchers/esde/emulationstation-de.sh" ]; then + rm -rf "$toolsPath/launchers/esde/emulationstation-de.sh" + + zenityInfo "EmulationStation DE duplicated launcher fixed" "We found you had an old EmulationStation DE launcher, we've deleted it so it wont appear as a duplicate on Steam Rom Manager. Delete both EmulationStation DE entries from Steam and parse back EmulationStation DE" + fi +} + +autofix_lnk(){ + found_files="false" + find "$savesPath" -type f -name "*.lnk" | while read -r entry + do + rm -rf "$entry" + echo "found and deleted: $entry" + found_files="true" + done + if [ $found_files = "true" ]; then + zenityInfo ".lnk files found in your Emulation/saves subfolders" "We've deleted those files, please do the same in your cloud provider to avoid getting downloaded again" + fi +} + +function autofix_raSavesFolders() { + cloud_sync_createBackup "retroarch" + sourceFolder="$savesPath/retroarch/states" + subfolders=$(find -L "$sourceFolder" -mindepth 1 -type d) + + if [[ $(echo "$subfolders" | wc -l) -gt 0 ]]; then + zenityInfo "Old RetroArch saves folders found" "EmuDeck will create a backup of them in Emulation/saves-backup just in case, after that it will reorganize and delete the old subfolder. Please manually delete all subfolders you might have in your cloud provider (EmuDeck/saves/retroarch/saves/* and EmuDeck/saves/retroarch/states/*)" + for subfolder in $subfolders; do + rsync --progress -r -u "$subfolder"/* "$sourceFolder" + rm -rf "$subfolder" + done + fi + + sourceFolder="$savesPath/retroarch/saves" + subfolders=$(find -L "$sourceFolder" -mindepth 1 -type d) + + if [[ $(echo "$subfolders" | wc -l) -gt 0 ]]; then + for subfolder in $subfolders; do + echo $subfolder + rsync --progress -r -u "$subfolder"/* "$sourceFolder" + rm -rf "$subfolder" + done + fi + + + RetroArch_setConfigOverride "sort_savefiles_by_content_enable = " "false" "$RetroArch_configFile" + RetroArch_setConfigOverride "sort_savefiles_enable" "false = " "$RetroArch_configFile" + RetroArch_setConfigOverride "sort_savestates_by_content_enable = " "false" "$RetroArch_configFile" + RetroArch_setConfigOverride "sort_savestates_enable = " "false" "$RetroArch_configFile" + RetroArch_setConfigOverride "sort_screenshots_by_content_enable =" "false" "$RetroArch_configFile" +} \ No newline at end of file diff --git a/functions/cloudSyncHealth.sh b/functions/cloudSyncHealth.sh new file mode 100644 index 00000000..b601baad --- /dev/null +++ b/functions/cloudSyncHealth.sh @@ -0,0 +1,112 @@ +#!/bin/bash +NONE='\033[00m' +RED='\033[01;31m' +GREEN='\033[01;32m' +YELLOW='\033[01;33m' +CYAN='\033[01;36m' +cloud_sync_upload_test(){ + local emuName=$1 + + if [ ! -d $savesPath/$emuName ];then + return 2 + fi + + echo "test" > "$savesPath/$emuName/.temp" + filePath="$savesPath/$emuName/.temp" + "$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$filePath" "$cloud_sync_provider":Emudeck/saves/$emuName/.temp && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1 +} + +cloud_sync_dowload_test(){ + local emuName=$1 + + if [ ! -d $savesPath/$emuName ];then + return 2 + fi + + echo "test" > "$savesPath/$emuName/.temp" + filePath="$savesPath/$emuName/.temp" + "$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.temp "$filePath" && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1 + +} + +cloudSyncHealth(){ + + echo -e "CloudSync Status Report" + echo "" + + miArray=("Cemu" "citra" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" ) + + upload="true" + download="true" + launchers="true" + echo -e "Checking launchers" + for entry in "$toolsPath/launchers/"*.sh + do + if [ -f "$entry" ]; then + if grep -q "cloud_sync_startService" $entry; then + echo -e "$entry: Success" + else + echo -e "$entry: Failure" + launchers="false" + fi + fi + done + + if grep -q "cloud_sync_startService" "$toolsPath/launchers/esde/emulationstationde.sh"; then + echo -e "$toolsPath/launchers/esde/emulationstationde.sh: Success" + else + echo -e "$toolsPath/launchers/esde/emulationstationde.sh: Failure" + fi + + found_files="false" + echo -e "Checking for Windows old .lnk files" + find "$savesPath" -type f -name "*.lnk" | while read -r entry + do + rm -rf $entry + echo "found and deleted: $entry" + found_files="true" + done + + if [ "$found_files" = "false" ]; then + echo "No files with the '.lnk' extension found." + fi + + echo -e "" + echo -e "Testing uploading" + # Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento + for elemento in "${miArray[@]}"; do + echo -ne "Testing $elemento upload..." + if cloud_sync_upload_test $elemento;then + echo -e "Success" + elif [ $? = 2 ]; then + echo -e "Save folder not found" + else + echo -e "Failure" + upload="false" + fi + done + echo "" + echo -e "Testing downloading" + # Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento + for elemento in "${miArray[@]}"; do + echo -ne "Testing $elemento download..." + if cloud_sync_dowload_test $elemento;then + echo -e "Success" + elif [ $? = 2 ]; then + echo -e "Save folder not found" + else + echo -e "Failure" + download="false" + fi + done + echo -e "" + echo -e "Recommendations" + + + + if [ $download = "true" ] && [ $upload = "true" ] && [ $launchers = "true" ]; then + echo -e "Everything seems to be in proper order, at least on Linux" + else + echo -e "Open EmuDeck, go to Manage Emulators and reset SteamRomManager Configuration. Then test some games and if it keeps failing open Steam Rom Manager and parse all your games again to get the proper launchers" + fi +} \ No newline at end of file diff --git a/functions/helperFunctions.sh b/functions/helperFunctions.sh index bce9cc99..6d0e0a46 100644 --- a/functions/helperFunctions.sh +++ b/functions/helperFunctions.sh @@ -718,3 +718,18 @@ isFpInstalled(){ check_internet_connection(){ ping -q -c 1 -W 1 8.8.8.8 > /dev/null 2>&1 && echo true || echo false } + +zipLogs() { + logsFolder="$HOME/emudeck/logs" + settingsFile="$HOME/emudeck/settings.sh" + zipOutput="$HOME/Desktop/emudeck_logs.zip" + + # Comprime los archivos en un archivo zip + zip -rj "$zipOutput" "$logsFolder" "$settingsFile" + + if [ $? -eq 0 ]; then + echo "true" + else + echo "false" + fi +} \ No newline at end of file diff --git a/functions/installToolAI.sh b/functions/installToolAI.sh index 098424a2..dd0cfd18 100644 --- a/functions/installToolAI.sh +++ b/functions/installToolAI.sh @@ -29,37 +29,34 @@ installToolAI(){ return 1 fi - shName=$(echo "$name" | awk '{print tolower($0)}') - if [ $shName = 'emulationstation-de' ]; then - shName='emulationstationde' - rm -rf "$toolsPath/launchers/esde" - fi +# shName=$(echo "$name" | awk '{print tolower($0)}') - find "${toolsPath}/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \ - while read -r f - do - echo "deleting $f" - rm -f "$f" - done - - find "${EMUDECKGIT}/tools/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \ - while read -r l - do - echo "deploying $l" - launcherFileName=$(basename "$l") - folderName=$(dirname "$l" | sed 's!.*/!!') - if [ $folderName == "launchers" ]; then - folderName="" - fi - chmod +x "$l" - mkdir -p "${toolsPath}/launchers/$folderName" - cp -v -r "$l" "${toolsPath}/launchers/$folderName/$launcherFileName" - chmod +x "${toolsPath}/launchers/$folderName/$launcherFileName" - name=${name//-/} - name=${name// /} - createDesktopShortcut "$HOME/.local/share/applications/$name.desktop" \ - "$name" \ - "${toolsPath}/launchers/$folderName/$launcherFileName" \ - "false" - done +# TODO: Restore this funcionality +# find "${toolsPath}/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \ +# while read -r f +# do +# echo "deleting $f" +# rm -f "$f" +# done +# +# find "${EMUDECKGIT}/tools/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \ +# while read -r l +# do +# echo "deploying $l" +# launcherFileName=$(basename "$l") +# folderName=$(dirname "$l" | sed 's!.*/!!') +# if [ $folderName == "launchers" ]; then +# folderName="" +# fi +# chmod +x "$l" +# mkdir -p "${toolsPath}/launchers/$folderName" +# cp -v -r "$l" "${toolsPath}/launchers/$folderName/$launcherFileName" +# chmod +x "${toolsPath}/launchers/$folderName/$launcherFileName" +# name=${name//-/} +# name=${name// /} +# createDesktopShortcut "$HOME/.local/share/applications/$name.desktop" \ +# "$name" \ +# "${toolsPath}/launchers/$folderName/$launcherFileName" \ +# "false" +# done } diff --git a/functions/setMSG.sh b/functions/setMSG.sh index 252f6fe9..9304b6b8 100644 --- a/functions/setMSG.sh +++ b/functions/setMSG.sh @@ -1,12 +1,17 @@ #!/bin/bash -setMSG(){ +setMSG() { + if [ -z $progressBar ]; then + progressBar=0 + fi progressBar=$((progressBar + 5)) - #We prevent the zenity to close if we have too much MSG, the classic eternal 99% - if [ $progressBar == 95 ]; then + + # We prevent the zenity to close if we have too much MSG, the classic eternal 99% + if [ $progressBar -eq 95 ]; then progressBar=90 - fi - echo "$progressBar" > $HOME/.config/EmuDeck/msg.log + fi + + echo "$progressBar" > $HOME/.config/EmuDeck/msg.log echo "# $1" >> $HOME/.config/EmuDeck/msg.log echo "$1" sleep 0.5 -} \ No newline at end of file +} diff --git a/icons/EmulationStationDE.png b/icons/EmulationStationDE.png new file mode 100644 index 00000000..d82bc51c Binary files /dev/null and b/icons/EmulationStationDE.png differ diff --git a/installCLI.sh b/installCLI.sh index 08f4d8e9..978a5a97 100755 --- a/installCLI.sh +++ b/installCLI.sh @@ -40,7 +40,7 @@ function setSetting() { } setDefaults(){ - + setSetting expert false setSetting system SteamOS setSetting doSetupRA true @@ -133,12 +133,12 @@ setDefaults(){ setSetting emuGBA multiemulator setSetting emuMAME multiemulator setSetting xeniaResolution 720P - setSetting emuNDS melonDS + setSetting emuNDS melonds setSetting emuN64 ra setSetting emuMULTI ra setSetting emuPSP ppsspp setSetting emuPSX duckstation - setSetting emuSCUMMVM scummvm + setSetting emuSCUMMVM scummvm } @@ -165,7 +165,7 @@ setDefaults # Welcome, Quick or custom? source "$EMUDECKGIT"/whiptail/WelcomePage.sh -if [ $expert == 'false' ]; then +if [ $expert == 'false' ]; then cp "$EMUDECKGIT/settings.sh" "$emuDecksettingsFile" fi @@ -178,45 +178,45 @@ source "$EMUDECKGIT"/whiptail/RomStoragePage.sh ## Custom mode Questions # -if [ $expert == 'true' ]; then - - # Emulators +if [ $expert == 'true' ]; then + + # Emulators source $EMUDECKGIT/whiptail/EmulatorSelectorPage.sh - + # if [ $second == true ]; then - # # Overwrite configuration? + # # Overwrite configuration? # source "$EMUDECKGIT"/whiptail/EmulatorConfigurationPage.sh # fi - + # Retroachievements #source "$EMUDECKGIT"/whiptail/RAAchievementsPage.sh - + # Bezels source "$EMUDECKGIT"/whiptail/RABezelsPage.sh - # if [ $deviceAR != 43 ]; then + # if [ $deviceAR != 43 ]; then # # AR Sega Classic source "$EMUDECKGIT"/whiptail/AspectRatioSegaPage.sh - # + # # # AR SNES + NES source "$EMUDECKGIT"/whiptail/AspectRatioSNESPage.sh - # + # # # AR 3D Classics # source "$EMUDECKGIT"/whiptail/AspectRatio3DPage.sh - # + # # # AR Gamecube # source "$EMUDECKGIT"/whiptail/AspectRatioDolphinPage.sh - # fi - + # fi + # LCD Shader Handhelds #source "$EMUDECKGIT"/whiptail/ShadersHandheldsPage.sh - + # CRT Shader Handhelds #source "$EMUDECKGIT"/whiptail/Shaders2DPage.sh - + # Frontend source "$EMUDECKGIT"/whiptail/PegasusInstallPage.sh - + # Pegasus Theme if [ $doInstallPegasus == true ]; then source "$EMUDECKGIT"/whiptail/PegasusThemePage.sh diff --git a/setup.sh b/setup.sh index c2174c8d..3e772970 100644 --- a/setup.sh +++ b/setup.sh @@ -432,6 +432,16 @@ if [ "$doSetupRA" == "true" ]; then fi fi +if [ "$system" == "chimeraos" ]; then + mkdir -p $HOME/Applications + + downloads_dir="$HOME/Downloads" + destination_dir="$HOME/Applications" + file_name="EmuDeck" + + find "$downloads_dir" -type f -name "*$file_name*.AppImage" -exec mv {} "$destination_dir/$file_name.AppImage" \; + +fi createDesktopIcons diff --git a/tools/binupdate/binupdate.sh b/tools/binupdate/binupdate.sh index 6fc03808..1557167e 100644 --- a/tools/binupdate/binupdate.sh +++ b/tools/binupdate/binupdate.sh @@ -293,4 +293,4 @@ else zenity --error \ --text="Nothing available to be updated." 2>/dev/null -fi +fi \ No newline at end of file diff --git a/tools/launchers/esde/emulationstationde.sh b/tools/launchers/esde/emulationstationde.sh index fc8641b4..a87898d5 100755 --- a/tools/launchers/esde/emulationstationde.sh +++ b/tools/launchers/esde/emulationstationde.sh @@ -1,5 +1,5 @@ #!/bin/bash source $HOME/.config/EmuDeck/backend/functions/all.sh cloud_sync_downloadEmuAll && cloud_sync_startService -$toolsPath/EmulationStation-DE.AppImage "${@}" +"$toolsPath/EmulationStation-DE.AppImage" "${@}" rm -rf "$savesPath/.gaming" \ No newline at end of file diff --git a/tools/launchers/pcsx2-qt.sh b/tools/launchers/pcsx2-qt.sh index 55f040c1..3d2ef6ff 100755 --- a/tools/launchers/pcsx2-qt.sh +++ b/tools/launchers/pcsx2-qt.sh @@ -1,6 +1,6 @@ #!/bin/sh source $HOME/.config/EmuDeck/backend/functions/all.sh -cloud_sync_downloadEmu pcsx2 +cloud_sync_downloadEmu pcsx2 && cloud_sync_startService emuName="pcsx2-Qt" #parameterize me emufolder="$HOME/Applications" # has to be applications for ES-DE to find it diff --git a/tools/launchers/srm/steamrommanager.sh b/tools/launchers/srm/steamrommanager.sh index 521665e1..3c8e094c 100755 --- a/tools/launchers/srm/steamrommanager.sh +++ b/tools/launchers/srm/steamrommanager.sh @@ -5,4 +5,4 @@ SRM_toolPath="${toolsPath}/Steam ROM Manager.AppImage" zenity --question \ --width 450 \ --title "Close Steam/Steam Input?" \ - --text "Exit Steam to launch Steam ROM Manager? Desktop controls will revert to Lizard Mode until Steam is reopened. Use L2/R2 to click and the trackpad to move the cursor." && (kill -15 $(pidof steam) & $SRM_toolPath) + --text "Exit Steam to launch Steam ROM Manager? Desktop controls will revert to Lizard Mode until Steam is reopened. Use L2/R2 to click and the trackpad to move the cursor." && (kill -15 $(pidof steam) & "$SRM_toolPath") diff --git a/versions.json b/versions.json index 843944b3..b53d50b4 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,5 @@ { - "ra": { "id": "ra", "code": "RetroArch", "version": 1 }, + "ra": { "id": "ra", "code": "RetroArch", "version": 2 }, "dolphin": { "id": "dolphin", "code": "Dolphin", "version": 1 }, "primehack": { "id": "primehack", "code": "Primehack", "version": 0 }, "ppsspp": { "id": "ppsspp", "code": "PPSSPP", "version": 0 }, @@ -12,7 +12,7 @@ "ryujinx": { "id": "ryujinx", "code": "Ryujinx", "version": 2 }, "xemu": { "id": "xemu", "code": "Xemu", "version": 0 }, "cemu": { "id": "cemu", "code": "Cemu", "version": 0 }, - "srm": { "id": "srm", "code": "SRM", "version": 5 }, + "srm": { "id": "srm", "code": "SRM", "version": 6 }, "rmg": { "id": "rmg", "code": "RMG", "version": 0 }, "esde": { "id": "esde", "code": "ESDE", "version": 1 }, "mame": { "id": "mame", "code": "MAME", "version": 0 },