mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-04-10 19:15:12 +00:00
Merge branch 'cooker' of https://github.com/RetroDECK/RetroDECK into cooker
This commit is contained in:
commit
aa5374d7fd
|
@ -213,10 +213,6 @@
|
|||
"filename": "how-to-install-psvita-games.txt",
|
||||
"location": "$roms_folder/psvita"
|
||||
},
|
||||
"ryujinx_firmware": {
|
||||
"filename": "Install-firmware-through-Ryujinx.txt",
|
||||
"location": "$bios_folder/switch/firmware"
|
||||
},
|
||||
"custom_systems": {
|
||||
"filename": "es_systems.xml",
|
||||
"location": "$rdhome/ES-DE/custom_systems"
|
||||
|
|
|
@ -4,7 +4,7 @@ ES_SYSTEMS_FILE="../ES-DE/resources/systems/linux/es_systems.xml"
|
|||
MIME_FILE="config/retrodeck/net.retrodeck.retrodeck.mime.xml"
|
||||
|
||||
# List of extensions to ignore
|
||||
IGNORED_EXTENSIONS=". .appimage cue"
|
||||
IGNORED_EXTENSIONS=". .appimage cue png po"
|
||||
|
||||
# Check if xmlstarlet is installed
|
||||
if ! command -v xmlstarlet &> /dev/null; then
|
||||
|
@ -53,4 +53,4 @@ xmlstarlet fo --indent-tab "$MIME_FILE" > "$MIME_FILE.tmp" && mv "$MIME_FILE.tmp
|
|||
# Clean up temporary files
|
||||
rm -f "$EXTENSIONS_FILE"
|
||||
|
||||
echo "MIME file updated successfully at $MIME_FILE"
|
||||
echo "MIME file updated successfully at $MIME_FILE"
|
||||
|
|
|
@ -10,7 +10,7 @@ save_migration() {
|
|||
# ROMs on SD card
|
||||
roms_folder="$default_sd/retrodeck/roms"
|
||||
if [[ ! -L "$rdhome" && ! -L "$rdhome/roms" ]]; then # Add a roms folder symlink back to ~/retrodeck if missing, to fix things like PS2 autosaves until user migrates whole ~retrodeck directory
|
||||
ln -s $roms_folder "$rdhome/roms"
|
||||
ln -s "$roms_folder" "$rdhome/roms"
|
||||
fi
|
||||
else
|
||||
# ROMs on Internal
|
||||
|
@ -31,19 +31,19 @@ save_migration() {
|
|||
fi
|
||||
|
||||
# Doing the dir prep as we don't know from which version we came
|
||||
dir_prep "$media_folder" "/var/config/ES-DE/downloaded_media"
|
||||
dir_prep "$themes_folder" "/var/config/ES-DE/themes"
|
||||
dir_prep "$media_folder" "$XDG_CONFIG_HOME/ES-DE/downloaded_media"
|
||||
dir_prep "$themes_folder" "$XDG_CONFIG_HOME/ES-DE/themes"
|
||||
create_dir "$rdhome/logs" #this was added later, maybe safe to remove in a few versions
|
||||
|
||||
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
|
||||
cp -fv /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
||||
cp -fv "/app/retrodeck/es_settings.xml" "$XDG_CONFIG_HOME/ES-DE/settings/es_settings.xml"
|
||||
|
||||
# 0.4 -> 0.5
|
||||
# Perform save and state migration if needed
|
||||
|
||||
# Moving PCSX2 Saves
|
||||
mv -fv /var/config/PCSX2/sstates/* "$rdhome/states/ps2/pcsx2"
|
||||
mv -fv /var/config/PCSX2/memcards/* "$rdhome/saves/ps2/memcards"
|
||||
mv -fv "$XDG_CONFIG_HOME/PCSX2/sstates/"* "$rdhome/states/ps2/pcsx2"
|
||||
mv -fv "$XDG_CONFIG_HOME/PCSX2/memcards/"* "$rdhome/saves/ps2/memcards"
|
||||
|
||||
# Moving Citra saves from legacy location to 0.5.0b structure
|
||||
|
||||
|
@ -52,7 +52,7 @@ save_migration() {
|
|||
|
||||
versionwheresaveschanged="0.4.5b" # Hardcoded break point between unsorted and sorted saves
|
||||
|
||||
if [[ $(sed -e "s/\.//g" <<< $hard_version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]] && [[ ! $(sed -e "s/\.//g" <<< $version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5
|
||||
if [[ $(sed -e "s/\.//g" <<< "$hard_version") > $(sed -e "s/\.//g" <<< "$versionwheresaveschanged") ]] && [[ ! $(sed -e "s/\.//g" <<< "$version") > $(sed -e "s/\.//g" <<< "$versionwheresaveschanged") ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5
|
||||
migration_logfile="$rdhome/logs/savemove_$(date +"%Y_%m_%d_%I_%M_%p").log"
|
||||
save_backup_file="$rdhome/savebackup_$(date +"%Y_%m_%d_%I_%M_%p").zip"
|
||||
state_backup_file="$rdhome/statesbackup_$(date +"%Y_%m_%d_%I_%M_%p").zip"
|
||||
|
@ -74,16 +74,16 @@ save_migration() {
|
|||
current_dest_folder=
|
||||
gamestoskip=
|
||||
|
||||
tar -C "$rdhome" -czf $save_backup_file saves # Backup save directory for safety
|
||||
log i "Saves backed up to" $save_backup_file $migration_logfile
|
||||
tar -C "$rdhome" -czf $state_backup_file states # Backup state directory for safety
|
||||
log i "States backed up to" $state_backup_file $migration_logfile
|
||||
tar -C "$rdhome" -czf "$save_backup_file" saves # Backup save directory for safety
|
||||
log i "Saves backed up to" "$save_backup_file" "$migration_logfile"
|
||||
tar -C "$rdhome" -czf "$state_backup_file" states # Backup state directory for safety
|
||||
log i "States backed up to" "$state_backup_file" "$migration_logfile"
|
||||
|
||||
(
|
||||
movefile() { # Take matching save and rom files and sort save into appropriate system folder
|
||||
echo "# $filesleft $currentlybeingmoved remaining..." # These lines update the Zenity progress bar
|
||||
progress=$(( 100 - (( 100 / "$totalfiles" ) * "$filesleft" )))
|
||||
echo $progress
|
||||
echo "$progress"
|
||||
filesleft=$((filesleft-1))
|
||||
if [[ ! " ${gamestoskip[*]} " =~ " ${1} " ]]; then # If the current game name exists multiple times in array ie. /roms/snes/Mortal Kombat 3.zip and /roms/genesis/Mortal Kombat 3.zip, skip and alert user to sort manually
|
||||
game=$(sed -e "s/\^/ /g" <<< "$1") # Remove whitespace placeholder
|
||||
|
@ -91,59 +91,59 @@ save_migration() {
|
|||
systemdir="$(basename "$(dirname "$1")")" # Extract parent directory identifying system ROM belongs to
|
||||
matches=($(find "$roms_folder" -maxdepth 2 -mindepth 2 -name "$gamebasename"".*" | sed -e 's/ /^/g' | sed -e 's/\..*//')) # Search for multiple instances of pure game name, adding to skip list if found
|
||||
if [[ ${#matches[@]} -gt 1 ]]; then
|
||||
echo "ERROR: Multiple ROMS found with name:" $gamebasename "Please sort saves and states for these ROMS manually" >> $migration_logfile
|
||||
echo "ERROR: Multiple ROMS found with name: $gamebasename Please sort saves and states for these ROMS manually" >> "$migration_logfile"
|
||||
gamestoskip+=("$1")
|
||||
return
|
||||
fi
|
||||
log i "Examining ROM file:" "$game" $migration_logfile
|
||||
log i "System detected as" $systemdir $migration_logfile
|
||||
log i "Examining ROM file:" "$game" "$migration_logfile"
|
||||
log i "System detected as" "$systemdir" "$migration_logfile"
|
||||
sosfile=$(sed -e "s/\^/ /g" <<< "$2") # Remove whitespace placeholder from s-ave o-r s-tate file
|
||||
sospurebasename="$(basename "$sosfile")" # Extract pure file name ie. /saves/game1.sav becomes game1
|
||||
log i "Current save or state being examined for match:" $sosfile $migration_logfile
|
||||
log i "Matching save or state" $sosfile "and game" $game "found." $migration_logfile
|
||||
log i "Moving save or state to $current_dest_folder/$systemdir/$sosbasename" $migration_logfile
|
||||
log i "Current save or state being examined for match:" "$sosfile" "$migration_logfile"
|
||||
log i "Matching save or state $sosfile and game $game found." "$migration_logfile"
|
||||
log i "Moving save or state to $current_dest_folder/$systemdir/$sosbasename" "$migration_logfile"
|
||||
if [[ ! -d $current_dest_folder"/"$systemdir ]]; then # If system directory doesn't exist for save yet, create it
|
||||
log w "Creating missing system directory $current_dest_folder/$systemdir"
|
||||
mkdir $current_dest_folder/$systemdir
|
||||
mkdir "$current_dest_folder/$systemdir"
|
||||
fi
|
||||
mv "$sosfile" -t $current_dest_folder/$systemdir # Move save to appropriate system directory
|
||||
mv "$sosfile" -t "$current_dest_folder/$systemdir" # Move save to appropriate system directory
|
||||
return
|
||||
else
|
||||
local name="$(basename "$1" | sed -e "s/\^/ /g")"
|
||||
log w "Game with name \"$name\" already found. Skipping to next game..." $migration_logfile # Inform user of game being skipped due to duplicate ROM names
|
||||
log w "Game with name \"$name\" already found. Skipping to next game..." "$migration_logfile" # Inform user of game being skipped due to duplicate ROM names
|
||||
fi
|
||||
}
|
||||
|
||||
find "$roms_folder" -mindepth 2 -maxdepth 2 -name "*\^*" -exec echo "ERROR: Game named" {} "found, please move save manually" \; >> $migration_logfile # Warn user if any of their files have the whitespace replacement character used by the script
|
||||
find "$roms_folder" -mindepth 2 -maxdepth 2 -name "*\^*" -exec echo "ERROR: Game named" {} "found, please move save manually" \; >> "$migration_logfile" # Warn user if any of their files have the whitespace replacement character used by the script
|
||||
|
||||
totalfiles=$totalsaves #set variables for save file migration
|
||||
filesleft=$totalsaves
|
||||
totalfiles="$totalsaves" #set variables for save file migration
|
||||
filesleft="$totalsaves"
|
||||
currentlybeingmoved="saves"
|
||||
current_dest_folder=$saves_folder
|
||||
current_dest_folder="$saves_folder"
|
||||
|
||||
for i in "${allsaves[@]}"; do # For each save file, compare to every ROM file name looking for a match
|
||||
found=
|
||||
currentsave=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /saves/game1.sav becomes game1
|
||||
for j in "${allgames[@]}"; do
|
||||
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
|
||||
[[ $currentgame == $currentsave ]] && { found=1; break; } # If names match move to next stage, otherwise skip
|
||||
[[ "$currentgame" == "$currentsave" ]] && { found=1; break; } # If names match move to next stage, otherwise skip
|
||||
done
|
||||
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for save file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded save file
|
||||
[[ -n "$found" ]] && movefile "$j" "$i" || echo "ERROR: No ROM match found for save file" "$i" | sed -e 's/\^/ /g' >> "$migration_logfile" # If a match is found, run movefile() otherwise warn user of stranded save file
|
||||
done
|
||||
|
||||
totalfiles=$totalstates #set variables for state file migration
|
||||
filesleft=$totalstates
|
||||
totalfiles="$totalstates" #set variables for state file migration
|
||||
filesleft="$totalstates"
|
||||
currentlybeingmoved="states"
|
||||
current_dest_folder=$states_folder
|
||||
current_dest_folder="$states_folder"
|
||||
|
||||
for i in "${allstates[@]}"; do # For each state file, compare to every ROM file name looking for a match
|
||||
found=
|
||||
currentstate=($(basename "$i" | sed -e 's/\..*//')) # Extract pure file name ie. /states/game1.sav becomes game1
|
||||
for j in "${allgames[@]}"; do
|
||||
currentgame=($(basename "$j" | sed -e 's/\..*//')) # Extract pure file name ie. /roms/snes/game1.zip becomes game1
|
||||
[[ $currentgame == $currentstate ]] && { found=1; break; } # If names match move to next stage, otherwise skip
|
||||
[[ "$currentgame" == "$currentstate" ]] && { found=1; break; } # If names match move to next stage, otherwise skip
|
||||
done
|
||||
[[ -n $found ]] && movefile $j $i || echo "ERROR: No ROM match found for state file" $i | sed -e 's/\^/ /g' >> $migration_logfile # If a match is found, run movefile() otherwise warn user of stranded state file
|
||||
[[ -n "$found" ]] && movefile "$j" "$i" || echo "ERROR: No ROM match found for state file" "$i" | sed -e 's/\^/ /g' >> "$migration_logfile" # If a match is found, run movefile() otherwise warn user of stranded state file
|
||||
done
|
||||
|
||||
) |
|
||||
|
@ -156,18 +156,18 @@ save_migration() {
|
|||
--no-cancel \
|
||||
--auto-close
|
||||
|
||||
if [[ $(cat $migration_logfile | grep "ERROR" | wc -l) -eq 0 ]]; then
|
||||
if [[ $(cat "$migration_logfile" | grep "ERROR" | wc -l) -eq 0 ]]; then
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="The migration process has sorted all of your files automatically.\n\nEverything should be working normally, if you experience any issues please check the RetroDECK wiki or contact us directly on the Discord."
|
||||
|
||||
else
|
||||
cat $migration_logfile | grep "ERROR" > "$rdhome/manual_sort_needed.log"
|
||||
cat "$migration_logfile" | grep "ERROR" > "$rdhome/manual_sort_needed.log"
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="The migration process was unable to sort $(cat $migration_logfile | grep "ERROR" | wc -l) files automatically.\n\nThese files will need to be moved manually to their new locations, find more detail on the RetroDECK wiki.\n\nA log of the files that need manual sorting can be found at $rdhome/manual_sort_needed.log"
|
||||
--text="The migration process was unable to sort $(cat "$migration_logfile" | grep "ERROR" | wc -l) files automatically.\n\nThese files will need to be moved manually to their new locations, find more detail on the RetroDECK wiki.\n\nA log of the files that need manual sorting can be found at $rdhome/manual_sort_needed.log"
|
||||
fi
|
||||
|
||||
else
|
||||
|
|
|
@ -4,11 +4,11 @@ check_network_connectivity() {
|
|||
# This function will do a basic check for network availability and return "true" if it is working.
|
||||
# USAGE: if [[ $(check_network_connectivity) == "true" ]]; then
|
||||
|
||||
if [[ ! -z $(wget --spider -t 1 $remote_network_target_1 | grep "HTTP response 200") ]]; then
|
||||
if [[ ! -z $(wget --spider -t 1 "$remote_network_target_1" | grep "HTTP response 200") ]]; then
|
||||
local network_connected="true"
|
||||
elif [[ ! -z $(wget --spider -t 1 $remote_network_target_2 | grep "HTTP response 200") ]]; then
|
||||
elif [[ ! -z $(wget --spider -t 1 "$remote_network_target_2" | grep "HTTP response 200") ]]; then
|
||||
local network_connected="true"
|
||||
elif [[ ! -z $(wget --spider -t 1 $remote_network_target_3 | grep "HTTP response 200") ]]; then
|
||||
elif [[ ! -z $(wget --spider -t 1 "$remote_network_target_3" | grep "HTTP response 200") ]]; then
|
||||
local network_connected="true"
|
||||
else
|
||||
local network_connected="false"
|
||||
|
@ -21,7 +21,7 @@ check_desktop_mode() {
|
|||
# This function will do a basic check of if we are running in Steam Deck game mode or not, and return "true" if we are outside of game mode
|
||||
# USAGE: if [[ $(check_desktop_mode) == "true" ]]; then
|
||||
|
||||
if [[ ! $XDG_CURRENT_DESKTOP == "gamescope" ]]; then
|
||||
if [[ ! "$XDG_CURRENT_DESKTOP" == "gamescope" ]]; then
|
||||
echo "true"
|
||||
else
|
||||
echo "false"
|
||||
|
@ -32,7 +32,7 @@ check_is_steam_deck() {
|
|||
# This function will check the internal product ID for the Steam Deck codename and return "true" if RetroDECK is running on a real Deck
|
||||
# USAGE: if [[ $(check_is_steam_deck) == "true" ]]; then
|
||||
|
||||
if [[ $(cat /sys/devices/virtual/dmi/id/product_name) =~ ^(Jupiter|Galileo)$ ]]; then
|
||||
if [[ $(cat "/sys/devices/virtual/dmi/id/product_name") =~ ^(Jupiter|Galileo)$ ]]; then
|
||||
echo "true"
|
||||
else
|
||||
echo "false"
|
||||
|
@ -58,7 +58,7 @@ check_for_version_update() {
|
|||
fi
|
||||
|
||||
if [[ ! "$update_ignore" == "$online_version" ]]; then
|
||||
if [[ "$update_repo" == "RetroDECK" ]] && [[ $(sed -e 's/[\.a-z]//g' <<< $version) -le $(sed -e 's/[\.a-z]//g' <<< $online_version) ]]; then
|
||||
if [[ "$update_repo" == "RetroDECK" ]] && [[ $(sed -e 's/[\.a-z]//g' <<< "$version") -le $(sed -e 's/[\.a-z]//g' <<< "$online_version") ]]; then
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK - New Update Available" \
|
||||
|
@ -66,7 +66,7 @@ check_for_version_update() {
|
|||
rc=$? # Capture return code, as "OK" button has no text value
|
||||
if [[ $rc == "1" ]]; then # If any button other than "OK" was clicked
|
||||
log i "Selected: \"OK\""
|
||||
set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks
|
||||
set_setting_value "$rd_conf" "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks
|
||||
fi
|
||||
elif [[ "$update_repo" == "$cooker_repository_name" ]] && [[ ! $version == $online_version ]]; then
|
||||
log i "Showing update request dialog as \"$online_version\" was found and is greater then \"$version\""
|
||||
|
@ -78,10 +78,10 @@ check_for_version_update() {
|
|||
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
||||
if [[ $choice == "Ignore this version" ]]; then
|
||||
log i "\"Ignore this version\" selected, updating \"$rd_conf\""
|
||||
set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks.
|
||||
set_setting_value "$rd_conf" "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks.
|
||||
fi
|
||||
else # User clicked "Yes"
|
||||
install_release $online_version
|
||||
install_release "$online_version"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -93,13 +93,13 @@ check_for_version_update() {
|
|||
validate_input() {
|
||||
while IFS="^" read -r input action || [[ -n "$input" ]];
|
||||
do
|
||||
if [[ ! $input == "#"* ]] && [[ ! -z "$input" ]]; then
|
||||
if [[ ! "$input" == "#"* ]] && [[ ! -z "$input" ]]; then
|
||||
if [[ "$input" == "$1" ]]; then
|
||||
eval "$action"
|
||||
input_validated="true"
|
||||
fi
|
||||
fi
|
||||
done < $input_validation
|
||||
done < "$input_validation"
|
||||
}
|
||||
|
||||
check_version_is_older_than() {
|
||||
|
@ -135,7 +135,7 @@ fi
|
|||
# Perform post_update commands for current version if it is a cooker or PR
|
||||
if grep -qF "cooker" <<< "$hard_version" || grep -qF "PR" <<< "$hard_version"; then
|
||||
# If newly-installed version is a "cooker" or "PR" build, always perform post_update commands for current version
|
||||
if [[ "$(echo $hard_version | cut -d'-' -f2)" == "$new_version" ]]; then
|
||||
if [[ "$(echo "$hard_version" | cut -d'-' -f2)" == "$new_version" ]]; then
|
||||
is_newer_version="true"
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -63,10 +63,10 @@ find_compatible_compression_format() {
|
|||
local system=$(echo "$1" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$")
|
||||
|
||||
# Extract the relevant lists from the JSON file
|
||||
local chd_systems=$(jq -r '.compression_targets.chd[]' $features)
|
||||
local rvz_systems=$(jq -r '.compression_targets.rvz[]' $features)
|
||||
local zip_systems=$(jq -r '.compression_targets.zip[]' $features)
|
||||
local zip_compressable_extensions=$(jq -r '.zip_compressable_extensions[]' $features)
|
||||
local chd_systems=$(jq -r '.compression_targets.chd[]' "$features")
|
||||
local rvz_systems=$(jq -r '.compression_targets.rvz[]' "$features")
|
||||
local zip_systems=$(jq -r '.compression_targets.zip[]' "$features")
|
||||
local zip_compressable_extensions=$(jq -r '.zip_compressable_extensions[]' "$features")
|
||||
|
||||
if [[ $(validate_for_chd "$1") == "true" ]] && echo "$chd_systems" | grep -q "\b$system\b"; then
|
||||
echo "chd"
|
||||
|
@ -259,9 +259,9 @@ cli_compress_all_games() {
|
|||
local compressable_game=""
|
||||
local all_compressable_games=()
|
||||
if [[ $compression_format == "all" ]]; then
|
||||
local compressible_systems_list=$(jq -r '.compression_targets | to_entries[] | .value[]' $features)
|
||||
local compressible_systems_list=$(jq -r '.compression_targets | to_entries[] | .value[]' "$features")
|
||||
else
|
||||
local compressible_systems_list=$(jq -r '.compression_targets["'"$compression_format"'"][]' $features)
|
||||
local compressible_systems_list=$(jq -r '.compression_targets["'"$compression_format"'"][]' "$features")
|
||||
fi
|
||||
|
||||
read -p "Do you want to have the original files removed after compression is complete? Please answer y/n and press Enter: " post_compression_cleanup
|
||||
|
|
|
@ -51,13 +51,13 @@ find_empty_rom_folders() {
|
|||
}
|
||||
|
||||
configurator_check_multifile_game_structure() {
|
||||
local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3"))
|
||||
local folder_games=($(find "$roms_folder" -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3"))
|
||||
if [[ ${#folder_games[@]} -gt 1 ]]; then
|
||||
echo "$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")" > $logs_folder/multi_file_games_"$(date +"%Y_%m_%d_%I_%M_%p").log"
|
||||
echo "$(find "$roms_folder" -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")" > "$logs_folder"/multi_file_games_"$(date +"%Y_%m_%d_%I_%M_%p").log"
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - Verify Multi-file Structure" \
|
||||
--text="The following games were found to have the incorrect folder structure:\n\n$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/logs"
|
||||
--text="The following games were found to have the incorrect folder structure:\n\n$(find "$roms_folder" -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/logs"
|
||||
else
|
||||
configurator_generic_dialog "RetroDECK Configurator - Verify Multi-file Structure" "No incorrect multi-file game folder structures found."
|
||||
fi
|
||||
|
|
|
@ -65,7 +65,7 @@ configurator_destination_choice_dialog() {
|
|||
if [[ $rc == "0" ]] && [[ -z "$choice" ]]; then
|
||||
echo "Back"
|
||||
else
|
||||
echo $choice
|
||||
echo "$choice"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ configurator_move_folder_dialog() {
|
|||
# USAGE: configurator_move_folder_dialog "folder_variable_name"
|
||||
local rd_dir_name="$1" # The folder variable name from retrodeck.cfg
|
||||
local dir_to_move="$(get_setting_value "$rd_conf" "$rd_dir_name" "retrodeck" "paths")/" # The path of that folder variable
|
||||
local source_root="$(echo $dir_to_move | sed -e 's/\(.*\)\/retrodeck\/.*/\1/')" # The root path of the folder, excluding retrodeck/<folder name>. So /home/deck/retrodeck/roms becomes /home/deck
|
||||
local source_root="$(echo "$dir_to_move" | sed -e 's/\(.*\)\/retrodeck\/.*/\1/')" # The root path of the folder, excluding retrodeck/<folder name>. So /home/deck/retrodeck/roms becomes /home/deck
|
||||
if [[ ! "$rd_dir_name" == "rdhome" ]]; then # If a sub-folder is being moved, find it's path without the source_root. So /home/deck/retrodeck/roms becomes retrodeck/roms
|
||||
local rd_dir_path="$(echo "$dir_to_move" | sed "s/.*\(retrodeck\/.*\)/\1/; s/\/$//")"
|
||||
else # Otherwise just set the retrodeck root folder
|
||||
|
@ -114,7 +114,7 @@ configurator_move_folder_dialog() {
|
|||
configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The $(basename "$dir_to_move") folder is already at that location, please pick a new one."
|
||||
configurator_move_folder_dialog "$rd_dir_name"
|
||||
else
|
||||
if [[ $(verify_space "$(echo $dir_to_move | sed 's/\/$//')" "$dest_root") ]]; then # Make sure there is enough space at the destination
|
||||
if [[ $(verify_space "$(echo "$dir_to_move" | sed 's/\/$//')" "$dest_root") ]]; then # Make sure there is enough space at the destination
|
||||
configurator_generic_dialog "RetroDECK Configurator - Move Folder" "Moving $(basename "$dir_to_move") folder to $choice"
|
||||
unlink "$dest_root/$rd_dir_path" # In case there is already a symlink at the picked destination
|
||||
move "$dir_to_move" "$dest_root/$rd_dir_path"
|
||||
|
@ -168,28 +168,28 @@ changelog_dialog() {
|
|||
log d "Showing changelog dialog"
|
||||
|
||||
if [[ "$1" == "all" ]]; then
|
||||
> "/var/config/retrodeck/changelog-full.xml"
|
||||
for release in $(xml sel -t -m "//component/releases/release" -v "@version" -n $rd_metainfo); do
|
||||
echo "<h1>RetroDECK v$release</h1>" >> "/var/config/retrodeck/changelog-full.xml"
|
||||
xml sel -t -m "//component/releases/release[@version='$release']/description" -c . $rd_metainfo | tr -s '\n' | sed 's/^\s*//' >> "/var/config/retrodeck/changelog-full.xml"
|
||||
echo "" >> "/var/config/retrodeck/changelog-full.xml"
|
||||
> "$XDG_CONFIG_HOME/retrodeck/changelog-full.xml"
|
||||
for release in $(xml sel -t -m "//component/releases/release" -v "@version" -n "$rd_metainfo"); do
|
||||
echo "<h1>RetroDECK v$release</h1>" >> "$XDG_CONFIG_HOME/retrodeck/changelog-full.xml"
|
||||
xml sel -t -m "//component/releases/release[@version='"$release"']/description" -c . "$rd_metainfo" | tr -s '\n' | sed 's/^\s*//' >> "$XDG_CONFIG_HOME/retrodeck/changelog-full.xml"
|
||||
echo "" >> "$XDG_CONFIG_HOME/retrodeck/changelog-full.xml"
|
||||
done
|
||||
|
||||
#convert_to_markdown "/var/config/retrodeck/changelog-full.xml"
|
||||
#convert_to_markdown "$XDG_CONFIG_HOME/retrodeck/changelog-full.xml"
|
||||
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Changelogs" \
|
||||
--filename="/var/config/retrodeck/changelog-full.xml.md"
|
||||
--filename="$XDG_CONFIG_HOME/retrodeck/changelog-full.xml.md"
|
||||
else
|
||||
xml sel -t -m "//component/releases/release[@version='$1']/description" -c . $rd_metainfo | tr -s '\n' | sed 's/^\s*//' > "/var/config/retrodeck/changelog.xml"
|
||||
xml sel -t -m "//component/releases/release[@version='"$1"']/description" -c . "$rd_metainfo" | tr -s '\n' | sed 's/^\s*//' > "$XDG_CONFIG_HOME/retrodeck/changelog.xml"
|
||||
|
||||
convert_to_markdown "/var/config/retrodeck/changelog.xml"
|
||||
convert_to_markdown "$XDG_CONFIG_HOME/retrodeck/changelog.xml"
|
||||
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Changelogs" \
|
||||
--filename="/var/config/retrodeck/changelog.xml.md"
|
||||
--filename="$XDG_CONFIG_HOME/retrodeck/changelog.xml.md"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -204,9 +204,9 @@ get_cheevos_token_dialog() {
|
|||
--add-password="Password")
|
||||
|
||||
IFS='^' read -r cheevos_username cheevos_password < <(printf '%s\n' "$cheevos_info")
|
||||
local cheevos_response=$(curl --silent --data "r=login&u=$cheevos_username&p=$cheevos_password" $RA_API_URL)
|
||||
local cheevos_success=$(echo $cheevos_response | jq .Success | tr -d '"')
|
||||
local cheevos_token=$(echo $cheevos_response | jq .Token | tr -d '"')
|
||||
local cheevos_response=$(curl --silent --data "r=login&u=$cheevos_username&p=$cheevos_password" "$RA_API_URL")
|
||||
local cheevos_success=$(echo "$cheevos_response" | jq .Success | tr -d '"')
|
||||
local cheevos_token=$(echo "$cheevos_response" | jq .Token | tr -d '"')
|
||||
local cheevos_login_timestamp=$(date +%s)
|
||||
if [[ "$cheevos_success" == "true" ]]; then
|
||||
echo "$cheevos_username,$cheevos_token,$cheevos_login_timestamp"
|
||||
|
@ -235,7 +235,7 @@ desktop_mode_warning() {
|
|||
exit 1
|
||||
elif [[ $choice == "Never show this again" ]]; then
|
||||
log i "Selected: \"Never show this again\""
|
||||
set_setting_value $rd_conf "desktop_mode_warning" "false" retrodeck "options" # Store desktop mode warning variable for future checks
|
||||
set_setting_value "$rd_conf" "desktop_mode_warning" "false" retrodeck "options" # Store desktop mode warning variable for future checks
|
||||
fi
|
||||
else
|
||||
log i "Selected: \"Yes\""
|
||||
|
@ -258,7 +258,7 @@ low_space_warning() {
|
|||
--text="$message")
|
||||
if [[ $choice == "Never show this again" ]]; then
|
||||
log i "Selected: \"Never show this again\""
|
||||
set_setting_value $rd_conf "low_space_warning" "false" retrodeck "options" # Store low space warning variable for future checks
|
||||
set_setting_value "$rd_conf" "low_space_warning" "false" retrodeck "options" # Store low space warning variable for future checks
|
||||
fi
|
||||
fi
|
||||
log i "Selected: \"OK\""
|
||||
|
|
|
@ -141,7 +141,7 @@ get_setting_value() {
|
|||
|
||||
"dolphin" | "duckstation" | "pcsx2" | "ppsspp" | "primehack" | "xemu" ) # For files with this syntax - setting_name = setting_value
|
||||
if [[ -z $current_section_name ]]; then
|
||||
echo $(grep -o -P "(?<=^$current_setting_name = ).*" $1)
|
||||
echo $(grep -o -P "(?<=^$current_setting_name = ).*" "$1")
|
||||
else
|
||||
sed -n -E '\^\['"$current_section_name"'\]^,\^\^'"$current_setting_name"'|\[^{ \^\['"$current_section_name"'\]^! { \^\^'"$current_setting_name"'^ p } }' "$1" | grep -o -P "(?<=^$current_setting_name = ).*"
|
||||
fi
|
||||
|
@ -337,7 +337,7 @@ generate_single_patch() {
|
|||
current_setting_name=$(get_setting_name "$escaped_setting_line" "$system")
|
||||
if [[ (-z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'\s*?[:=]^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$(sed -E 's/^[ \t]*//;' <<< "$escaped_setting_line")"'$^ p } }' "$modified_file")) ]]; then # If the same setting line is not found in the same section of the modified file...
|
||||
if [[ ! -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'\s*?[:=]^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'\s*?[:=]^ p } }' "$modified_file") ]]; then # But the setting exists in that section, only with a different value...
|
||||
new_setting_value=$(get_setting_value "$2" "$current_setting_name" "$system" $current_section)
|
||||
new_setting_value=$(get_setting_value "$2" "$current_setting_name" "$system" "$current_section")
|
||||
action="change"
|
||||
echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$system >> "$patch_file"
|
||||
fi
|
||||
|
@ -356,7 +356,7 @@ generate_single_patch() {
|
|||
if [[ (-z $(sed -n -E '\^\s*?\b'"$(sed -E 's/^[ \t]*//' <<< "$escaped_setting_line")"'$^p' "$modified_file")) ]]; then # If the same setting line is not found in the modified file...
|
||||
current_setting_name=$(get_setting_name "$escaped_setting_line" "$system")
|
||||
if [[ ! -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' "$modified_file") ]]; then # But the setting exists, only with a different value...
|
||||
new_setting_value=$(get_setting_value $2 "$current_setting_name" "$system")
|
||||
new_setting_value=$(get_setting_value "$2" "$current_setting_name" "$system")
|
||||
action="change"
|
||||
echo $action"^"$current_section"^"$(sed -e 's%\\\\%\\%g' <<< "$current_setting_name")"^"$new_setting_value"^"$system >> "$patch_file"
|
||||
fi
|
||||
|
@ -381,22 +381,22 @@ generate_single_patch() {
|
|||
if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") || ! -z $(grep -o -P "^\b.+?:$" <<< "$current_setting_line") ]]; then # Capture section header lines
|
||||
if [[ $current_setting_line =~ ^\[.+\] ]]; then # If normal section line
|
||||
action="section"
|
||||
current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name
|
||||
current_section=$(sed 's^[][]^^g' <<< "$current_setting_line") # Remove brackets from section name
|
||||
elif [[ ! -z $(grep -o -P "^\b.+?:$" <<< "$current_setting_line") ]]; then # If RPCS3 section name
|
||||
action="section"
|
||||
current_section=$(sed 's^:$^^' <<< $current_setting_line) # Remove colon from section name
|
||||
current_section=$(sed 's^:$^^' <<< "$current_setting_line") # Remove colon from section name
|
||||
fi
|
||||
elif [[ (! -z $current_section) ]]; then
|
||||
current_setting_name=$(get_setting_name "$escaped_setting_line" "$4")
|
||||
if [[ -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'.*^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'^p } }' $1 ) ]]; then # If setting name is not found in this section of the original file...
|
||||
if [[ -z $(sed -n -E '\^\['"$current_section"'\]|\b'"$current_section"':$^,\^\b'"$current_setting_name"'.*^{ \^\['"$current_section"'\]|\b'"$current_section"':$^! { \^\b'"$current_setting_name"'^p } }' "$1" ) ]]; then # If setting name is not found in this section of the original file...
|
||||
action="add_setting_line" # TODO: This should include the previous line, so that new lines can be inserted in the correct place rather than at the end.
|
||||
echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> $3
|
||||
echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> "$3"
|
||||
fi
|
||||
elif [[ (-z $current_section) ]]; then
|
||||
current_setting_name=$(get_setting_name "$escaped_setting_line" "$4")
|
||||
if [[ -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' $1) ]]; then # If setting name is not found in the original file...
|
||||
if [[ -z $(sed -n -E '\^\s*?\b'"$current_setting_name"'\s*?[:=]^p' "$1") ]]; then # If setting name is not found in the original file...
|
||||
action="add_setting_line" # TODO: This should include the previous line, so that new lines can be inserted in the correct place rather than at the end.
|
||||
echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> $3
|
||||
echo $action"^"$current_section"^"$current_setting_line"^^"$4 >> "$3"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -562,4 +562,4 @@ populate_steamuser_srm(){
|
|||
)
|
||||
' "$XDG_CONFIG_HOME/steam-rom-manager/userData/userConfigurations.json" > "$XDG_CONFIG_HOME/steam-rom-manager/userData/userConfigurations.json.tmp" &&
|
||||
mv "$XDG_CONFIG_HOME/steam-rom-manager/userData/userConfigurations.json.tmp" "$XDG_CONFIG_HOME/steam-rom-manager/userData/userConfigurations.json"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# export LD_LIBRARY_PATH="/app/retrodeck/lib:/app/retrodeck/lib/debug:/app/retrodeck/lib/pkgconfig:$LD_LIBRARY_PATH"
|
||||
|
||||
: "${logging_level:=info}" # Initializing the log level variable if not already valued, this will be actually red later from the config file
|
||||
rd_logs_folder="/var/config/retrodeck/logs" # Static location to write all RetroDECK-related logs
|
||||
rd_logs_folder="$XDG_CONFIG_HOME/retrodeck/logs" # Static location to write all RetroDECK-related logs
|
||||
if [ -h "$rd_logs_folder" ]; then # Check if internal logging folder is already a symlink
|
||||
if [ ! -e "$rd_logs_folder" ]; then # Check if internal logging folder symlink is broken
|
||||
unlink "$rd_logs_folder" # Remove broken symlink so the folder is recreated when sourcing logger.sh
|
||||
|
@ -55,21 +55,21 @@ source /app/libexec/run_game.sh
|
|||
source /app/libexec/steam_sync.sh
|
||||
|
||||
# Static variables
|
||||
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
||||
rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update
|
||||
rd_conf="$XDG_CONFIG_HOME/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
||||
rd_conf_backup="$XDG_CONFIG_HOME/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update
|
||||
config="/app/retrodeck/config" # folder with all the default emulator configs
|
||||
rd_defaults="$config/retrodeck/retrodeck.cfg" # A default RetroDECK config file
|
||||
rd_update_patch="/var/config/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
|
||||
rd_update_patch="$XDG_CONFIG_HOME/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
|
||||
bios_checklist="$config/retrodeck/reference_lists/bios.json" # A config file listing BIOS file information that can be verified
|
||||
input_validation="$config/retrodeck/reference_lists/input_validation.cfg" # A config file listing valid CLI inputs
|
||||
finit_options_list="$config/retrodeck/reference_lists/finit_options_list.cfg" # A config file listing available optional installs during finit
|
||||
splashscreen_dir="/var/config/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens
|
||||
current_splash_file="/var/config/ES-DE/resources/graphics/splash.svg" # The active splash file that will be shown on boot
|
||||
default_splash_file="/var/config/ES-DE/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen
|
||||
splashscreen_dir="$XDG_CONFIG_HOME/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens
|
||||
current_splash_file="$XDG_CONFIG_HOME/ES-DE/resources/graphics/splash.svg" # The active splash file that will be shown on boot
|
||||
default_splash_file="$XDG_CONFIG_HOME/ES-DE/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen
|
||||
# TODO: instead of this maybe we can iterate the features.json
|
||||
multi_user_emulator_config_dirs="$config/retrodeck/reference_lists/multi_user_emulator_config_dirs.cfg" # A list of emulator config folders that can be safely linked/unlinked entirely in multi-user mode
|
||||
rd_es_themes="/app/share/es-de/themes" # The directory where themes packaged with RetroDECK are stored
|
||||
lockfile="/var/config/retrodeck/.lock" # Where the lockfile is located
|
||||
lockfile="$XDG_CONFIG_HOME/retrodeck/.lock" # Where the lockfile is located
|
||||
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
|
||||
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem)
|
||||
rd_repo="https://github.com/RetroDECK/RetroDECK" # The URL of the main RetroDECK GitHub repo
|
||||
|
@ -91,84 +91,84 @@ es_find_rules="/app/share/es-de/resources/systems/linux/es_find_rules.xml"
|
|||
|
||||
# Godot data transfer temp files
|
||||
|
||||
godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp"
|
||||
godot_current_preset_settings="/var/config/retrodeck/godot/godot_current_preset_settings.tmp"
|
||||
godot_compression_compatible_games="/var/config/retrodeck/godot/godot_compression_compatible_games.tmp"
|
||||
godot_empty_roms_folders="/var/config/retrodeck/godot/godot_empty_roms_folders.tmp"
|
||||
godot_bios_files_checked="$XDG_CONFIG_HOME/retrodeck/godot/godot_bios_files_checked.tmp"
|
||||
godot_current_preset_settings="$XDG_CONFIG_HOME/retrodeck/godot/godot_current_preset_settings.tmp"
|
||||
godot_compression_compatible_games="$XDG_CONFIG_HOME/retrodeck/godot/godot_compression_compatible_games.tmp"
|
||||
godot_empty_roms_folders="$XDG_CONFIG_HOME/retrodeck/godot/godot_empty_roms_folders.tmp"
|
||||
|
||||
# Config files for emulators with single config files
|
||||
|
||||
duckstationconf="/var/config/duckstation/settings.ini"
|
||||
melondsconf="/var/config/melonDS/melonDS.ini"
|
||||
ryujinxconf="/var/config/Ryujinx/Config.json"
|
||||
xemuconf="/var/config/xemu/xemu.toml"
|
||||
yuzuconf="/var/config/yuzu/qt-config.ini"
|
||||
citraconf="/var/config/citra-emu/qt-config.ini"
|
||||
duckstationconf="$XDG_CONFIG_HOME/duckstation/settings.ini"
|
||||
melondsconf="$XDG_CONFIG_HOME/melonDS/melonDS.ini"
|
||||
ryujinxconf="$XDG_CONFIG_HOME/Ryujinx/Config.json"
|
||||
xemuconf="$XDG_CONFIG_HOME/xemu/xemu.toml"
|
||||
yuzuconf="$XDG_CONFIG_HOME/yuzu/qt-config.ini"
|
||||
citraconf="$XDG_CONFIG_HOME/citra-emu/qt-config.ini"
|
||||
|
||||
# ES-DE config files
|
||||
|
||||
export ESDE_APPDATA_DIR="/var/config/ES-DE"
|
||||
es_settings="/var/config/ES-DE/settings/es_settings.xml"
|
||||
es_source_logs="/var/config/ES-DE/logs"
|
||||
export ESDE_APPDATA_DIR="$XDG_CONFIG_HOME/ES-DE"
|
||||
es_settings="$XDG_CONFIG_HOME/ES-DE/settings/es_settings.xml"
|
||||
es_source_logs="$XDG_CONFIG_HOME/ES-DE/logs"
|
||||
|
||||
# RetroArch config files
|
||||
|
||||
raconf="/var/config/retroarch/retroarch.cfg"
|
||||
ra_core_conf="/var/config/retroarch/retroarch-core-options.cfg"
|
||||
ra_scummvm_conf="/var/config/retroarch/system/scummvm.ini"
|
||||
ra_cores_path="/var/config/retroarch/cores"
|
||||
raconf="$XDG_CONFIG_HOME/retroarch/retroarch.cfg"
|
||||
ra_core_conf="$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg"
|
||||
ra_scummvm_conf="$XDG_CONFIG_HOME/retroarch/system/scummvm.ini"
|
||||
ra_cores_path="$XDG_CONFIG_HOME/retroarch/cores"
|
||||
|
||||
# CEMU config files
|
||||
|
||||
cemuconf="/var/config/Cemu/settings.xml"
|
||||
cemucontrollerconf="/var/config/Cemu/controllerProfiles/controller0.xml"
|
||||
cemuconf="$XDG_CONFIG_HOME/Cemu/settings.xml"
|
||||
cemucontrollerconf="$XDG_CONFIG_HOME/Cemu/controllerProfiles/controller0.xml"
|
||||
|
||||
# Dolphin config files
|
||||
|
||||
dolphinconf="/var/config/dolphin-emu/Dolphin.ini"
|
||||
dolphingcpadconf="/var/config/dolphin-emu/GCPadNew.ini"
|
||||
dolphingfxconf="/var/config/dolphin-emu/GFX.ini"
|
||||
dolphinhkconf="/var/config/dolphin-emu/Hotkeys.ini"
|
||||
dolphinqtconf="/var/config/dolphin-emu/Qt.ini"
|
||||
dolphinDynamicInputTexturesPath="/var/data/dolphin-emu/Load/DynamicInputTextures"
|
||||
dolphinCheevosConf="/var/config/dolphin-emu/RetroAchievements.ini"
|
||||
dolphinconf="$XDG_CONFIG_HOME/dolphin-emu/Dolphin.ini"
|
||||
dolphingcpadconf="$XDG_CONFIG_HOME/dolphin-emu/GCPadNew.ini"
|
||||
dolphingfxconf="$XDG_CONFIG_HOME/dolphin-emu/GFX.ini"
|
||||
dolphinhkconf="$XDG_CONFIG_HOME/dolphin-emu/Hotkeys.ini"
|
||||
dolphinqtconf="$XDG_CONFIG_HOME/dolphin-emu/Qt.ini"
|
||||
dolphinDynamicInputTexturesPath="$XDG_DATA_HOME/dolphin-emu/Load/DynamicInputTextures"
|
||||
dolphinCheevosConf="$XDG_CONFIG_HOME/dolphin-emu/RetroAchievements.ini"
|
||||
|
||||
# PCSX2 config files
|
||||
|
||||
pcsx2conf="/var/config/PCSX2/inis/PCSX2.ini"
|
||||
pcsx2gsconf="/var/config/PCSX2/inis/GS.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
pcsx2uiconf="/var/config/PCSX2/inis/PCSX2_ui.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
pcsx2vmconf="/var/config/PCSX2/inis/PCSX2_vm.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
pcsx2conf="$XDG_CONFIG_HOME/PCSX2/inis/PCSX2.ini"
|
||||
pcsx2gsconf="$XDG_CONFIG_HOME/PCSX2/inis/GS.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
pcsx2uiconf="$XDG_CONFIG_HOME/PCSX2/inis/PCSX2_ui.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
pcsx2vmconf="$XDG_CONFIG_HOME/PCSX2/inis/PCSX2_vm.ini" # This file should be deprecated since moving to PCSX2-QT
|
||||
|
||||
# PPSSPP-SDL config files
|
||||
|
||||
ppssppconf="/var/config/ppsspp/PSP/SYSTEM/ppsspp.ini"
|
||||
ppssppcontrolsconf="/var/config/ppsspp/PSP/SYSTEM/controls.ini"
|
||||
ppssppcheevosconf="/var/config/ppsspp/PSP/SYSTEM/ppsspp_retroachievements.dat"
|
||||
ppssppconf="$XDG_CONFIG_HOME/ppsspp/PSP/SYSTEM/ppsspp.ini"
|
||||
ppssppcontrolsconf="$XDG_CONFIG_HOME/ppsspp/PSP/SYSTEM/controls.ini"
|
||||
ppssppcheevosconf="$XDG_CONFIG_HOME/ppsspp/PSP/SYSTEM/ppsspp_retroachievements.dat"
|
||||
|
||||
# Primehack config files
|
||||
|
||||
primehackconf="/var/config/primehack/Dolphin.ini"
|
||||
primehackgcpadconf="/var/config/primehack/GCPadNew.ini"
|
||||
primehackgfxconf="/var/config/primehack/GFX.ini"
|
||||
primehackhkconf="/var/config/primehack/Hotkeys.ini"
|
||||
primehackqtconf="/var/config/primehack/Qt.ini"
|
||||
primehackDynamicInputTexturesPath="/var/data/primehack/Load/DynamicInputTextures"
|
||||
primehackconf="$XDG_CONFIG_HOME/primehack/Dolphin.ini"
|
||||
primehackgcpadconf="$XDG_CONFIG_HOME/primehack/GCPadNew.ini"
|
||||
primehackgfxconf="$XDG_CONFIG_HOME/primehack/GFX.ini"
|
||||
primehackhkconf="$XDG_CONFIG_HOME/primehack/Hotkeys.ini"
|
||||
primehackqtconf="$XDG_CONFIG_HOME/primehack/Qt.ini"
|
||||
primehackDynamicInputTexturesPath="$XDG_DATA_HOME/primehack/Load/DynamicInputTextures"
|
||||
|
||||
# RPCS3 config files
|
||||
|
||||
rpcs3conf="/var/config/rpcs3/config.yml"
|
||||
rpcs3vfsconf="/var/config/rpcs3/vfs.yml"
|
||||
rpcs3conf="$XDG_CONFIG_HOME/rpcs3/config.yml"
|
||||
rpcs3vfsconf="$XDG_CONFIG_HOME/rpcs3/vfs.yml"
|
||||
|
||||
# Vita3k config files
|
||||
|
||||
vita3kconf="/var/config/Vita3K/config.yml"
|
||||
vita3kconf="$XDG_CONFIG_HOME/Vita3K/config.yml"
|
||||
|
||||
# MAME-SA config files
|
||||
|
||||
mameconf="/var/config/mame/ini/mame.ini"
|
||||
mameuiconf="/var/config/mame/ini/ui.ini"
|
||||
mamedefconf="/var/config/mame/cfg/default.cfg"
|
||||
mameconf="$XDG_CONFIG_HOME/mame/ini/mame.ini"
|
||||
mameuiconf="$XDG_CONFIG_HOME/mame/ini/ui.ini"
|
||||
mamedefconf="$XDG_CONFIG_HOME/mame/cfg/default.cfg"
|
||||
|
||||
# Initialize logging location if it doesn't exist, before anything else happens
|
||||
if [ ! -d "$rd_logs_folder" ]; then
|
||||
|
@ -176,13 +176,13 @@ if [ ! -d "$rd_logs_folder" ]; then
|
|||
fi
|
||||
|
||||
# Initialize location of Godot temp data files, if it doesn't exist
|
||||
if [[ ! -d "/var/config/retrodeck/godot" ]]; then
|
||||
create_dir "/var/config/retrodeck/godot"
|
||||
if [[ ! -d "$XDG_CONFIG_HOME/retrodeck/godot" ]]; then
|
||||
create_dir "$XDG_CONFIG_HOME/retrodeck/godot"
|
||||
fi
|
||||
|
||||
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
|
||||
# We moved the lockfile in $XDG_CONFIG_HOME/retrodeck in order to solve issue #53 - Remove in a few versions
|
||||
if [[ -f "$HOME/retrodeck/.lock" ]]; then
|
||||
mv "$HOME/retrodeck/.lock" $lockfile
|
||||
mv "$HOME/retrodeck/.lock" "$lockfile"
|
||||
fi
|
||||
|
||||
# If there is no config file I initalize the file with the the default values
|
||||
|
@ -193,9 +193,9 @@ if [[ ! -f "$rd_conf" ]]; then
|
|||
# Initializing the variables
|
||||
if [[ -z "$version" ]]; then
|
||||
if [[ -f "$lockfile" ]]; then
|
||||
if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf
|
||||
if [[ $(cat "$lockfile") == *"0.4."* ]] || [[ $(cat "$lockfile") == *"0.3."* ]] || [[ $(cat "$lockfile") == *"0.2."* ]] || [[ $(cat "$lockfile") == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf
|
||||
log d "Running version workaround"
|
||||
version=$(cat $lockfile)
|
||||
version=$(cat "$lockfile")
|
||||
fi
|
||||
else
|
||||
version="$hard_version"
|
||||
|
@ -203,28 +203,28 @@ if [[ ! -f "$rd_conf" ]]; then
|
|||
fi
|
||||
|
||||
# Check if SD card path has changed from SteamOS update
|
||||
if [[ ! -d "$default_sd" && "$(ls -A /run/media/deck/)" ]]; then
|
||||
if [[ $(find /run/media/deck/* -maxdepth 0 -type d -print | wc -l) -eq 1 ]]; then # If there is only one SD card found in the new SteamOS 3.5 location, assign it as the default
|
||||
default_sd="$(find /run/media/deck/* -maxdepth 0 -type d -print)"
|
||||
if [[ ! -d "$default_sd" && "$(ls -A "/run/media/deck/")" ]]; then
|
||||
if [[ $(find "/run/media/deck/"* -maxdepth 0 -type d -print | wc -l) -eq 1 ]]; then # If there is only one SD card found in the new SteamOS 3.5 location, assign it as the default
|
||||
default_sd="$(find "/run/media/deck/"* -maxdepth 0 -type d -print)"
|
||||
else # If the default legacy path cannot be found, and there are multiple entries in the new Steam OS 3.5 SD card path, let the user pick which one to use
|
||||
configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the default location, and multiple drives were detected.\nPlease browse to the location of the desired SD card.\n\nIf you are not using an SD card, please click \"Cancel\"."
|
||||
default_sd="$(directory_browse "SD Card Location")"
|
||||
fi
|
||||
fi
|
||||
|
||||
cp $rd_defaults $rd_conf # Load default settings file
|
||||
set_setting_value $rd_conf "version" "$version" retrodeck # Set current version for new installs
|
||||
set_setting_value $rd_conf "sdcard" "$default_sd" retrodeck "paths" # Set SD card location if default path has changed
|
||||
cp "$rd_defaults" "$rd_conf" # Load default settings file
|
||||
set_setting_value "$rd_conf" "version" "$version" retrodeck # Set current version for new installs
|
||||
set_setting_value "$rd_conf" "sdcard" "$default_sd" retrodeck "paths" # Set SD card location if default path has changed
|
||||
|
||||
if grep -qF "cooker" <<< "$hard_version" || grep -qF "PR-" <<< "$hard_version"; then # If newly-installed version is a "cooker" or PR build
|
||||
set_setting_value $rd_conf "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
set_setting_value $rd_conf "update_check" "true" retrodeck "options"
|
||||
set_setting_value $rd_conf "developer_options" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "update_check" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "developer_options" "true" retrodeck "options"
|
||||
fi
|
||||
|
||||
log i "Setting config file permissions"
|
||||
chmod +rw $rd_conf
|
||||
log i "RetroDECK config file initialized. Contents:\n\n$(cat $rd_conf)\n"
|
||||
chmod +rw "$rd_conf"
|
||||
log i "RetroDECK config file initialized. Contents:\n\n$(cat "$rd_conf")\n"
|
||||
conf_read # Load new variables into memory
|
||||
#tmplog_merger # This function is tempry(?) removed
|
||||
|
||||
|
@ -232,10 +232,10 @@ if [[ ! -f "$rd_conf" ]]; then
|
|||
else
|
||||
log i "Loading RetroDECK config file in $rd_conf"
|
||||
|
||||
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
|
||||
set_setting_value $rd_conf "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
set_setting_value $rd_conf "update_check" "true" retrodeck "options"
|
||||
set_setting_value $rd_conf "developer_options" "true" retrodeck "options"
|
||||
if grep -qF "cooker" <<< "$hard_version"; then # If newly-installed version is a "cooker" build
|
||||
set_setting_value "$rd_conf" "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "update_check" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "developer_options" "true" retrodeck "options"
|
||||
fi
|
||||
|
||||
conf_read
|
||||
|
@ -244,7 +244,7 @@ else
|
|||
if [[ ! -d "$rdhome" ]]; then
|
||||
configurator_generic_dialog "RetroDECK Setup" "The RetroDECK data folder was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the \"retrodeck\" folder."
|
||||
new_home_path=$(directory_browse "RetroDECK folder location")
|
||||
set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths"
|
||||
set_setting_value "$rd_conf" "rdhome" "$new_home_path" retrodeck "paths"
|
||||
conf_read
|
||||
#tmplog_merger # This function is tempry(?) removed
|
||||
prepare_component "postmove" "retrodeck"
|
||||
|
@ -262,6 +262,7 @@ fi
|
|||
steamsync_folder="$rdhome/.sync" # Folder containing favorites manifest for SRM
|
||||
retrodeck_favorites_file="$steamsync_folder/retrodeck_favorites.json" # The current SRM manifest of all games that have been favorited in ES-DE
|
||||
srm_log="$logs_folder/srm_log.log" # Log file for capturing the output of the most recent SRM run, for debugging purposes
|
||||
retrodeck_added_favorites="$steamsync_folder/retrodeck_added_favorites.json" # Temporary manifest of any games that were newly added to the ES-DE favorites and should be added to Steam
|
||||
retrodeck_removed_favorites="$steamsync_folder/retrodeck_removed_favorites.json" # Temporary manifest of any games that were unfavorited in ES-DE and should be removed from Steam
|
||||
|
||||
export GLOBAL_SOURCED=true
|
||||
|
|
|
@ -8,11 +8,11 @@ multi_user_set_default_dialog() {
|
|||
--text="Would you like to set $chosen_user as the default user?\n\nIf the current user cannot be determined from the system, the default will be used.\nThis normally only happens in Desktop Mode.\n\nIf you would like to be asked which user is playing every time, click \"No and don't ask again\"")
|
||||
rc=$? # Capture return code, as "Yes" button has no text value
|
||||
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
|
||||
if [[ $choice == "No and don't ask again" ]]; then
|
||||
set_setting_value $rd_conf "ask_default_user" "false" retrodeck "options"
|
||||
if [[ "$choice" == "No and don't ask again" ]]; then
|
||||
set_setting_value "$rd_conf" "ask_default_user" "false" retrodeck "options"
|
||||
fi
|
||||
else # User clicked "Yes"
|
||||
set_setting_value $rd_conf "default_user" "$chosen_user" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "default_user" "$chosen_user" retrodeck "options"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ chosen_user=$(rd_zenity \
|
|||
--column "Steam Username" --print-column=1 \
|
||||
"${full_userlist[@]}")
|
||||
|
||||
if [[ ! -z $chosen_user && -z $default_user && $ask_default_user == "true" ]]; then
|
||||
if [[ ! -z "$chosen_user" && -z "$default_user" && "$ask_default_user" == "true" ]]; then
|
||||
multi_user_set_default_dialog "$chosen_user"
|
||||
fi
|
||||
echo "$chosen_user"
|
||||
|
@ -48,7 +48,7 @@ multi_user_enable_multi_user_mode() {
|
|||
rm -rf "$multi_user_data_folder/$SteamAppUser" # Remove stale data after backup
|
||||
fi
|
||||
fi
|
||||
set_setting_value $rd_conf "multi_user_mode" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "multi_user_mode" "true" retrodeck "options"
|
||||
multi_user_determine_current_user
|
||||
if [[ -d "$multi_user_data_folder/$SteamAppUser" ]]; then
|
||||
configurator_process_complete_dialog "enabling multi-user support"
|
||||
|
@ -74,7 +74,7 @@ multi_user_disable_multi_user_mode() {
|
|||
|
||||
if [[ ! -z "$single_user" ]]; then # Single user was selected
|
||||
multi_user_return_to_single_user "$single_user"
|
||||
set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "multi_user_mode" "false" retrodeck "options"
|
||||
configurator_process_complete_dialog "disabling multi-user support"
|
||||
else
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "No single user was selected, please try the process again."
|
||||
|
@ -83,13 +83,13 @@ multi_user_disable_multi_user_mode() {
|
|||
else
|
||||
single_user=$(ls -1 "$multi_user_data_folder")
|
||||
multi_user_return_to_single_user "$single_user"
|
||||
set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "multi_user_mode" "false" retrodeck "options"
|
||||
configurator_process_complete_dialog "disabling multi-user support"
|
||||
fi
|
||||
}
|
||||
|
||||
multi_user_determine_current_user() {
|
||||
if [[ $(get_setting_value $rd_conf "multi_user_mode" retrodeck "options") == "true" ]]; then # If multi-user environment is enabled in rd_conf
|
||||
if [[ $(get_setting_value "$rd_conf" "multi_user_mode" retrodeck "options") == "true" ]]; then # If multi-user environment is enabled in rd_conf
|
||||
if [[ -d "$multi_user_data_folder" ]]; then
|
||||
if [[ ! -z $SteamAppUser ]]; then # If running in Game Mode and this variable exists
|
||||
if [[ -z $(ls -1 "$multi_user_data_folder" | grep "$SteamAppUser") ]]; then
|
||||
|
@ -99,24 +99,24 @@ multi_user_determine_current_user() {
|
|||
fi
|
||||
else # Unable to find Steam user ID
|
||||
if [[ $(ls -1 "$multi_user_data_folder" | wc -l) -gt 1 ]]; then
|
||||
if [[ -z $default_user ]]; then # And a default user is not set
|
||||
if [[ -z "$default_user" ]]; then # And a default user is not set
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user could not be determined from the system, and there are multiple users registered.\n\nPlease select which user is currently playing in the next dialog."
|
||||
SteamAppUser=$(multi_user_choose_current_user_dialog)
|
||||
if [[ ! -z $SteamAppUser ]]; then # User was chosen from dialog
|
||||
if [[ ! -z "$SteamAppUser" ]]; then # User was chosen from dialog
|
||||
multi_user_link_current_user_files
|
||||
else
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "No user was chosen, RetroDECK will launch with the files from the user who played most recently."
|
||||
fi
|
||||
else # The default user is set
|
||||
if [[ ! -z $(ls -1 $multi_user_data_folder | grep "$default_user") ]]; then # Confirm user data folder exists
|
||||
SteamAppUser=$default_user
|
||||
if [[ ! -z $(ls -1 "$multi_user_data_folder" | grep "$default_user") ]]; then # Confirm user data folder exists
|
||||
SteamAppUser="$default_user"
|
||||
multi_user_link_current_user_files
|
||||
else # Default user has no data folder, something may have gone horribly wrong. Setting up as a new user.
|
||||
multi_user_setup_new_user
|
||||
fi
|
||||
fi
|
||||
else # If there is only 1 user in the userlist, default to that user
|
||||
SteamAppUser=$(ls -1 $multi_user_data_folder)
|
||||
SteamAppUser=$(ls -1 "$multi_user_data_folder")
|
||||
multi_user_link_current_user_files
|
||||
fi
|
||||
fi
|
||||
|
@ -134,11 +134,11 @@ multi_user_determine_current_user() {
|
|||
multi_user_setup_new_user
|
||||
else # But dialog box was blank
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "No username was entered, so multi-user data folder cannot be created.\n\nDisabling multi-user mode, please try the process again."
|
||||
set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "multi_user_mode" "false" retrodeck "options"
|
||||
fi
|
||||
else # User clicked "Cancel"
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "Cancelling multi-user mode activation."
|
||||
set_setting_value $rd_conf "multi_user_mode" "false" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "multi_user_mode" "false" retrodeck "options"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -155,16 +155,16 @@ multi_user_return_to_single_user() {
|
|||
unlink "$rd_conf"
|
||||
mv -f "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
||||
# RetroArch one-offs, because it has so many folders that should be shared between users
|
||||
unlink "/var/config/retroarch/retroarch.cfg"
|
||||
unlink "/var/config/retroarch/retroarch-core-options.cfg"
|
||||
mv -f "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "/var/config/retroarch/retroarch.cfg"
|
||||
mv -f "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "/var/config/retroarch/retroarch-core-options.cfg"
|
||||
# XEMU one-offs, because it stores its config in /var/data, not /var/config like everything else
|
||||
unlink "/var/config/xemu"
|
||||
unlink "/var/data/xemu/xemu"
|
||||
create_dir "/var/config/xemu"
|
||||
mv -f "$multi_user_data_folder/$single_user/config/xemu"/{.[!.],}* "/var/config/xemu"
|
||||
dir_prep "/var/config/xemu" "/var/data/xemu/xemu"
|
||||
unlink "$XDG_CONFIG_HOME/retroarch/retroarch.cfg"
|
||||
unlink "$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg"
|
||||
mv -f "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch.cfg"
|
||||
mv -f "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg"
|
||||
# XEMU one-offs, because it stores its config in $XDG_DATA_HOME, not $XDG_CONFIG_HOME like everything else
|
||||
unlink "$XDG_CONFIG_HOME/xemu"
|
||||
unlink "$XDG_DATA_HOME/xemu/xemu"
|
||||
create_dir "$XDG_CONFIG_HOME/xemu"
|
||||
mv -f "$multi_user_data_folder/$single_user/config/xemu"/{.[!.],}* "$XDG_CONFIG_HOME/xemu"
|
||||
dir_prep "$XDG_CONFIG_HOME/xemu" "$XDG_DATA_HOME/xemu/xemu"
|
||||
create_dir "$saves_folder"
|
||||
create_dir "$states_folder"
|
||||
mv -f "$multi_user_data_folder/$single_user/saves"/{.[!.],}* "$saves_folder"
|
||||
|
@ -172,9 +172,9 @@ multi_user_return_to_single_user() {
|
|||
for emu_conf in $(find "$multi_user_data_folder/$single_user/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n')
|
||||
do
|
||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||
unlink "/var/config/$emu_conf"
|
||||
create_dir "/var/config/$emu_conf"
|
||||
mv -f "$multi_user_data_folder/$single_user/config/$emu_conf"/{.[!.],}* "/var/config/$emu_conf"
|
||||
unlink "$XDG_CONFIG_HOME/$emu_conf"
|
||||
create_dir "$XDG_CONFIG_HOME/$emu_conf"
|
||||
mv -f "$multi_user_data_folder/$single_user/config/$emu_conf"/{.[!.],}* "$XDG_CONFIG_HOME/$emu_conf"
|
||||
fi
|
||||
done
|
||||
rm -r "$multi_user_data_folder/$single_user" # Should be empty, omitting -f for safety
|
||||
|
@ -192,9 +192,9 @@ multi_user_setup_new_user() {
|
|||
rm -f "$rd_conf"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
||||
create_dir "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||
if [[ ! -L "/var/config/retroarch/retroarch.cfg" ]]; then
|
||||
mv "/var/config/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg"
|
||||
mv "/var/config/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg"
|
||||
if [[ ! -L "$XDG_CONFIG_HOME/retroarch/retroarch.cfg" ]]; then
|
||||
mv "$XDG_CONFIG_HOME/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg"
|
||||
mv "$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg"
|
||||
else
|
||||
cp "$config/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg"
|
||||
cp "$config/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg"
|
||||
|
@ -202,19 +202,19 @@ multi_user_setup_new_user() {
|
|||
set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch"
|
||||
set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch"
|
||||
fi
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "/var/config/retroarch/retroarch.cfg"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "/var/config/retroarch/retroarch-core-options.cfg"
|
||||
for emu_conf in $(find "/var/config" -mindepth 1 -maxdepth 1 -type l -printf '%f\n') # For all the config folders already linked to a different user
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch.cfg"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg"
|
||||
for emu_conf in $(find "$XDG_CONFIG_HOME" -mindepth 1 -maxdepth 1 -type l -printf '%f\n') # For all the config folders already linked to a different user
|
||||
do
|
||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||
unlink "/var/config/$emu_conf"
|
||||
unlink "$XDG_CONFIG_HOME/$emu_conf"
|
||||
prepare_component "reset" "$emu_conf"
|
||||
fi
|
||||
done
|
||||
for emu_conf in $(find "/var/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') # For all the currently non-linked config folders, like from a newly-added emulator
|
||||
for emu_conf in $(find "$XDG_CONFIG_HOME" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') # For all the currently non-linked config folders, like from a newly-added emulator
|
||||
do
|
||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "/var/config/$emu_conf"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "$XDG_CONFIG_HOME/$emu_conf"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
@ -224,22 +224,22 @@ multi_user_link_current_user_files() {
|
|||
ln -sfT "$multi_user_data_folder/$SteamAppUser/saves" "$saves_folder"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/states" "$states_folder"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "/var/config/retroarch/retroarch.cfg"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "/var/config/retroarch/retroarch-core-options.cfg"
|
||||
for emu_conf in $(find "/var/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') # Find any new emulator config folders from last time this user played
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch.cfg"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retroarch/retroarch-core-options.cfg" "$XDG_CONFIG_HOME/retroarch/retroarch-core-options.cfg"
|
||||
for emu_conf in $(find "$XDG_CONFIG_HOME" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') # Find any new emulator config folders from last time this user played
|
||||
do
|
||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "/var/config/$emu_conf"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "$XDG_CONFIG_HOME/$emu_conf"
|
||||
fi
|
||||
done
|
||||
for emu_conf in $(find "/var/config" -mindepth 1 -maxdepth 1 -type l -printf '%f\n')
|
||||
for emu_conf in $(find "$XDG_CONFIG_HOME" -mindepth 1 -maxdepth 1 -type l -printf '%f\n')
|
||||
do
|
||||
if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then
|
||||
if [[ -d "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" ]]; then # If the current user already has a config folder for this emulator
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "retrodeck/config/$emu_conf"
|
||||
else # If the current user doesn't have a config folder for this emulator, init it and then link it
|
||||
prepare_component "reset" "$emu_conf"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "/var/config/$emu_conf"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "$XDG_CONFIG_HOME/$emu_conf"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -80,8 +80,8 @@ move() {
|
|||
# Function to move a directory from one parent to another
|
||||
# USAGE: move $source_dir $dest_dir
|
||||
|
||||
source_dir="$(echo $1 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||
dest_dir="$(echo $2 | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||
source_dir="$(echo "$1" | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||
dest_dir="$(echo "$2" | sed 's![^/]$!&/!')" # Add trailing slash if it is missing
|
||||
|
||||
log d "Moving \"$source_dir\" to \"$dest_dir\""
|
||||
|
||||
|
@ -147,17 +147,17 @@ update_rd_conf() {
|
|||
# STAGE 1: For current files that haven't been broken into sections yet, where every setting name is unique
|
||||
|
||||
conf_read # Read current settings into memory
|
||||
mv -f $rd_conf $rd_conf_backup # Backup config file before update
|
||||
cp $rd_defaults $rd_conf # Copy defaults file into place
|
||||
mv -f "$rd_conf" "$rd_conf_backup" # Backup config file before update
|
||||
cp "$rd_defaults" "$rd_conf" # Copy defaults file into place
|
||||
conf_write # Write old values into new retrodeck.cfg file
|
||||
|
||||
# STAGE 2: To handle presets sections that use duplicate setting names
|
||||
|
||||
generate_single_patch $rd_defaults $rd_conf_backup $rd_update_patch retrodeck # Create a patch file for differences between defaults and current user settings
|
||||
sed -i '/change^^version/d' $rd_update_patch # Remove version line from temporary patch file
|
||||
deploy_single_patch $rd_defaults $rd_update_patch $rd_conf # Re-apply user settings to defaults file
|
||||
set_setting_value $rd_conf "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
||||
rm -f $rd_update_patch # Cleanup temporary patch file
|
||||
generate_single_patch "$rd_defaults" "$rd_conf_backup" "$rd_update_patch" retrodeck # Create a patch file for differences between defaults and current user settings
|
||||
sed -i '/change^^version/d' "$rd_update_patch" # Remove version line from temporary patch file
|
||||
deploy_single_patch "$rd_defaults" "$rd_update_patch" "$rd_conf" # Re-apply user settings to defaults file
|
||||
set_setting_value "$rd_conf" "version" "$hard_version" retrodeck # Set version of currently running RetroDECK to updated retrodeck.cfg
|
||||
rm -f "$rd_update_patch" # Cleanup temporary patch file
|
||||
conf_read # Read all settings into memory
|
||||
|
||||
# STAGE 3: Create new folders that were added to the shipped retrodeck.cfg, if any
|
||||
|
@ -196,13 +196,13 @@ update_rd_conf() {
|
|||
"\(.key):\(.value)",
|
||||
"\(.value):\(.key)"
|
||||
] | join("\n")
|
||||
' $features)
|
||||
' "$features")
|
||||
|
||||
while IFS= read -r current_setting_line # Read the existing retrodeck.cfg
|
||||
do
|
||||
if [[ (! -z "$current_setting_line") && (! "$current_setting_line" == "#"*) && (! "$current_setting_line" == "[]") ]]; then # If the line has a valid entry in it
|
||||
if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header
|
||||
local current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name
|
||||
local current_section=$(sed 's^[][]^^g' <<< "$current_setting_line") # Remove brackets from section name
|
||||
else
|
||||
if [[ ! ("$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" || "$current_section" == "cheevos" || "$current_section" == "cheevos_hardcore") ]]; then
|
||||
local system_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line
|
||||
|
@ -220,7 +220,7 @@ update_rd_conf() {
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
done < $rd_conf
|
||||
done < "$rd_conf"
|
||||
}
|
||||
|
||||
conf_read() {
|
||||
|
@ -252,7 +252,7 @@ conf_write() {
|
|||
do
|
||||
if [[ (! -z "$current_setting_line") && (! "$current_setting_line" == "#"*) && (! "$current_setting_line" == "[]") ]]; then # If the line has a valid entry in it
|
||||
if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header
|
||||
local current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name
|
||||
local current_section=$(sed 's^[][]^^g' <<< "$current_setting_line") # Remove brackets from section name
|
||||
else
|
||||
if [[ "$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" ]]; then
|
||||
local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line
|
||||
|
@ -264,7 +264,7 @@ conf_write() {
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
done < $rd_conf
|
||||
done < "$rd_conf"
|
||||
log d "retrodeck.cfg written"
|
||||
}
|
||||
|
||||
|
@ -335,7 +335,7 @@ rd_zenity() {
|
|||
|
||||
unset CONFIGURATOR_GUI
|
||||
|
||||
return $status
|
||||
return "$status"
|
||||
}
|
||||
|
||||
update_rpcs3_firmware() {
|
||||
|
@ -359,7 +359,7 @@ backup_retrodeck_userdata() {
|
|||
# The function can also do a "core" backup of all the very important userdata files (like saves, states and gamelists) or a "custom" backup of only specified paths
|
||||
# The function can take both folder names as defined in retrodeck.cfg or full paths as arguments for folders to backup
|
||||
# It will also validate that all the provided paths exist and that there is enough free space to perform the backup before actually proceeding.
|
||||
# It will also rotate backups so that there are only 3 maximum of each type (standard or custom)
|
||||
# It will also rotate backups so that there are only 3 maximum of each type (complete, core or custom)
|
||||
# USAGE: backup_retrodeck_userdata complete
|
||||
# backup_retrodeck_userdata core
|
||||
# backup_retrodeck_userdata custom saves_folder states_folder /some/other/path
|
||||
|
@ -377,8 +377,8 @@ backup_retrodeck_userdata() {
|
|||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
configurator_generic_dialog "RetroDECK Userdata Backup" "No valid backup option chosen. Valid options are <standard> and <custom>."
|
||||
fi
|
||||
log e "No valid backup option chosen. Valid options are <standard> and <custom>."
|
||||
exit 1
|
||||
log e "No valid backup option chosen. Valid options are <complete>, <core> and <custom>."
|
||||
return 1
|
||||
fi
|
||||
|
||||
zip_file="$backups_folder/retrodeck_${backup_date}_${backup_type}.zip"
|
||||
|
@ -394,7 +394,7 @@ backup_retrodeck_userdata() {
|
|||
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
||||
config_paths["$current_setting_name"]="$current_setting_value"
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
done < <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
|
||||
# Determine which paths to backup
|
||||
if [[ "$backup_type" == "complete" ]]; then
|
||||
|
@ -547,15 +547,15 @@ backup_retrodeck_userdata() {
|
|||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then # Show progress dialog if running Zenity Configurator
|
||||
total_size_file=$(mktemp) # Create temp file for Zenity subshell data extraction
|
||||
(
|
||||
for path in "${paths_to_backup[@]}"; do
|
||||
if [[ -e "$path" ]]; then
|
||||
log d "Checking size of path $path"
|
||||
path_size=$(du -sk "$path" 2>/dev/null | cut -f1) # Get size in KB
|
||||
path_size=$((path_size * 1024)) # Convert to bytes for calculation
|
||||
total_size=$((total_size + path_size))
|
||||
echo "$total_size" > $total_size_file
|
||||
fi
|
||||
done
|
||||
for path in "${paths_to_backup[@]}"; do
|
||||
if [[ -e "$path" ]]; then
|
||||
log d "Checking size of path $path"
|
||||
path_size=$(du -sk "$path" 2>/dev/null | cut -f1) # Get size in KB
|
||||
path_size=$((path_size * 1024)) # Convert to bytes for calculation
|
||||
total_size=$((total_size + path_size))
|
||||
echo "$total_size" > "$total_size_file"
|
||||
fi
|
||||
done
|
||||
) |
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
|
@ -578,15 +578,15 @@ backup_retrodeck_userdata() {
|
|||
available_space=$(df -B1 "$backups_folder" | awk 'NR==2 {print $4}')
|
||||
|
||||
# Log sizes for reference
|
||||
log i "Total size of backup data: $(numfmt --to=iec-i --suffix=B $total_size)"
|
||||
log i "Available space at destination: $(numfmt --to=iec-i --suffix=B $available_space)"
|
||||
log i "Total size of backup data: $(numfmt --to=iec-i --suffix=B "$total_size")"
|
||||
log i "Available space at destination: $(numfmt --to=iec-i --suffix=B "$available_space")"
|
||||
|
||||
# Check if we have enough space (using uncompressed size as a conservative estimate)
|
||||
if [[ "$available_space" -lt "$total_size" ]]; then
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
configurator_generic_dialog "RetroDECK Userdata Backup" "There is not enough free space to perform this backup.\n\nYou need at least $(numfmt --to=iec-i --suffix=B $total_size),\nplease free up some space and try again."
|
||||
configurator_generic_dialog "RetroDECK Userdata Backup" "There is not enough free space to perform this backup.\n\nYou need at least $(numfmt --to=iec-i --suffix=B "$total_size"),\nplease free up some space and try again."
|
||||
fi
|
||||
log e "Error: Not enough space to perform backup. Need at least $(numfmt --to=iec-i --suffix=B $total_size)"
|
||||
log e "Error: Not enough space to perform backup. Need at least $(numfmt --to=iec-i --suffix=B "$total_size")"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
@ -853,9 +853,9 @@ install_retrodeck_starterpack() {
|
|||
|
||||
## DOOM section ##
|
||||
cp /app/retrodeck/extras/doom1.wad "$roms_folder/doom/doom1.wad" # No -f in case the user already has it
|
||||
create_dir "/var/config/ES-DE/gamelists/doom"
|
||||
if [[ ! -f "/var/config/ES-DE/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist
|
||||
cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/ES-DE/gamelists/doom/gamelist.xml"
|
||||
create_dir "$XDG_CONFIG_HOME/ES-DE/gamelists/doom"
|
||||
if [[ ! -f "$XDG_CONFIG_HOME/ES-DE/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist
|
||||
cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "$XDG_CONFIG_HOME/ES-DE/gamelists/doom/gamelist.xml"
|
||||
fi
|
||||
create_dir "$media_folder/doom"
|
||||
unzip -oq "/app/retrodeck/rd_prepacks/doom/doom.zip" -d "$media_folder/doom/"
|
||||
|
@ -893,8 +893,8 @@ update_splashscreens() {
|
|||
|
||||
log i "Updating splash screen"
|
||||
|
||||
rm -rf /var/config/ES-DE/resources/graphics
|
||||
rsync -rlD --mkpath "/app/retrodeck/graphics/" "/var/config/ES-DE/resources/graphics/"
|
||||
rm -rf "$XDG_CONFIG_HOME/ES-DE/resources/graphics"
|
||||
rsync -rlD --mkpath "/app/retrodeck/graphics/" "$XDG_CONFIG_HOME/ES-DE/resources/graphics/"
|
||||
|
||||
}
|
||||
|
||||
|
@ -930,7 +930,7 @@ splash_screen() {
|
|||
($current_day | tonumber) <= (.value.end_date | tonumber) and
|
||||
($current_time | tonumber) >= (.value.start_time | tonumber) and
|
||||
($current_time | tonumber) <= (.value.end_time | tonumber)
|
||||
) | .value.filename' $features)
|
||||
) | .value.filename' "$features")
|
||||
|
||||
# Determine the splash file to use
|
||||
if [[ -n "$splash_screen" ]]; then
|
||||
|
@ -972,7 +972,7 @@ install_release() {
|
|||
mkdir -p "$rdhome/RetroDECK_Updates"
|
||||
|
||||
# Download the flatpak file
|
||||
wget -P "$rdhome/RetroDECK_Updates" $flatpak_url -O "$rdhome/RetroDECK_Updates/RetroDECK$iscooker.flatpak"
|
||||
wget -P "$rdhome/RetroDECK_Updates" "$flatpak_url" -O "$rdhome/RetroDECK_Updates/RetroDECK$iscooker.flatpak"
|
||||
|
||||
# Check if the download was successful
|
||||
if [[ $? -ne 0 ]]; then
|
||||
|
@ -1012,13 +1012,13 @@ ponzu() {
|
|||
local executable
|
||||
|
||||
# if the binaries are found, ponzu should be set as true into the retrodeck config
|
||||
if [ -f "/var/data/ponzu/Citra/bin/citra-qt" ]; then
|
||||
if [ -f "$XDG_DATA_HOME/ponzu/Citra/bin/citra-qt" ]; then
|
||||
log d "Citra binaries has already been installed, checking for updates and forcing the setting as true."
|
||||
set_setting_value $rd_conf "akai_ponzu" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "akai_ponzu" "true" retrodeck "options"
|
||||
fi
|
||||
if [ -f "/var/data/ponzu/Yuzu/bin/yuzu" ]; then
|
||||
if [ -f "$XDG_DATA_HOME/ponzu/Yuzu/bin/yuzu" ]; then
|
||||
log d "Yuzu binaries has already been installed, checking for updates and forcing the setting as true."
|
||||
set_setting_value $rd_conf "kiroi_ponzu" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "kiroi_ponzu" "true" retrodeck "options"
|
||||
fi
|
||||
|
||||
# Loop through all ponzu files
|
||||
|
@ -1027,11 +1027,11 @@ ponzu() {
|
|||
if [ -f "$ponzu_file" ]; then
|
||||
if [[ "$ponzu_file" == *itra* ]]; then
|
||||
log i "Found akai ponzu! Elaborating it"
|
||||
data_dir="/var/data/ponzu/Citra"
|
||||
data_dir="$XDG_DATA_HOME/ponzu/Citra"
|
||||
local message="Akai ponzu is served, enjoy"
|
||||
elif [[ "$ponzu_file" == *uzu* ]]; then
|
||||
log i "Found kiroi ponzu! Elaborating it"
|
||||
data_dir="/var/data/ponzu/Yuzu"
|
||||
data_dir="$XDG_DATA_HOME/ponzu/Yuzu"
|
||||
local message="Kiroi ponzu is served, enjoy"
|
||||
else
|
||||
log e "AppImage not recognized, not a ponzu ingredient!"
|
||||
|
@ -1059,14 +1059,14 @@ ponzu() {
|
|||
chmod +x "$executable"
|
||||
chmod +x "$executable-qt"
|
||||
prepare_component "reset" "citra"
|
||||
set_setting_value $rd_conf "akai_ponzu" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "akai_ponzu" "true" retrodeck "options"
|
||||
elif [[ "$ponzu_file" == *uzu* ]]; then
|
||||
mv "$tmp_folder/usr/"** .
|
||||
executable="$data_dir/bin/yuzu"
|
||||
log d "Making $executable executable"
|
||||
chmod +x "$executable"
|
||||
prepare_component "reset" "yuzu"
|
||||
set_setting_value $rd_conf "kiroi_ponzu" "true" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "kiroi_ponzu" "true" retrodeck "options"
|
||||
fi
|
||||
|
||||
cd -
|
||||
|
@ -1084,15 +1084,15 @@ ponzu_remove() {
|
|||
if [[ "$1" == "citra" ]]; then
|
||||
if [[ $(configurator_generic_question_dialog "Ponzu - Remove Citra" "Do you really want to remove Citra binaries?\n\nYour games and saves will not be deleted.") == "true" ]]; then
|
||||
log i "Ponzu: removing Citra"
|
||||
rm -rf "/var/data/ponzu/Citra"
|
||||
set_setting_value $rd_conf "akai_ponzu" "false" retrodeck "options"
|
||||
rm -rf "$XDG_DATA_HOME/ponzu/Citra"
|
||||
set_setting_value "$rd_conf" "akai_ponzu" "false" retrodeck "options"
|
||||
configurator_generic_dialog "Ponzu - Remove Citra" "Done, Citra is now removed from RetroDECK"
|
||||
fi
|
||||
elif [[ "$1" == "yuzu" ]]; then
|
||||
if [[ $(configurator_generic_question_dialog "Ponzu - Remove Yuzu" "Do you really want to remove Yuzu binaries?\n\nYour games and saves will not be deleted.") == "true" ]]; then
|
||||
log i "Ponzu: removing Yuzu"
|
||||
rm -rf "/var/data/ponzu/Yuzu"
|
||||
set_setting_value $rd_conf "kiroi_ponzu" "false" retrodeck "options"
|
||||
rm -rf "$XDG_DATA_HOME/ponzu/Yuzu"
|
||||
set_setting_value "$rd_conf" "kiroi_ponzu" "false" retrodeck "options"
|
||||
configurator_generic_dialog "Ponzu - Remove Yuzu" "Done, Yuzu is now removed from RetroDECK"
|
||||
fi
|
||||
else
|
||||
|
@ -1115,7 +1115,7 @@ release_selector() {
|
|||
|
||||
# Fetch the main release from the RetroDECK repository
|
||||
log d "Fetching latest main release from GitHub API for repository RetroDECK"
|
||||
local main_release=$(curl -s https://api.github.com/repos/$git_organization_name/RetroDECK/releases/latest)
|
||||
local main_release=$(curl -s "https://api.github.com/repos/$git_organization_name/RetroDECK/releases/latest")
|
||||
|
||||
if [[ -z "$main_release" ]]; then
|
||||
log e "Failed to fetch the main release"
|
||||
|
@ -1134,7 +1134,7 @@ release_selector() {
|
|||
local release_array=("Main Release" "$main_tag_name" "$main_human_readable_date")
|
||||
|
||||
# Fetch all releases (including draft and pre-release) from the Cooker repository
|
||||
local releases=$(curl -s https://api.github.com/repos/$git_organization_name/$cooker_repository_name/releases?per_page=100)
|
||||
local releases=$(curl -s "https://api.github.com/repos/$git_organization_name/$cooker_repository_name/releases?per_page=100")
|
||||
|
||||
if [[ -z "$releases" ]]; then
|
||||
log e "Failed to fetch releases or no releases available"
|
||||
|
@ -1220,16 +1220,16 @@ release_selector() {
|
|||
log d "User confirmed installation of release $selected_tag"
|
||||
|
||||
if echo "$selected_release" | grep -q "Main Release"; then
|
||||
set_setting_value $rd_conf "update_repo" "$main_repository_name" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "update_repo" "$main_repository_name" retrodeck "options"
|
||||
log i "Switching to main channel"
|
||||
else
|
||||
set_setting_value $rd_conf "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "update_repo" "$cooker_repository_name" retrodeck "options"
|
||||
log i "Switching to cooker channel"
|
||||
fi
|
||||
|
||||
set_setting_value "$rd_conf" "branch" "$selected_branch" "retrodeck" "options"
|
||||
log d "Set branch to $selected_branch in configuration"
|
||||
install_release $selected_tag
|
||||
install_release "$selected_tag"
|
||||
|
||||
else
|
||||
log d "User canceled installation"
|
||||
|
@ -1294,21 +1294,21 @@ retroarch_updater(){
|
|||
log i "Running RetroArch updater"
|
||||
|
||||
# Synchronize cores from the application share directory to the RetroArch cores directory
|
||||
rsync -rlD --mkpath "/app/share/libretro/cores/" "/var/config/retroarch/cores/" && log d "RetroArch cores updated correctly"
|
||||
rsync -rlD --mkpath "/app/share/libretro/cores/" "$XDG_CONFIG_HOME/retroarch/cores/" && log d "RetroArch cores updated correctly"
|
||||
|
||||
# Synchronize border overlays from the RetroDeck configuration directory to the RetroArch overlays directory
|
||||
rsync -rlD --mkpath "/app/retrodeck/config/retroarch/borders/" "/var/config/retroarch/overlays/borders/" && log d "RetroArch overlays and borders updated correctly"
|
||||
rsync -rlD --mkpath "/app/retrodeck/config/retroarch/borders/" "$XDG_CONFIG_HOME/retroarch/overlays/borders/" && log d "RetroArch overlays and borders updated correctly"
|
||||
}
|
||||
|
||||
portmaster_show(){
|
||||
log d "Setting PortMaster visibility in ES-DE"
|
||||
if [ "$1" = "true" ]; then
|
||||
log d "\"$roms_folder/portmaster/PortMaster.sh\" is not found, installing it"
|
||||
install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh" && log d "PortMaster is correctly showing in ES-DE"
|
||||
set_setting_value $rd_conf "portmaster_show" "true" retrodeck "options"
|
||||
install -Dm755 "$XDG_DATA_HOME/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh" && log d "PortMaster is correctly showing in ES-DE"
|
||||
set_setting_value "$rd_conf" "portmaster_show" "true" retrodeck "options"
|
||||
elif [ "$1" = "false" ]; then
|
||||
rm -rf "$roms_folder/portmaster/PortMaster.sh" && log d "PortMaster is correctly hidden in ES-DE"
|
||||
set_setting_value $rd_conf "portmaster_show" "false" retrodeck "options"
|
||||
set_setting_value "$rd_conf" "portmaster_show" "false" retrodeck "options"
|
||||
else
|
||||
log e "\"$1\" is not a valid choice, quitting"
|
||||
fi
|
||||
|
@ -1430,7 +1430,7 @@ repair_paths() {
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
done < <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
|
||||
if [[ $invalid_path_found == "true" ]]; then
|
||||
log i "One or more invalid paths repaired, fixing internal RetroDECK structures"
|
||||
|
|
|
@ -21,7 +21,7 @@ run_and_check() {
|
|||
fi
|
||||
|
||||
# Run command with timeout
|
||||
timeout -s TERM $TIMEOUT $full_cmd
|
||||
timeout -s TERM $TIMEOUT "$full_cmd"
|
||||
local exit_code=$?
|
||||
|
||||
# Log the results
|
||||
|
@ -52,4 +52,4 @@ for entry in "${commands[@]}"; do
|
|||
|
||||
# Run the command with optional CLI argument
|
||||
run_and_check "$cmd" "$cli_arg"
|
||||
done
|
||||
done
|
||||
|
|
|
@ -13,51 +13,69 @@ post_update() {
|
|||
|
||||
# Optional userdata backup prior to update
|
||||
|
||||
choice=$(rd_zenity --title "RetroDECK Update - Backup Userdata" --info --no-wrap --ok-label="No Backup" --extra-button"Backup Core Userdata" --extra-button="Backup Some Userdata" --extra-button="Backup All Userdata" \
|
||||
choice=$(rd_zenity --title "RetroDECK Update - Backup Userdata" --info --no-wrap --ok-label="No Backup" --extra-button="Backup Core Userdata" --extra-button="Backup Some Userdata" --extra-button="Backup All Userdata" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --text="Would you like to backup some or all of the RetroDECK userdata prior to update?\n\nIf you choose \"Backup Core Userdata\" only irreplaceable files (like saves, states and gamelists) will be backed up. If you choose \"Backup Some Userdata\" you will be given a choice of which folders to backup.\n\nIf you choose \"Backup All Userdata\" then ALL data (including ROMs and downloaded media) will be backed up.\nPLEASE NOTE: A full backup may take up a large amount of space, especially if you have a lot of scraped media.")
|
||||
|
||||
local rc=$?
|
||||
if [[ $rc == "0" ]] && [[ -z "$choice" ]]; then # User selected No Backup button
|
||||
log i "User chose to not backup prior to update."
|
||||
else
|
||||
case $choice in
|
||||
"Backup Core Userdata" )
|
||||
log i "User chose to backup core userdata prior to update."
|
||||
backup_retrodeck_userdata "core"
|
||||
;;
|
||||
"Backup Some Userdata" )
|
||||
log i "User chose to backup some userdata prior to update."
|
||||
while read -r config_line; do
|
||||
local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
if [[ ! $current_setting_name =~ (rdhome|sdcard|backups_folder) ]]; then # Ignore these locations
|
||||
log d "Adding $current_setting_name to compressible paths."
|
||||
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
||||
compressible_paths=("${compressible_paths[@]}" "false" "$current_setting_name" "$current_setting_value")
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
if [[ $rc == "0" ]] && [[ -z "$choice" ]]; then # User selected No Backup button
|
||||
log i "User chose to not backup prior to update."
|
||||
else
|
||||
case $choice in
|
||||
"Backup Core Userdata" )
|
||||
log i "User chose to backup core userdata prior to update."
|
||||
if ! backup_retrodeck_userdata "core"; then
|
||||
log d "Userdata backup failed, giving option to proceed"
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Update" "Unfortunately the userdata backup process was not successful.\nWould you like to proceed with the upgrade anyway?\n\nRetroDECK will exit if you choose \"No\"") == "false" ]]; then
|
||||
log d "User chose to stop post_update process after backup failure"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
"Backup Some Userdata" )
|
||||
log i "User chose to backup some userdata prior to update."
|
||||
while read -r config_line; do
|
||||
local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
if [[ ! $current_setting_name =~ (rdhome|sdcard|backups_folder) ]]; then # Ignore these locations
|
||||
log d "Adding $current_setting_name to compressible paths."
|
||||
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
||||
compressible_paths=("${compressible_paths[@]}" "false" "$current_setting_name" "$current_setting_value")
|
||||
fi
|
||||
done < <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--checklist \
|
||||
--separator="^" \
|
||||
--print-column=3 \
|
||||
--text="Please select folders to compress..." \
|
||||
--column "Backup?" \
|
||||
--column "Folder Name" \
|
||||
--column "Path" \
|
||||
"${compressible_paths[@]}")
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--checklist \
|
||||
--separator="^" \
|
||||
--print-column=3 \
|
||||
--text="Please select folders to compress..." \
|
||||
--column "Backup?" \
|
||||
--column "Folder Name" \
|
||||
--column "Path" \
|
||||
"${compressible_paths[@]}")
|
||||
|
||||
choices=() # Expand choice string into passable array
|
||||
IFS='^' read -ra choices <<< "$choice"
|
||||
choices=() # Expand choice string into passable array
|
||||
IFS='^' read -ra choices <<< "$choice"
|
||||
|
||||
backup_retrodeck_userdata "custom" "${choices[@]}" # Expand array of choices into individual arguments
|
||||
;;
|
||||
"Backup All Userdata" )
|
||||
log i "User chose to backup all userdata prior to update."
|
||||
backup_retrodeck_userdata "complete"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if ! backup_retrodeck_userdata "custom" "${choices[@]}"; then # Expand array of choices into individual arguments
|
||||
log d "Userdata backup failed, giving option to proceed"
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Update" "Unfortunately the userdata backup process was not successful.\nWould you like to proceed with the upgrade anyway?\n\nRetroDECK will exit if you choose \"No\"") == "false" ]]; then
|
||||
log d "User chose to stop post_update process after backup failure"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
"Backup All Userdata" )
|
||||
log i "User chose to backup all userdata prior to update."
|
||||
if ! backup_retrodeck_userdata "complete"; then
|
||||
log d "Userdata backup failed, giving option to proceed"
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Update" "Unfortunately the userdata backup process was not successful.\nWould you like to proceed with the upgrade anyway?\n\nRetroDECK will exit if you choose \"No\"") == "false" ]]; then
|
||||
log d "User chose to stop post_update process after backup failure"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Start of post_update actions
|
||||
|
||||
|
@ -74,11 +92,11 @@ post_update() {
|
|||
# - Duckstation save and state locations were dir_prep'd to the rdhome/save and /state folders, which was not previously done. Much safer now!
|
||||
# - Fix PICO-8 folder structure. ROM and save folders are now sane and binary files will go into ~/retrodeck/bios/pico-8/
|
||||
|
||||
rm -rf /var/config/primehack # Purge old Primehack config files. Saves are safe as they are linked into /var/data/primehack.
|
||||
rm -rf "$XDG_CONFIG_HOME/primehack" # Purge old Primehack config files. Saves are safe as they are linked into $XDG_DATA_HOME/primehack.
|
||||
prepare_component "reset" "primehack"
|
||||
|
||||
dir_prep "$rdhome/saves/duckstation" "/var/data/duckstation/memcards"
|
||||
dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates"
|
||||
dir_prep "$rdhome/saves/duckstation" "$XDG_DATA_HOME/duckstation/memcards"
|
||||
dir_prep "$rdhome/states/duckstation" "$XDG_DATA_HOME/duckstation/savestates"
|
||||
|
||||
mv "$bios_folder/pico8" "$bios_folder/pico8_olddata" # Move legacy (and incorrect / non-functional ) PICO-8 location for future cleanup / less confusion
|
||||
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||
|
@ -91,21 +109,21 @@ post_update() {
|
|||
# - Fix symlink to hard-coded PICO-8 config folder (dir_prep doesn't like ~)
|
||||
# - Overwrite Citra and Yuzu configs, as controller mapping was broken due to emulator updates.
|
||||
|
||||
dir_prep "$rdhome/states/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||
dir_prep "$rdhome/states/primehack" "/var/data/primehack/StateSaves"
|
||||
dir_prep "$rdhome/states/dolphin" "$XDG_DATA_HOME/dolphin-emu/StateSaves"
|
||||
dir_prep "$rdhome/states/primehack" "$XDG_DATA_HOME/primehack/StateSaves"
|
||||
|
||||
rm -rf "$HOME/~/" # Remove old incorrect location from 0.6.2b
|
||||
rm -f "$HOME/.lexaloffle/pico-8" # Remove old symlink to prevent recursion
|
||||
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||
dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder structure was backwards, fixing for consistency.
|
||||
|
||||
cp -f "$config/citra/qt-config.ini" /var/config/citra-emu/qt-config.ini
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/citra-emu/qt-config.ini
|
||||
cp -fr "$config/yuzu/"* /var/config/yuzu/
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' /var/config/yuzu/qt-config.ini
|
||||
cp -f "$config/citra/qt-config.ini" "$XDG_CONFIG_HOME/citra-emu/qt-config.ini"
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$XDG_CONFIG_HOME/citra-emu/qt-config.ini"
|
||||
cp -fr "$config/yuzu/"* "$XDG_CONFIG_HOME/yuzu/"
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$XDG_CONFIG_HOME/yuzu/qt-config.ini"
|
||||
|
||||
# Remove unneeded tools folder, as location has changed to RO space
|
||||
rm -rfv /var/config/retrodeck/tools/
|
||||
rm -rfv "$XDG_CONFIG_HOME/retrodeck/tools/"
|
||||
fi
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.6.4b") == "true" ]]; then
|
||||
# In version 0.6.4b, the following changes were made:
|
||||
|
@ -119,12 +137,12 @@ post_update() {
|
|||
# In version 0.6.5b, the following changes were made:
|
||||
# Change Yuzu GPU accuracy to normal for better performance
|
||||
|
||||
set_setting_value $yuzuconf "gpu_accuracy" "0" "yuzu" "Renderer"
|
||||
set_setting_value "$yuzuconf" "gpu_accuracy" "0" "yuzu" "Renderer"
|
||||
fi
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.7.0b") == "true" ]]; then
|
||||
# In version 0.7.0b, the following changes were made that required config file updates/reset or other changes to the filesystem:
|
||||
# - Update retrodeck.cfg and set new paths to $rdhome by default
|
||||
# - Update PCSX2 and Duckstation configs to latest templates (to accomadate RetroAchievements feature) and move Duckstation config folder from /var/data to /var/config
|
||||
# - Update PCSX2 and Duckstation configs to latest templates (to accomadate RetroAchievements feature) and move Duckstation config folder from $XDG_DATA_HOME to $XDG_CONFIG_HOME
|
||||
# - New ~/retrodeck/mods and ~/retrodeck/texture_packs directories are added and symlinked to multiple different emulators (where supported)
|
||||
# - Expose ES-DE gamelists folder to user at ~/retrodeck/gamelists
|
||||
# - Copy new borders into RA config location
|
||||
|
@ -144,52 +162,52 @@ post_update() {
|
|||
# - Init PICO-8 as it has newly-shipped config files
|
||||
|
||||
update_rd_conf # Expand retrodeck.cfg to latest template
|
||||
set_setting_value $rd_conf "screenshots_folder" "$rdhome/screenshots"
|
||||
set_setting_value $rd_conf "mods_folder" "$rdhome/mods"
|
||||
set_setting_value $rd_conf "texture_packs_folder" "$rdhome/texture_packs"
|
||||
set_setting_value $rd_conf "borders_folder" "$rdhome/borders"
|
||||
set_setting_value "$rd_conf" "screenshots_folder" "$rdhome/screenshots"
|
||||
set_setting_value "$rd_conf" "mods_folder" "$rdhome/mods"
|
||||
set_setting_value "$rd_conf" "texture_packs_folder" "$rdhome/texture_packs"
|
||||
set_setting_value "$rd_conf" "borders_folder" "$rdhome/borders"
|
||||
conf_read
|
||||
|
||||
mv -f "$pcsx2conf" "$pcsx2conf.bak"
|
||||
generate_single_patch "$config/PCSX2/PCSX2.ini" "$pcsx2conf.bak" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" pcsx2
|
||||
deploy_single_patch "$config/PCSX2/PCSX2.ini" "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch" "$pcsx2conf"
|
||||
rm -f "/var/config/PCSX2/inis/PCSX2-cheevos-upgrade.patch"
|
||||
dir_prep "/var/config/duckstation" "/var/data/duckstation"
|
||||
generate_single_patch "$config/PCSX2/PCSX2.ini" "$pcsx2conf.bak" "$XDG_CONFIG_HOME/PCSX2/inis/PCSX2-cheevos-upgrade.patch" pcsx2
|
||||
deploy_single_patch "$config/PCSX2/PCSX2.ini" "$XDG_CONFIG_HOME/PCSX2/inis/PCSX2-cheevos-upgrade.patch" "$pcsx2conf"
|
||||
rm -f "$XDG_CONFIG_HOME/PCSX2/inis/PCSX2-cheevos-upgrade.patch"
|
||||
dir_prep "$XDG_CONFIG_HOME/duckstation" "$XDG_DATA_HOME/duckstation"
|
||||
mv -f "$duckstationconf" "$duckstationconf.bak"
|
||||
generate_single_patch "$config/duckstation/settings.ini" "$duckstationconf.bak" "/var/config/duckstation/duckstation-cheevos-upgrade.patch" pcsx2
|
||||
deploy_single_patch "$config/duckstation/settings.ini" "/var/config/duckstation/duckstation-cheevos-upgrade.patch" "$duckstationconf"
|
||||
rm -f "/var/config/duckstation/duckstation-cheevos-upgrade.patch"
|
||||
generate_single_patch "$config/duckstation/settings.ini" "$duckstationconf.bak" "$XDG_CONFIG_HOME/duckstation/duckstation-cheevos-upgrade.patch" pcsx2
|
||||
deploy_single_patch "$config/duckstation/settings.ini" "$XDG_CONFIG_HOME/duckstation/duckstation-cheevos-upgrade.patch" "$duckstationconf"
|
||||
rm -f "$XDG_CONFIG_HOME/duckstation/duckstation-cheevos-upgrade.patch"
|
||||
|
||||
create_dir "$mods_folder"
|
||||
create_dir "$texture_packs_folder"
|
||||
create_dir "$borders_folder"
|
||||
|
||||
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
||||
dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures"
|
||||
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures"
|
||||
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture"
|
||||
dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures"
|
||||
dir_prep "$mods_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/Textures"
|
||||
dir_prep "$mods_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/Textures"
|
||||
dir_prep "$mods_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/textures"
|
||||
dir_prep "$mods_folder/Yuzu" "$XDG_DATA_HOME/yuzu/load"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "$XDG_CONFIG_HOME/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/TEXTURES"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "$XDG_CONFIG_HOME/PCSX2/textures"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/hires_texture"
|
||||
dir_prep "$texture_packs_folder/Duckstation" "$XDG_CONFIG_HOME/duckstation/textures"
|
||||
|
||||
dir_prep "$rdhome/gamelists" "/var/config/emulationstation/ES-DE/gamelists"
|
||||
dir_prep "$rdhome/gamelists" "$XDG_CONFIG_HOME/emulationstation/ES-DE/gamelists"
|
||||
|
||||
dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders"
|
||||
rsync -rlD --mkpath "/app/retrodeck/config/retroarch/borders/" "/var/config/retroarch/overlays/borders/"
|
||||
dir_prep "$borders_folder" "$XDG_CONFIG_HOME/retroarch/overlays/borders"
|
||||
rsync -rlD --mkpath "/app/retrodeck/config/retroarch/borders/" "$XDG_CONFIG_HOME/retroarch/overlays/borders/"
|
||||
|
||||
rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "/var/config/retroarch/config/remaps/"
|
||||
rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "$XDG_CONFIG_HOME/retroarch/config/remaps/"
|
||||
|
||||
if [[ ! -f "$bios_folder/capsimg.so" ]]; then
|
||||
cp -f "/app/retrodeck/extras/Amiga/capsimg.so" "$bios_folder/capsimg.so"
|
||||
fi
|
||||
|
||||
cp -f $config/rpcs3/vfs.yml /var/config/rpcs3/vfs.yml
|
||||
cp -f "$config/rpcs3/vfs.yml" "$XDG_CONFIG_HOME/rpcs3/vfs.yml"
|
||||
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf"
|
||||
set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3"
|
||||
if [[ -d "$roms_folder/ps3/emudir" ]]; then # The old location exists, meaning the emulator was run at least once.
|
||||
|
@ -207,7 +225,7 @@ post_update() {
|
|||
create_dir "$bios_folder/rpcs3/dev_usb000"
|
||||
dir_prep "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" "$saves_folder/ps3/rpcs3"
|
||||
|
||||
set_setting_value $es_settings "ApplicationUpdaterFrequency" "never" "es_settings"
|
||||
set_setting_value "$es_settings" "ApplicationUpdaterFrequency" "never" "es_settings"
|
||||
|
||||
if [[ -f "$saves_folder/duckstation/shared_card_1.mcd" || -f "$saves_folder/duckstation/shared_card_2.mcd" ]]; then
|
||||
configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "As part of this update, the location of saves and states for Duckstation has been changed.\n\nYour files will be moved automatically, and can now be found at\n\n~.../saves/psx/duckstation/memcards/\nand\n~.../states/psx/duckstation/"
|
||||
|
@ -215,42 +233,42 @@ post_update() {
|
|||
create_dir "$saves_folder/psx/duckstation/memcards"
|
||||
mv "$saves_folder/duckstation/"* "$saves_folder/psx/duckstation/memcards/"
|
||||
rmdir "$saves_folder/duckstation" # File-safe folder cleanup
|
||||
unlink "/var/config/duckstation/memcards"
|
||||
unlink "$XDG_CONFIG_HOME/duckstation/memcards"
|
||||
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||
create_dir "$states_folder/psx"
|
||||
mv -t "$states_folder/psx/" "$states_folder/duckstation"
|
||||
unlink "/var/config/duckstation/savestates"
|
||||
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates"
|
||||
unlink "$XDG_CONFIG_HOME/duckstation/savestates"
|
||||
dir_prep "$states_folder/psx/duckstation" "$XDG_CONFIG_HOME/duckstation/savestates"
|
||||
|
||||
rm -rf /var/config/retrodeck/tools
|
||||
rm -rf /var/config/emulationstation/ES-DE/gamelists/tools/
|
||||
rm -rf "$XDG_CONFIG_HOME/retrodeck/tools"
|
||||
rm -rf "$XDG_CONFIG_HOME/emulationstation/ES-DE/gamelists/tools/"
|
||||
|
||||
mv "$saves_folder/gc/dolphin/EUR" "$saves_folder/gc/dolphin/EU"
|
||||
mv "$saves_folder/gc/dolphin/USA" "$saves_folder/gc/dolphin/US"
|
||||
mv "$saves_folder/gc/dolphin/JAP" "$saves_folder/gc/dolphin/JP"
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA"
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP"
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "$XDG_DATA_HOME/dolphin-emu/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "$XDG_DATA_HOME/dolphin-emu/GC/USA"
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "$XDG_DATA_HOME/dolphin-emu/GC/JAP"
|
||||
mv "$saves_folder/gc/primehack/EUR" "$saves_folder/gc/primehack/EU"
|
||||
mv "$saves_folder/gc/primehack/USA" "$saves_folder/gc/primehack/US"
|
||||
mv "$saves_folder/gc/primehack/JAP" "$saves_folder/gc/primehack/JP"
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP"
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "$XDG_DATA_HOME/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "$XDG_DATA_HOME/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "$XDG_DATA_HOME/primehack/GC/JAP"
|
||||
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE"
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/PPSSPP_STATE"
|
||||
|
||||
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
|
||||
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
|
||||
sed -i '$ a <string name="UserThemeDirectory" value="" />' "$es_settings" # Add new default line to existing file
|
||||
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings"
|
||||
unlink "/var/config/emulationstation/ROMs"
|
||||
unlink "/var/config/emulationstation/ES-DE/downloaded_media"
|
||||
unlink "/var/config/emulationstation/ES-DE/themes"
|
||||
unlink "$XDG_CONFIG_HOME/emulationstation/ROMs"
|
||||
unlink "$XDG_CONFIG_HOME/emulationstation/ES-DE/downloaded_media"
|
||||
unlink "$XDG_CONFIG_HOME/emulationstation/ES-DE/themes"
|
||||
|
||||
set_setting_value "$raconf" "savestate_auto_load" "false" "retroarch"
|
||||
set_setting_value "$raconf" "savestate_auto_save" "false" "retroarch"
|
||||
|
@ -285,7 +303,7 @@ post_update() {
|
|||
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.7.3b") == "true" ]]; then
|
||||
# In version 0.7.3b, there was a bug that prevented the correct creations of the roms/system folders, so we force recreate them.
|
||||
emulationstation --home /var/config/emulationstation --create-system-dirs
|
||||
emulationstation --home "$XDG_CONFIG_HOME/emulationstation" --create-system-dirs
|
||||
fi
|
||||
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.8.0b") == "true" ]]; then
|
||||
|
@ -324,8 +342,8 @@ post_update() {
|
|||
set_setting_value "$raconf" "rewind_enable" "false" "retroarch"
|
||||
|
||||
# in 3.0 .emulationstation was moved into ES-DE
|
||||
log i "Renaming old \"/var/config/emulationstation\" folder as \"/var/config/ES-DE\""
|
||||
mv -f /var/config/emulationstation /var/config/ES-DE
|
||||
log i "Renaming old \"$XDG_CONFIG_HOME/emulationstation\" folder as \"$XDG_CONFIG_HOME/ES-DE\""
|
||||
mv -f "$XDG_CONFIG_HOME/emulationstation" "$XDG_CONFIG_HOME/ES-DE"
|
||||
|
||||
prepare_component "reset" "es-de"
|
||||
prepare_component "reset" "mame"
|
||||
|
@ -339,7 +357,7 @@ post_update() {
|
|||
|
||||
# The save folder of rpcs3 was inverted so we're moving the saves into the real one
|
||||
log i "RPCS3 saves needs to be migrated, executing."
|
||||
if [[ "$(ls -A $bios_folder/rpcs3/dev_hdd0/home/00000001/savedata)" ]]; then
|
||||
if [[ "$(ls -A "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata")" ]]; then
|
||||
log i "Existing RPCS3 savedata found, backing up..."
|
||||
create_dir "$backups_folder"
|
||||
zip -rq9 "$backups_folder/$(date +"%0m%0d")_rpcs3_save_data.zip" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
|
||||
|
@ -351,7 +369,7 @@ post_update() {
|
|||
mv "$bios_folder/switch/registered" "$bios_folder/switch/firmware"
|
||||
|
||||
log i "New systems were added in this version, regenerating system folders."
|
||||
#es-de --home "/var/config/" --create-system-dirs
|
||||
#es-de --home "$XDG_CONFIG_HOME/" --create-system-dirs
|
||||
es-de --create-system-dirs
|
||||
|
||||
fi # end of 0.8.0b
|
||||
|
@ -362,8 +380,8 @@ post_update() {
|
|||
log i "- Give the user the option to reset Ryujinx, which was not properly initialized in 0.8.0b"
|
||||
|
||||
log d "ES-DE files were moved inside the retrodeck folder, migrating to the new structure"
|
||||
dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections"
|
||||
dir_prep "$rdhome/ES-DE/gamelists" "/var/config/ES-DE/gamelists"
|
||||
dir_prep "$rdhome/ES-DE/collections" "$XDG_CONFIG_HOME/ES-DE/collections"
|
||||
dir_prep "$rdhome/ES-DE/gamelists" "$XDG_CONFIG_HOME/ES-DE/gamelists"
|
||||
log i "Moving ES-DE collections, downloaded_media, gamelist, and themes from \"$rdhome\" to \"$rdhome/ES-DE\""
|
||||
set_setting_value "$es_settings" "MediaDirectory" "$rdhome/ES-DE/downloaded_media" "es_settings"
|
||||
set_setting_value "$es_settings" "UserThemeDirectory" "$rdhome/ES-DE/themes" "es_settings"
|
||||
|
@ -371,21 +389,21 @@ post_update() {
|
|||
mv -f "$rdhome/downloaded_media" "$rdhome/ES-DE/downloaded_media" && log d "Move of \"$rdhome/downloaded_media\" in \"$rdhome/ES-DE\" folder completed"
|
||||
mv -f "$rdhome/gamelists/"* "$rdhome/ES-DE/gamelists" && log d "Move of \"$rdhome/gamelists/\" in \"$rdhome/ES-DE\" folder completed" && rm -rf "$rdhome/gamelists"
|
||||
|
||||
log i "MAME-SA, migrating samples to the new exposed folder: from \"/var/data/mame/assets/samples\" to \"$bios_folder/mame-sa/samples\""
|
||||
log i "MAME-SA, migrating samples to the new exposed folder: from \"$XDG_DATA_HOME/mame/assets/samples\" to \"$bios_folder/mame-sa/samples\""
|
||||
create_dir "$bios_folder/mame-sa/samples"
|
||||
mv -f "/var/data/mame/assets/samples/"* "$bios_folder/mame-sa/samples"
|
||||
mv -f "$XDG_DATA_HOME/mame/assets/samples/"* "$bios_folder/mame-sa/samples"
|
||||
set_setting_value "$mameconf" "samplepath" "$bios_folder/mame-sa/samples" "mame"
|
||||
|
||||
log i "Installing the missing ScummVM assets and renaming \"$mods_folder/RetroArch/ScummVM/themes\" into \"theme\""
|
||||
mv -f "$mods_folder/RetroArch/ScummVM/themes" "$mods_folder/RetroArch/ScummVM/theme"
|
||||
unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/extra/*' -d /tmp
|
||||
unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/theme/*' -d /tmp
|
||||
mv -f /tmp/scummvm/extra "$mods_folder/RetroArch/ScummVM"
|
||||
mv -f /tmp/scummvm/theme "$mods_folder/RetroArch/ScummVM"
|
||||
rm -rf /tmp/extra /tmp/theme
|
||||
mv -f "/tmp/scummvm/extra" "$mods_folder/RetroArch/ScummVM"
|
||||
mv -f "/tmp/scummvm/theme" "$mods_folder/RetroArch/ScummVM"
|
||||
rm -rf "/tmp/extra /tmp/theme"
|
||||
|
||||
log i "Placing cheats in \"/var/data/mame/cheat\""
|
||||
unzip -j -o "$config/mame/cheat0264.zip" 'cheat.7z' -d "/var/data/mame/cheat"
|
||||
log i "Placing cheats in \"$XDG_DATA_HOME/mame/cheat\""
|
||||
unzip -j -o "$config/mame/cheat0264.zip" 'cheat.7z' -d "$XDG_DATA_HOME/mame/cheat"
|
||||
|
||||
log d "Verifying with user if they want to reset Ryujinx"
|
||||
if [[ "$(configurator_generic_question_dialog "RetroDECK 0.8.1b Ryujinx Reset" "In RetroDECK 0.8.0b the Ryujinx emulator was not properly initialized for upgrading users.\nThis would cause Ryujinx to not work properly.\n\nWould you like to reset Ryujinx to default RetroDECK settings now?\n\nIf you have made your own changes to the Ryujinx config, you can decline this reset.")" == "true" ]]; then
|
||||
|
@ -395,15 +413,15 @@ post_update() {
|
|||
fi # end of 0.8.1b
|
||||
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.8.2b") == "true" ]]; then
|
||||
log i "Vita3K changed some paths, reflecting them: moving \"/var/data/Vita3K\" in \"/var/config/Vita3K\""
|
||||
move "/var/data/Vita3K" "/var/config/Vita3K"
|
||||
log i "Vita3K changed some paths, reflecting them: moving \"$XDG_DATA_HOME/Vita3K\" in \"$XDG_CONFIG_HOME/Vita3K\""
|
||||
move "$XDG_DATA_HOME/Vita3K" "$XDG_CONFIG_HOME/Vita3K"
|
||||
log i "Moving ES-DE downloaded_media, gamelist, and themes from \"$rdhome\" to \"$rdhome/ES-DE\" due to a RetroDECK Framework bug"
|
||||
move "$rdhome/themes" "$rdhome/ES-DE/themes" && log d "Move of \"$rdhome/themes\" in \"$rdhome/ES-DE\" folder completed"
|
||||
move "$rdhome/downloaded_media" "$rdhome/ES-DE/downloaded_media" && log d "Move of \"$rdhome/downloaded_media\" in \"$rdhome/ES-DE\" folder completed"
|
||||
move "$rdhome/gamelists" "$rdhome/ES-DE/gamelists" && log d "Move of \"$rdhome/gamelists/\" in \"$rdhome/ES-DE\" folder completed"
|
||||
move "$rdhome/collections" "$rdhome/ES-DE/collections" && log d "Move of \"$rdhome/collections/\" in \"$rdhome/ES-DE\" folder completed"
|
||||
log i "Since in this version we moved to a PR build of Ryujinx we need to symlink it."
|
||||
ln -sv $ryujinxconf "$(dirname $ryujinxconf)/PRConfig.json"
|
||||
ln -sv "$ryujinxconf" "$(dirname "$ryujinxconf")/PRConfig.json"
|
||||
fi #end of 0.8.2b
|
||||
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.8.3b") == "true" ]]; then
|
||||
|
@ -587,26 +605,26 @@ post_update() {
|
|||
|
||||
# RetroArch
|
||||
log i "Forcing RetroArch to use the new libretro info path"
|
||||
set_setting_value "$raconf" "libretro_info_path" "/var/config/retroarch/cores" "retroarch"
|
||||
set_setting_value "$raconf" "libretro_info_path" "$XDG_CONFIG_HOME/retroarch/cores" "retroarch"
|
||||
|
||||
log i "Moving Ryujinx data to the new locations"
|
||||
if [[ -d "/var/config/Ryujinx/bis" ]]; then
|
||||
mv -f "/var/config/Ryujinx/bis"/* "$saves_folder/switch/ryujinx/nand" && rm -rf "/var/config/Ryujinx/bis" && log i "Migrated Ryujinx nand data to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/bis" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/bis"/* "$saves_folder/switch/ryujinx/nand" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/bis" && log i "Migrated Ryujinx nand data to the new location"
|
||||
fi
|
||||
if [[ -d "/var/config/Ryujinx/sdcard" ]]; then
|
||||
mv -f "/var/config/Ryujinx/sdcard"/* "$saves_folder/switch/ryujinx/sdcard" && rm -rf "/var/config/Ryujinx/sdcard" && log i "Migrated Ryujinx sdcard data to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/sdcard" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/sdcard"/* "$saves_folder/switch/ryujinx/sdcard" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/sdcard" && log i "Migrated Ryujinx sdcard data to the new location"
|
||||
fi
|
||||
if [[ -d "/var/config/Ryujinx/bis/system/Contents/registered" ]]; then
|
||||
mv -f "/var/config/Ryujinx/bis/system/Contents/registered"/* "$bios_folder/switch/firmware" && rm -rf "/var/config/Ryujinx/bis/system/Contents/registered" && log i "Migration of Ryujinx firmware data to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/bis/system/Contents/registered" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/bis/system/Contents/registered"/* "$bios_folder/switch/firmware" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/bis/system/Contents/registered" && log i "Migration of Ryujinx firmware data to the new location"
|
||||
fi
|
||||
if [[ -d "/var/config/Ryujinx/system" ]]; then
|
||||
mv -f "/var/config/Ryujinx/system"/* "$bios_folder/switch/keys" && rm -rf "/var/config/Ryujinx/system" && log i "Migrated Ryujinx keys data to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/system" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/system"/* "$bios_folder/switch/keys" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/system" && log i "Migrated Ryujinx keys data to the new location"
|
||||
fi
|
||||
if [[ -d "/var/config/Ryujinx/mods" ]]; then
|
||||
mv -f "/var/config/Ryujinx/mods"/* "$mods_folder/ryujinx" && rm -rf "/var/config/Ryujinx/mods" && log i "Migrated Ryujinx mods data to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/mods" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/mods"/* "$mods_folder/ryujinx" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/mods" && log i "Migrated Ryujinx mods data to the new location"
|
||||
fi
|
||||
if [[ -d "/var/config/Ryujinx/screenshots" ]]; then
|
||||
mv -f "/var/config/Ryujinx/screenshots"/* "$screenshots_folder/ryujinx" && rm -rf "/var/config/Ryujinx/screenshots" && log i "Migrated Ryujinx screenshots to the new location"
|
||||
if [[ -d "$XDG_CONFIG_HOME/Ryujinx/screenshots" ]]; then
|
||||
mv -f "$XDG_CONFIG_HOME/Ryujinx/screenshots"/* "$screenshots_folder/ryujinx" && rm -rf "$XDG_CONFIG_HOME/Ryujinx/screenshots" && log i "Migrated Ryujinx screenshots to the new location"
|
||||
fi
|
||||
|
||||
fi # end of 0.9.0b
|
||||
|
@ -690,7 +708,7 @@ post_update() {
|
|||
# --- ALWAYS EXECUTED IN 0.9.1b ---
|
||||
|
||||
log i "Preparing the shaders folder for MAME..."
|
||||
shaders_folder=$rdhome/shaders && log i "Shaders folder set to \"$shaders_folder\""
|
||||
shaders_folder="$rdhome/shaders" && log i "Shaders folder set to \"$shaders_folder\""
|
||||
conf_write && log i "Done"
|
||||
create_dir "$shaders_folder/mame/bgfx"
|
||||
set_setting_value "$mameconf" "bgfx_path" "$shaders_folder/mame/bgfx/" "mame"
|
||||
|
@ -699,26 +717,26 @@ post_update() {
|
|||
log i "Preparing the cheats for RetroArch..."
|
||||
create_dir "$cheats_folder/retroarch"
|
||||
set_setting_value "$raconf" "cheat_database_path" "$cheats_folder/retroarch" "retroarch"
|
||||
tar --strip-components=1 -xzf /app/retrodeck/cheats/retroarch.tar.gz -C "$cheats_folder/retroarch" --overwrite && log i "Cheats for RetroArch installed"
|
||||
tar --strip-components=1 -xzf "/app/retrodeck/cheats/retroarch.tar.gz" -C "$cheats_folder/retroarch" --overwrite && log i "Cheats for RetroArch installed"
|
||||
|
||||
log i "Preparing the cheats for PPSSPP..."
|
||||
create_dir -d "$cheats_folder/PPSSPP"
|
||||
dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats"
|
||||
tar -xzf /app/retrodeck/cheats/ppsspp.tar.gz -C "$cheats_folder/PPSSPP" --overwrite && log i "Cheats for PPSSPP installed"
|
||||
dir_prep "$cheats_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/Cheats"
|
||||
tar -xzf "/app/retrodeck/cheats/ppsspp.tar.gz" -C "$cheats_folder/PPSSPP" --overwrite && log i "Cheats for PPSSPP installed"
|
||||
|
||||
log i "Preparing the cheats for PCSX2..."
|
||||
create_dir "$cheats_folder/pcsx2"
|
||||
set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders"
|
||||
tar --strip-components=1 -xzf /app/retrodeck/cheats/pcsx2.tar.gz -C "$cheats_folder/pcsx2" --overwrite && log i "Cheats for PCSX2 installed"
|
||||
tar --strip-components=1 -xzf "/app/retrodeck/cheats/pcsx2.tar.gz" -C "$cheats_folder/pcsx2" --overwrite && log i "Cheats for PCSX2 installed"
|
||||
|
||||
log i "Preparing the cheats for MAME..."
|
||||
create_dir "$cheats_folder/mame"
|
||||
set_setting_value "$mameconf" "cheatpath" "$cheats_folder/mame" "mame"
|
||||
unzip -j -o "$config/mame/cheat0264.zip" 'cheat.7z' -d "$cheats_folder/mame" && log i "Cheats for MAME installed"
|
||||
rm -rf /var/data/mame/cheat
|
||||
rm -rf "$XDG_DATA_HOME/mame/cheat"
|
||||
|
||||
log i "Preparing the RetroAchievements for Dolphin..."
|
||||
cp -vn "$config/dolphin/"* /var/config/dolphin-emu/
|
||||
cp -vn "$config/dolphin/"* "$XDG_CONFIG_HOME/dolphin-emu/"
|
||||
|
||||
log i "Fixing PrimeHack roms paths..."
|
||||
set_setting_value "$rd_conf" "ppsspp" "$(get_setting_value "$rd_defaults" "ppsspp" "retrodeck" "cheevos")" "retrodeck" "cheevos"
|
||||
|
@ -728,36 +746,37 @@ post_update() {
|
|||
|
||||
if [[ $(check_version_is_older_than "$version_being_updated" "0.9.2b") == "true" ]]; then
|
||||
# In version 0.9.2b, the following changes were made that required config file updates/reset or other changes to the filesystem:
|
||||
# Steam Sync completely rebuilt into new manifest system. Favorites will need to be nuked and, if steam_sync is enabled will be rebuilt.
|
||||
# Steam Sync completely rebuilt into new manifest system. Favorites may need to be nuked and, if steam_sync is enabled will be rebuilt. This is an optional step.
|
||||
|
||||
if [[ -d "$steamsync_folder" ]]; then # If Steam Sync has ever been run
|
||||
steam-rom-manager nuke
|
||||
steam_sync
|
||||
if [[ "$(configurator_generic_question_dialog "RetroDECK 0.9.2b Steam Sync Reset" "In RetroDECK 0.9.2b we upgraded our Steam Sync feature and the shortcuts in Steam need to be rebuilt.\n\nAll of your ES-DE favorites are still unchanged.\nAny games you have favorited now will be recreated.\n\nIf you have added RetroDECK to Steam through our Configurator it will also be removed through this process.\nWould you like to add the RetroDECK shortcut again?")" == "true" ]]; then
|
||||
(
|
||||
# Add RetroDECK launcher to Steam
|
||||
steam-rom-manager enable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="RetroDECK Configurator: Add RetroDECK to Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="Adding RetroDECK launcher to Steam, please wait..." \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
if [[ -d "$steamsync_folder" && ! -z $(ls -1 "$steamsync_folder") ]]; then # If Steam Sync folder exists and is not empty
|
||||
if [[ "$(configurator_generic_question_dialog "RetroDECK 0.9.2b Steam Sync Reset" "In RetroDECK 0.9.2b we upgraded our Steam Sync feature and the shortcuts in Steam may need to be rebuilt.\n\nAll of your ES-DE favorites are still unchanged.\nAny games you have favorited now will be recreated, but last-played information and custom artwork changes may be lost.\n\nIf you have added RetroDECK to Steam through our Configurator it will also be removed through this process.\nWould you like to refresh the RetroDECK Steam Sync system?")" == "true" ]]; then
|
||||
steam-rom-manager nuke
|
||||
steam_sync
|
||||
if [[ "$(configurator_generic_question_dialog "RetroDECK 0.9.2b Steam Sync Reset" "The Steam Sync reset is complete.\nIf you had previously added a RetroDECK shortcut to Steam through our tools, it would have also been removed.\n\nWould you like to add the RetroDECK shortcut now?")" == "true" ]]; then
|
||||
(
|
||||
# Add RetroDECK launcher to Steam
|
||||
steam-rom-manager enable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="RetroDECK Configurator: Add RetroDECK to Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="Adding RetroDECK launcher to Steam, please wait..." \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
fi # end of 0.9.2b
|
||||
|
||||
# The following commands are run every time.
|
||||
|
||||
if [[ -d "/var/data/dolphin-emu/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled
|
||||
if [[ -d "$XDG_DATA_HOME/dolphin-emu/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled
|
||||
log i "Refreshing installed textures for Dolphin..."
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/dolphin-emu/Load/DynamicInputTextures/" && log i "Done"
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "$XDG_DATA_HOME/dolphin-emu/Load/DynamicInputTextures/" && log i "Done"
|
||||
fi
|
||||
if [[ -d "/var/data/primehack/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled
|
||||
if [[ -d "$XDG_DATA_HOME/primehack/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled
|
||||
log i "Refreshing installed textures for Dolphin..."
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/primehack/Load/DynamicInputTextures/" && log i "Done"
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "$XDG_DATA_HOME/primehack/Load/DynamicInputTextures/" && log i "Done"
|
||||
fi
|
||||
|
||||
if [[ ! -z $(find "$HOME/.steam/steam/controller_base/templates/" -maxdepth 1 -type f -iname "RetroDECK*.vdf") || ! -z $(find "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" -maxdepth 1 -type f -iname "RetroDECK*.vdf") ]]; then # If RetroDECK controller profile has been previously installed
|
||||
|
@ -776,11 +795,11 @@ post_update() {
|
|||
--text="RetroDECK is finishing up the upgrading process, please be patient.\n\n<span foreground='$purple' size='larger'><b>NOTICE - If the process is taking too long:</b></span>\n\nSome windows might be running in the background that could require your attention: pop-ups from emulators or the upgrade itself that needs user input to continue.\n\n"
|
||||
|
||||
conf_read
|
||||
version=$hard_version
|
||||
version="$hard_version"
|
||||
conf_write
|
||||
|
||||
if grep -qF "cooker" <<< $hard_version; then
|
||||
changelog_dialog "$(echo $version | cut -d'-' -f2)"
|
||||
if grep -qF "cooker" <<< "$hard_version"; then
|
||||
changelog_dialog "$(echo "$version" | cut -d'-' -f2)"
|
||||
else
|
||||
changelog_dialog "$version"
|
||||
fi
|
||||
|
|
|
@ -5,7 +5,7 @@ prepare_component() {
|
|||
# The actions currently include "reset" and "postmove"
|
||||
# The "reset" action will initialize the component
|
||||
# The "postmove" action will update the component settings after one or more RetroDECK folders were moved
|
||||
# An component can be called by name, by parent folder name in the /var/config root or use the option "all" to perform the action on all components equally
|
||||
# An component can be called by name, by parent folder name in the $XDG_CONFIG_HOME root or use the option "all" to perform the action on all components equally
|
||||
# USAGE: prepare_component "$action" "$component" "$call_source(optional)"
|
||||
|
||||
if [[ "$1" == "--list" ]]; then
|
||||
|
@ -76,8 +76,8 @@ prepare_component() {
|
|||
log d "Logs folder moved to $logs_folder and linked back to $rd_logs_folder"
|
||||
fi
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
create_dir "/var/config/retrodeck/godot" # TODO: what is this for? Can we delete it or add it to the retrodeck.cfg so the folder will be created by the above script?
|
||||
done < <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
create_dir "$XDG_CONFIG_HOME/retrodeck/godot" # TODO: what is this for? Can we delete it or add it to the retrodeck.cfg so the folder will be created by the above script?
|
||||
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move
|
||||
|
@ -89,7 +89,7 @@ prepare_component() {
|
|||
declare -g "$current_setting_name=$rdhome/${current_setting_value#*retrodeck/}"
|
||||
fi
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
done < <(grep -v '^\s*$' "$rd_conf" | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
dir_prep "$logs_folder" "$rd_logs_folder"
|
||||
fi
|
||||
fi
|
||||
|
@ -100,16 +100,16 @@ prepare_component() {
|
|||
log i "Prepearing ES-DE"
|
||||
log i "--------------------------------"
|
||||
if [[ "$action" == "reset" ]]; then
|
||||
rm -rf /var/config/ES-DE
|
||||
create_dir /var/config/ES-DE/settings
|
||||
rm -rf "$XDG_CONFIG_HOME/ES-DE"
|
||||
create_dir "$XDG_CONFIG_HOME/ES-DE/settings"
|
||||
log d "Prepearing es_settings.xml"
|
||||
cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
|
||||
cp -f "/app/retrodeck/es_settings.xml" "$XDG_CONFIG_HOME/ES-DE/settings/es_settings.xml"
|
||||
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
|
||||
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
|
||||
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings"
|
||||
dir_prep "$rdhome/ES-DE/gamelists" "/var/config/ES-DE/gamelists"
|
||||
dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections"
|
||||
dir_prep "$rdhome/ES-DE/custom_systems" "/var/config/ES-DE/custom_systems"
|
||||
dir_prep "$rdhome/ES-DE/gamelists" "$XDG_CONFIG_HOME/ES-DE/gamelists"
|
||||
dir_prep "$rdhome/ES-DE/collections" "$XDG_CONFIG_HOME/ES-DE/collections"
|
||||
dir_prep "$rdhome/ES-DE/custom_systems" "$XDG_CONFIG_HOME/ES-DE/custom_systems"
|
||||
log d "Generating roms system folders"
|
||||
es-de --create-system-dirs
|
||||
update_splashscreens
|
||||
|
@ -118,7 +118,7 @@ prepare_component() {
|
|||
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
|
||||
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
|
||||
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings"
|
||||
dir_prep "$rdhome/gamelists" "/var/config/ES-DE/gamelists"
|
||||
dir_prep "$rdhome/gamelists" "$XDG_CONFIG_HOME/ES-DE/gamelists"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -128,14 +128,14 @@ prepare_component() {
|
|||
log i "Prepearing Steam ROM Manager"
|
||||
log i "-----------------------------"
|
||||
|
||||
local srm_userdata="/var/config/steam-rom-manager/userData"
|
||||
local srm_userdata="$XDG_CONFIG_HOME/steam-rom-manager/userData"
|
||||
create_dir -d "$srm_userdata"
|
||||
cp -fv "$config/steam-rom-manager/"*.json "$srm_userdata"
|
||||
cp -fvr "$config/steam-rom-manager/manifests" "$srm_userdata"
|
||||
|
||||
log i "Updating steamDirectory and romDirectory lines in $srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.steamDirectory = "'"$HOME"'/.steam/steam"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.romsDirectory = "'"$rdhome"'/.sync"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
|
||||
get_steam_user
|
||||
fi
|
||||
|
@ -148,28 +148,28 @@ prepare_component() {
|
|||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||
cp -fv $config/retroarch/retroarch.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||
cp -fv $config/retroarch/retroarch-core-options.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||
cp -fv "$config/retroarch/retroarch.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||
cp -fv "$config/retroarch/retroarch-core-options.cfg" "$multi_user_data_folder/$SteamAppUser/config/retroarch/"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/retroarch
|
||||
dir_prep "$bios_folder" "/var/config/retroarch/system"
|
||||
dir_prep "$rdhome/logs/retroarch" "/var/config/retroarch/logs"
|
||||
create_dir -d "/var/config/retroarch/shaders/"
|
||||
if [[ -d "$cheats_folder/retroarch" && "$(ls -A $cheats_folder/retroarch)" ]]; then
|
||||
create_dir -d "$XDG_CONFIG_HOME/retroarch"
|
||||
dir_prep "$bios_folder" "$XDG_CONFIG_HOME/retroarch/system"
|
||||
dir_prep "$rdhome/logs/retroarch" "$XDG_CONFIG_HOME/retroarch/logs"
|
||||
create_dir -d "$XDG_CONFIG_HOME/retroarch/shaders/"
|
||||
if [[ -d "$cheats_folder/retroarch" && "$(ls -A "$cheats_folder/retroarch")" ]]; then
|
||||
backup_file="$backups_folder/cheats/retroarch-$(date +%y%m%d).tar.gz"
|
||||
create_dir "$(dirname "$backup_file")"
|
||||
tar -czf "$backup_file" -C "$cheats_folder" retroarch
|
||||
log i "RetroArch cheats backed up to $backup_file"
|
||||
fi
|
||||
create_dir -d "$cheats_folder/retroarch"
|
||||
tar --strip-components=1 -xzf /app/retrodeck/cheats/retroarch.tar.gz -C "$cheats_folder/retroarch" --overwrite
|
||||
cp -rf /app/share/libretro/shaders /var/config/retroarch/
|
||||
dir_prep "$shaders_folder/retroarch" "/var/config/retroarch/shaders"
|
||||
cp -fv $config/retroarch/retroarch.cfg /var/config/retroarch/
|
||||
cp -fv $config/retroarch/retroarch-core-options.cfg /var/config/retroarch/
|
||||
rsync -rlD --mkpath "$config/retroarch/core-overrides/" "/var/config/retroarch/config/"
|
||||
rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "/var/config/retroarch/config/remaps/"
|
||||
dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders"
|
||||
tar --strip-components=1 -xzf "/app/retrodeck/cheats/retroarch.tar.gz" -C "$cheats_folder/retroarch" --overwrite
|
||||
cp -rf "/app/share/libretro/shaders" "$XDG_CONFIG_HOME/retroarch/"
|
||||
dir_prep "$shaders_folder/retroarch" "$XDG_CONFIG_HOME/retroarch/shaders"
|
||||
cp -fv "$config/retroarch/retroarch.cfg" "$XDG_CONFIG_HOME/retroarch/"
|
||||
cp -fv "$config/retroarch/retroarch-core-options.cfg" "$XDG_CONFIG_HOME/retroarch/"
|
||||
rsync -rlD --mkpath "$config/retroarch/core-overrides/" "$XDG_CONFIG_HOME/retroarch/config/"
|
||||
rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "$XDG_CONFIG_HOME/retroarch/config/remaps/"
|
||||
dir_prep "$borders_folder" "$XDG_CONFIG_HOME/retroarch/overlays/borders"
|
||||
set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch"
|
||||
set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch"
|
||||
set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch"
|
||||
|
@ -200,14 +200,14 @@ prepare_component() {
|
|||
log i "--------------------------------"
|
||||
log i "Prepearing PPSSPP_LIBRETRO"
|
||||
log i "--------------------------------"
|
||||
if [ -d $bios_folder/PPSSPP/flash0/font ]
|
||||
if [ -d "$bios_folder/PPSSPP/flash0/font" ]
|
||||
then
|
||||
mv -fv $bios_folder/PPSSPP/flash0/font $bios_folder/PPSSPP/flash0/font.bak
|
||||
mv -fv "$bios_folder/PPSSPP/flash0/font" "$bios_folder/PPSSPP/flash0/font.bak"
|
||||
fi
|
||||
cp -rf "/app/retrodeck/extras/PPSSPP" "$bios_folder/PPSSPP"
|
||||
if [ -d $bios_folder/PPSSPP/flash0/font.bak ]
|
||||
if [ -d "$bios_folder/PPSSPP/flash0/font.bak" ]
|
||||
then
|
||||
mv -f $bios_folder/PPSSPP/flash0/font.bak $bios_folder/PPSSPP/flash0/font
|
||||
mv -f "$bios_folder/PPSSPP/flash0/font.bak" "$bios_folder/PPSSPP/flash0/font"
|
||||
fi
|
||||
|
||||
# MSX / SVI / ColecoVision / SG-1000
|
||||
|
@ -244,9 +244,9 @@ prepare_component() {
|
|||
set_setting_value "$ra_scummvm_conf" "savepath" "$saves_folder/scummvm" "libretro_scummvm" "scummvm"
|
||||
set_setting_value "$ra_scummvm_conf" "browser_lastpath" "$roms_folder/scummvm" "libretro_scummvm" "scummvm"
|
||||
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "$XDG_CONFIG_HOME/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/hires_texture"
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "cheevos")" "retrodeck" "cheevos"
|
||||
|
@ -272,12 +272,12 @@ prepare_component() {
|
|||
set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$bios_folder" "/var/config/retroarch/system"
|
||||
dir_prep "$logs_folder/retroarch" "/var/config/retroarch/logs"
|
||||
dir_prep "$shaders_folder/retroarch" "/var/config/retroarch/shaders"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture"
|
||||
dir_prep "$bios_folder" "$XDG_CONFIG_HOME/retroarch/system"
|
||||
dir_prep "$logs_folder/retroarch" "$XDG_CONFIG_HOME/retroarch/logs"
|
||||
dir_prep "$shaders_folder/retroarch" "$XDG_CONFIG_HOME/retroarch/shaders"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mesen" "$XDG_CONFIG_HOME/retroarch/system/HdPacks"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/cache"
|
||||
dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "$XDG_CONFIG_HOME/retroarch/system/Mupen64plus/hires_texture"
|
||||
set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch"
|
||||
set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch"
|
||||
set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch"
|
||||
|
@ -294,15 +294,15 @@ prepare_component() {
|
|||
log i "------------------------"
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/citra-emu"
|
||||
cp -fv $config/citra/qt-config.ini "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini"
|
||||
cp -fv "$config/citra/qt-config.ini" "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "/var/config/citra-emu"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "$XDG_CONFIG_HOME/citra-emu"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/citra-emu/
|
||||
cp -f $config/citra/qt-config.ini /var/config/citra-emu/qt-config.ini
|
||||
create_dir -d "$XDG_CONFIG_HOME/citra-emu/"
|
||||
cp -f "$config/citra/qt-config.ini" "$XDG_CONFIG_HOME/citra-emu/qt-config.ini"
|
||||
set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
||||
set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
||||
set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI"
|
||||
|
@ -311,20 +311,20 @@ prepare_component() {
|
|||
# Shared actions
|
||||
create_dir "$saves_folder/n3ds/citra/nand/"
|
||||
create_dir "$saves_folder/n3ds/citra/sdmc/"
|
||||
dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||
dir_prep "$logs_folder/citra" "/var/data/citra-emu/log"
|
||||
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures"
|
||||
dir_prep "$bios_folder/citra/sysdata" "$XDG_DATA_HOME/citra-emu/sysdata"
|
||||
dir_prep "$logs_folder/citra" "$XDG_DATA_HOME/citra-emu/log"
|
||||
dir_prep "$mods_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/textures"
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap"
|
||||
set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||
dir_prep "$rdhome/logs/citra" "/var/data/citra-emu/log"
|
||||
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures"
|
||||
dir_prep "$bios_folder/citra/sysdata" "$XDG_DATA_HOME/citra-emu/sysdata"
|
||||
dir_prep "$rdhome/logs/citra" "$XDG_DATA_HOME/citra-emu/log"
|
||||
dir_prep "$mods_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/mods"
|
||||
dir_prep "$texture_packs_folder/Citra" "$XDG_DATA_HOME/citra-emu/load/textures"
|
||||
set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
|
||||
set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage"
|
||||
set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI"
|
||||
|
@ -344,13 +344,15 @@ prepare_component() {
|
|||
cp -fr "$config/cemu/"* "$multi_user_data_folder/$SteamAppUser/config/Cemu/"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "mlc_path" "$bios_folder/cemu" "cemu"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "/var/config/Cemu"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "$XDG_CONFIG_HOME/Cemu"
|
||||
else
|
||||
create_dir -d /var/config/Cemu/
|
||||
cp -fr "$config/cemu/"* /var/config/Cemu/
|
||||
create_dir -d "$XDG_CONFIG_HOME/Cemu/"
|
||||
cp -fr "$config/cemu/"* "$XDG_CONFIG_HOME/Cemu/"
|
||||
set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu"
|
||||
set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths"
|
||||
rm -rf "$XDG_DATA_HOME/Cemu/keys.txt" && ln -s "$bios_folder/cemu/keys.txt" "$XDG_DATA_HOME/Cemu/keys.txt" && log d "Linked $bios_folder/cemu/keys.txt to $XDG_DATA_HOME/Cemu/keys.txt"
|
||||
if [[ -e "$bios_folder/cemu/keys.txt" ]]; then
|
||||
rm -rf "$XDG_DATA_HOME/Cemu/keys.txt" && ln -s "$bios_folder/cemu/keys.txt" "$XDG_DATA_HOME/Cemu/keys.txt" && log d "Linked $bios_folder/cemu/keys.txt to $XDG_DATA_HOME/Cemu/keys.txt"
|
||||
fi
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/wiiu/cemu" "$bios_folder/cemu/usr/save"
|
||||
|
@ -376,10 +378,10 @@ prepare_component() {
|
|||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath0" "$roms_folder/wii" "dolphin" "General"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath1" "$roms_folder/gc" "dolphin" "General"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "/var/config/dolphin-emu"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "$XDG_CONFIG_HOME/dolphin-emu"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/dolphin-emu/
|
||||
cp -fvr "$config/dolphin/"* /var/config/dolphin-emu/
|
||||
create_dir -d "$XDG_CONFIG_HOME/dolphin-emu/"
|
||||
cp -fvr "$config/dolphin/"* "$XDG_CONFIG_HOME/dolphin-emu/"
|
||||
set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA"
|
||||
set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
||||
set_setting_value "$dolphinconf" "ISOPath0" "$roms_folder/wii" "dolphin" "General"
|
||||
|
@ -387,27 +389,27 @@ prepare_component() {
|
|||
set_setting_value "$dolphinconf" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR" # TODO: Multi-user one-off
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA" # TODO: Multi-user one-off
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP" # TODO: Multi-user one-off
|
||||
dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots"
|
||||
dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||
dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii"
|
||||
dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures"
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "$XDG_DATA_HOME/dolphin-emu/GC/EUR" # TODO: Multi-user one-off
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "$XDG_DATA_HOME/dolphin-emu/GC/USA" # TODO: Multi-user one-off
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "$XDG_DATA_HOME/dolphin-emu/GC/JAP" # TODO: Multi-user one-off
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/dolphin-emu/ScreenShots"
|
||||
dir_prep "$states_folder/dolphin" "$XDG_DATA_HOME/dolphin-emu/StateSaves"
|
||||
dir_prep "$saves_folder/wii/dolphin" "$XDG_DATA_HOME/dolphin-emu/Wii"
|
||||
dir_prep "$mods_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/Textures"
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "dolphin" "$(get_setting_value "$rd_defaults" "dolphin" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA"
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots"
|
||||
dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves"
|
||||
dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii"
|
||||
dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures"
|
||||
dir_prep "$saves_folder/gc/dolphin/EU" "$XDG_DATA_HOME/dolphin-emu/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/dolphin/US" "$XDG_DATA_HOME/dolphin-emu/GC/USA"
|
||||
dir_prep "$saves_folder/gc/dolphin/JP" "$XDG_DATA_HOME/dolphin-emu/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/dolphin-emu/ScreenShots"
|
||||
dir_prep "$states_folder/dolphin" "$XDG_DATA_HOME/dolphin-emu/StateSaves"
|
||||
dir_prep "$saves_folder/wii/dolphin" "$XDG_DATA_HOME/dolphin-emu/Wii"
|
||||
dir_prep "$mods_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Dolphin" "$XDG_DATA_HOME/dolphin-emu/Load/Textures"
|
||||
set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA"
|
||||
set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA"
|
||||
set_setting_value "$dolphinconf" "ISOPath0" "$roms_folder/wii" "dolphin" "General"
|
||||
|
@ -430,11 +432,11 @@ prepare_component() {
|
|||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "$XDG_CONFIG_HOME/duckstation"
|
||||
else # Single-user actions
|
||||
create_dir -d "/var/config/duckstation/"
|
||||
create_dir -d "$XDG_CONFIG_HOME/duckstation/"
|
||||
create_dir "$saves_folder/psx/duckstation/memcards"
|
||||
cp -fv "$config/duckstation/"* /var/config/duckstation
|
||||
cp -fv "$config/duckstation/"* "$XDG_CONFIG_HOME/duckstation"
|
||||
set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
|
||||
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
||||
|
@ -442,8 +444,8 @@ prepare_component() {
|
|||
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
|
||||
dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures"
|
||||
dir_prep "$states_folder/psx/duckstation" "$XDG_CONFIG_HOME/duckstation/savestates" # This is hard-coded in Duckstation, always needed
|
||||
dir_prep "$texture_packs_folder/Duckstation" "$XDG_CONFIG_HOME/duckstation/textures"
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "cheevos")" "retrodeck" "cheevos"
|
||||
|
@ -457,8 +459,8 @@ prepare_component() {
|
|||
set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards"
|
||||
set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
|
||||
dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
|
||||
dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures"
|
||||
dir_prep "$states_folder/psx/duckstation" "$XDG_CONFIG_HOME/duckstation/savestates" # This is hard-coded in Duckstation, always needed
|
||||
dir_prep "$texture_packs_folder/Duckstation" "$XDG_CONFIG_HOME/duckstation/textures"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -470,16 +472,16 @@ prepare_component() {
|
|||
log i "----------------------"
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
||||
cp -fvr $config/melonds/melonDS.ini "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
||||
cp -fvr "$config/melonds/melonDS.ini" "$multi_user_data_folder/$SteamAppUser/config/melonDS/"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "FirmwarePath" "$bios_folder/firmware.bin" "melonds"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SaveFilePath" "$saves_folder/nds/melonds" "melonds"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SavestatePath" "$states_folder/nds/melonds" "melonds"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "/var/config/melonDS"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "$XDG_CONFIG_HOME/melonDS"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/melonDS/
|
||||
cp -fvr $config/melonds/melonDS.ini /var/config/melonDS/
|
||||
create_dir -d "$XDG_CONFIG_HOME/melonDS/"
|
||||
cp -fvr "$config/melonds/melonDS.ini" "$XDG_CONFIG_HOME/melonDS/"
|
||||
set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
||||
set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
||||
set_setting_value "$melondsconf" "FirmwarePath" "$bios_folder/firmware.bin" "melonds"
|
||||
|
@ -489,10 +491,10 @@ prepare_component() {
|
|||
# Shared actions
|
||||
create_dir "$saves_folder/nds/melonds"
|
||||
create_dir "$states_folder/nds/melonds"
|
||||
dir_prep "$bios_folder" "/var/config/melonDS/bios"
|
||||
dir_prep "$bios_folder" "$XDG_CONFIG_HOME/melonDS/bios"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$bios_folder" "/var/config/melonDS/bios"
|
||||
dir_prep "$bios_folder" "$XDG_CONFIG_HOME/melonDS/bios"
|
||||
set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds"
|
||||
set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds"
|
||||
set_setting_value "$melondsconf" "FirmwarePath" "$bios_folder/firmware.bin" "melonds"
|
||||
|
@ -515,29 +517,29 @@ prepare_component() {
|
|||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "/var/config/PCSX2"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "$XDG_CONFIG_HOME/PCSX2"
|
||||
else # Single-user actions
|
||||
create_dir -d "/var/config/PCSX2/inis"
|
||||
cp -fvr "$config/PCSX2/"* /var/config/PCSX2/inis/
|
||||
create_dir -d "$XDG_CONFIG_HOME/PCSX2/inis"
|
||||
cp -fvr "$config/PCSX2/"* "$XDG_CONFIG_HOME/PCSX2/inis/"
|
||||
set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders"
|
||||
set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders"
|
||||
set_setting_value "$pcsx2conf" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders"
|
||||
set_setting_value "$pcsx2conf" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders"
|
||||
set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
||||
set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders"
|
||||
if [[ -d "$cheats_folder/pcsx2" && "$(ls -A $cheats_folder/pcsx2)" ]]; then
|
||||
if [[ -d "$cheats_folder/pcsx2" && "$(ls -A "$cheats_folder/pcsx2")" ]]; then
|
||||
backup_file="$backups_folder/cheats/pcsx2-$(date +%y%m%d).tar.gz"
|
||||
create_dir "$(dirname $backup_file)"
|
||||
create_dir "$(dirname "$backup_file")"
|
||||
tar -czf "$backup_file" -C "$cheats_folder" pcsx2
|
||||
log i "PCSX2 cheats backed up to $backup_file"
|
||||
fi
|
||||
create_dir -d "$cheats_folder/pcsx2"
|
||||
tar --strip-components=1 -xzf /app/retrodeck/cheats/pcsx2.tar.gz -C "$cheats_folder/pcsx2" --overwrite
|
||||
tar --strip-components=1 -xzf "/app/retrodeck/cheats/pcsx2.tar.gz" -C "$cheats_folder/pcsx2" --overwrite
|
||||
fi
|
||||
# Shared actions
|
||||
create_dir "$saves_folder/ps2/pcsx2/memcards"
|
||||
create_dir "$states_folder/ps2/pcsx2"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "$XDG_CONFIG_HOME/PCSX2/textures"
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "cheevos")" "retrodeck" "cheevos"
|
||||
|
@ -552,7 +554,7 @@ prepare_component() {
|
|||
set_setting_value "$pcsx2conf" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders"
|
||||
set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList"
|
||||
set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures"
|
||||
dir_prep "$texture_packs_folder/PCSX2" "$XDG_CONFIG_HOME/PCSX2/textures"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -579,25 +581,25 @@ prepare_component() {
|
|||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
||||
cp -fv "$config/ppssppsdl/"* "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/ppsspp.ini" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "$XDG_CONFIG_HOME/ppsspp"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/ppsspp/PSP/SYSTEM/
|
||||
cp -fv "$config/ppssppsdl/"* /var/config/ppsspp/PSP/SYSTEM/
|
||||
create_dir -d "$XDG_CONFIG_HOME/ppsspp/PSP/SYSTEM/"
|
||||
cp -fv "$config/ppssppsdl/"* "$XDG_CONFIG_HOME/ppsspp/PSP/SYSTEM/"
|
||||
set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES"
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/PPSSPP_STATE"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/TEXTURES"
|
||||
create_dir -d "$cheats_folder/PPSSPP"
|
||||
dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats"
|
||||
if [[ -d "$cheats_folder/PPSSPP" && "$(ls -A $cheats_folder/PPSSPP)" ]]; then
|
||||
dir_prep "$cheats_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/Cheats"
|
||||
if [[ -d "$cheats_folder/PPSSPP" && "$(ls -A "$cheats_folder"/PPSSPP)" ]]; then
|
||||
backup_file="$backups_folder/cheats/PPSSPP-$(date +%y%m%d).tar.gz"
|
||||
create_dir "$(dirname "$backup_file")"
|
||||
tar -czf "$backup_file" -C "$cheats_folder" PPSSPP
|
||||
log i "PPSSPP cheats backed up to $backup_file"
|
||||
fi
|
||||
tar -xzf /app/retrodeck/cheats/ppsspp.tar.gz -C "$cheats_folder/PPSSPP" --overwrite
|
||||
tar -xzf "/app/retrodeck/cheats/ppsspp.tar.gz" -C "$cheats_folder/PPSSPP" --overwrite
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "ppsspp" "$(get_setting_value "$rd_defaults" "ppsspp" "retrodeck" "cheevos")" "retrodeck" "cheevos"
|
||||
|
@ -605,10 +607,10 @@ prepare_component() {
|
|||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General"
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES"
|
||||
dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats"
|
||||
dir_prep "$saves_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/SAVEDATA"
|
||||
dir_prep "$states_folder/PSP/PPSSPP-SA" "$XDG_CONFIG_HOME/ppsspp/PSP/PPSSPP_STATE"
|
||||
dir_prep "$texture_packs_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/TEXTURES"
|
||||
dir_prep "$cheats_folder/PPSSPP" "$XDG_CONFIG_HOME/ppsspp/PSP/Cheats"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -621,39 +623,41 @@ prepare_component() {
|
|||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/primehack"
|
||||
cp -fvr "$config/primehack/config/"* "$multi_user_data_folder/$SteamAppUser/config/primehack/"
|
||||
set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath0" "$roms_folder/wii" "primehack" "General"
|
||||
set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath1" "$roms_folder/gc" "primehack" "General"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini" "ISOPath0" "$roms_folder/wii" "primehack" "General"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini" "ISOPath1" "$roms_folder/gc" "primehack" "General"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "$XDG_CONFIG_HOME/primehack"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/primehack/
|
||||
cp -fvr "$config/primehack/config/"* /var/config/primehack/
|
||||
create_dir -d "$XDG_CONFIG_HOME/primehack/"
|
||||
cp -fvr "$config/primehack/config/"* "$XDG_CONFIG_HOME/primehack/"
|
||||
set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/wii" "primehack" "General"
|
||||
set_setting_value "$primehackconf" "ISOPath1" "$roms_folder/gc" "primehack" "General"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots"
|
||||
dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves"
|
||||
create_dir /var/data/primehack/Wii/
|
||||
dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii"
|
||||
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
||||
cp -fvr "$config/primehack/data/"* "$multi_user_data_folder/$SteamAppUser/data/primehack/" # this must be done after the dirs are prepared as it copying some "mods"
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "$XDG_DATA_HOME/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "$XDG_DATA_HOME/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "$XDG_DATA_HOME/primehack/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/primehack/ScreenShots"
|
||||
dir_prep "$states_folder/primehack" "$XDG_DATA_HOME/primehack/StateSaves"
|
||||
create_dir "$XDG_DATA_HOME/primehack/Wii/"
|
||||
dir_prep "$saves_folder/wii/primehack" "$XDG_DATA_HOME/primehack/Wii"
|
||||
dir_prep "$mods_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/Textures"
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
cp -fvr "$config/primehack/data/"* "$multi_user_data_folder/$SteamAppUser/data/primehack/" # this must be done after the dirs are prepared as it copying some "mods"
|
||||
fi
|
||||
|
||||
# Reset default preset settings
|
||||
set_setting_value "$rd_conf" "primehack" "$(get_setting_value "$rd_defaults" "primehack" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots"
|
||||
dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves"
|
||||
dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii/"
|
||||
dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures"
|
||||
dir_prep "$saves_folder/gc/primehack/EU" "$XDG_DATA_HOME/primehack/GC/EUR"
|
||||
dir_prep "$saves_folder/gc/primehack/US" "$XDG_DATA_HOME/primehack/GC/USA"
|
||||
dir_prep "$saves_folder/gc/primehack/JP" "$XDG_DATA_HOME/primehack/GC/JAP"
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/primehack/ScreenShots"
|
||||
dir_prep "$states_folder/primehack" "$XDG_DATA_HOME/primehack/StateSaves"
|
||||
dir_prep "$saves_folder/wii/primehack" "$XDG_DATA_HOME/primehack/Wii/"
|
||||
dir_prep "$mods_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/GraphicMods"
|
||||
dir_prep "$texture_packs_folder/Primehack" "$XDG_DATA_HOME/primehack/Load/Textures"
|
||||
set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General"
|
||||
fi
|
||||
fi
|
||||
|
@ -670,15 +674,15 @@ prepare_component() {
|
|||
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
||||
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" "/games/" "$roms_folder/ps3/" "rpcs3"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "/var/config/rpcs3"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "$XDG_CONFIG_HOME/rpcs3"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/rpcs3/
|
||||
cp -fr "$config/rpcs3/"* /var/config/rpcs3/
|
||||
create_dir -d "$XDG_CONFIG_HOME/rpcs3/"
|
||||
cp -fr "$config/rpcs3/"* "$XDG_CONFIG_HOME/rpcs3/"
|
||||
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
|
||||
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf"
|
||||
set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3"
|
||||
dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
|
||||
dir_prep "$states_folder/ps3/rpcs3" "/var/config/rpcs3/savestates"
|
||||
dir_prep "$states_folder/ps3/rpcs3" "$XDG_CONFIG_HOME/rpcs3/savestates"
|
||||
fi
|
||||
# Shared actions
|
||||
create_dir "$bios_folder/rpcs3/dev_hdd0"
|
||||
|
@ -707,29 +711,29 @@ prepare_component() {
|
|||
if [[ $multi_user_mode == "true" ]]; then
|
||||
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
||||
#create_dir "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
|
||||
cp -fv $config/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx"
|
||||
cp -fv "$config/ryujinx/"* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "$XDG_CONFIG_HOME/Ryujinx"
|
||||
else
|
||||
# removing config directory to wipe legacy files
|
||||
log d "Removing \"/var/config/Ryujinx\""
|
||||
rm -rf /var/config/Ryujinx
|
||||
create_dir /var/config/Ryujinx/system
|
||||
cp -fv $config/ryujinx/Config.json $ryujinxconf
|
||||
cp -fvr $config/ryujinx/profiles /var/config/Ryujinx/
|
||||
log d "Removing \"$XDG_CONFIG_HOME/Ryujinx\""
|
||||
rm -rf "$XDG_CONFIG_HOME/Ryujinx"
|
||||
create_dir "$XDG_CONFIG_HOME/Ryujinx/system"
|
||||
cp -fv "$config/ryujinx/Config.json" "$ryujinxconf"
|
||||
cp -fvr "$config/ryujinx/profiles" "$XDG_CONFIG_HOME/Ryujinx/"
|
||||
log d "Replacing placeholders in \"$ryujinxconf\""
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf"
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$ryujinxconf"
|
||||
create_dir "$logs_folder/ryujinx"
|
||||
create_dir "$mods_folder/ryujinx"
|
||||
create_dir "$screenshots_folder/ryujinx"
|
||||
fi
|
||||
fi
|
||||
# if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves
|
||||
# dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system"
|
||||
# dir_prep "$bios_folder/switch/keys" "$XDG_CONFIG_HOME/Ryujinx/system"
|
||||
# fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
log d "Replacing placeholders in \"$ryujinxconf\""
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -747,26 +751,26 @@ prepare_component() {
|
|||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "/var/config/yuzu"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "$XDG_CONFIG_HOME/yuzu"
|
||||
else # Single-user actions
|
||||
create_dir -d /var/config/yuzu/
|
||||
cp -fvr "$config/yuzu/"* /var/config/yuzu/
|
||||
create_dir -d "$XDG_CONFIG_HOME/yuzu/"
|
||||
cp -fvr "$config/yuzu/"* "$XDG_CONFIG_HOME/yuzu/"
|
||||
set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
||||
set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
||||
set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI"
|
||||
set_setting_value "$yuzuconf" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand"
|
||||
dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
|
||||
dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys"
|
||||
dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered"
|
||||
dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log"
|
||||
dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots"
|
||||
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
|
||||
dir_prep "$saves_folder/switch/yuzu/nand" "$XDG_DATA_HOME/yuzu/nand"
|
||||
dir_prep "$saves_folder/switch/yuzu/sdmc" "$XDG_DATA_HOME/yuzu/sdmc"
|
||||
dir_prep "$bios_folder/switch/keys" "$XDG_DATA_HOME/yuzu/keys"
|
||||
dir_prep "$bios_folder/switch/firmware" "$XDG_DATA_HOME/yuzu/nand/system/Contents/registered"
|
||||
dir_prep "$logs_folder/yuzu" "$XDG_DATA_HOME/yuzu/log"
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/yuzu/screenshots"
|
||||
dir_prep "$mods_folder/Yuzu" "$XDG_DATA_HOME/yuzu/load"
|
||||
# removing dead symlinks as they were present in a past version
|
||||
if [ -d $bios_folder/switch ]; then
|
||||
find $bios_folder/switch -xtype l -exec rm {} \;
|
||||
if [ -d "$bios_folder/switch" ]; then
|
||||
find "$bios_folder/switch" -xtype l -exec rm {} \;
|
||||
fi
|
||||
|
||||
# Reset default preset settings
|
||||
|
@ -774,13 +778,13 @@ prepare_component() {
|
|||
set_setting_value "$rd_conf" "yuzu" "$(get_setting_value "$rd_defaults" "yuzu" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys"
|
||||
dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered"
|
||||
dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand"
|
||||
dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc"
|
||||
dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log"
|
||||
dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots"
|
||||
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
|
||||
dir_prep "$bios_folder/switch/keys" "$XDG_DATA_HOME/yuzu/keys"
|
||||
dir_prep "$bios_folder/switch/firmware" "$XDG_DATA_HOME/yuzu/nand/system/Contents/registered"
|
||||
dir_prep "$saves_folder/switch/yuzu/nand" "$XDG_DATA_HOME/yuzu/nand"
|
||||
dir_prep "$saves_folder/switch/yuzu/sdmc" "$XDG_DATA_HOME/yuzu/sdmc"
|
||||
dir_prep "$logs_folder/yuzu" "$XDG_DATA_HOME/yuzu/log"
|
||||
dir_prep "$screenshots_folder" "$XDG_DATA_HOME/yuzu/screenshots"
|
||||
dir_prep "$mods_folder/Yuzu" "$XDG_DATA_HOME/yuzu/load"
|
||||
set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage"
|
||||
set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage"
|
||||
set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI"
|
||||
|
@ -796,31 +800,31 @@ prepare_component() {
|
|||
log i "Prepearing XEMU"
|
||||
log i "------------------------"
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
rm -rf /var/config/xemu
|
||||
rm -rf /var/data/xemu
|
||||
rm -rf "$XDG_CONFIG_HOME/xemu"
|
||||
rm -rf "$XDG_DATA_HOME/xemu"
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/xemu/"
|
||||
cp -fv $config/xemu/xemu.toml "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml"
|
||||
cp -fv "$config/xemu/xemu.toml" "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "screenshot_dir" "'$screenshots_folder'" "xemu" "General"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/config/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/data/xemu/xemu"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "$XDG_CONFIG_HOME/xemu" # Creating config folder in $XDG_CONFIG_HOME for consistentcy and linking back to original location where component will look
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "$XDG_DATA_HOME/xemu/xemu"
|
||||
else # Single-user actions
|
||||
rm -rf /var/config/xemu
|
||||
rm -rf /var/data/xemu
|
||||
dir_prep "/var/config/xemu" "/var/data/xemu/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look
|
||||
cp -fv $config/xemu/xemu.toml "$xemuconf"
|
||||
rm -rf "$XDG_CONFIG_HOME/xemu"
|
||||
rm -rf "$XDG_DATA_HOME/xemu"
|
||||
dir_prep "$XDG_CONFIG_HOME/xemu" "$XDG_DATA_HOME/xemu/xemu" # Creating config folder in $XDG_CONFIG_HOME for consistentcy and linking back to original location where component will look
|
||||
cp -fv "$config/xemu/xemu.toml" "$xemuconf"
|
||||
set_setting_value "$xemuconf" "screenshot_dir" "'$screenshots_folder'" "xemu" "General"
|
||||
set_setting_value "$xemuconf" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$xemuconf" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files"
|
||||
set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files"
|
||||
fi # Shared actions
|
||||
create_dir $saves_folder/xbox/xemu/
|
||||
create_dir "$saves_folder/xbox/xemu/"
|
||||
# Preparing HD dummy Image if the image is not found
|
||||
if [ ! -f $bios_folder/xbox_hdd.qcow2 ]
|
||||
if [ ! -f "$bios_folder/xbox_hdd.qcow2" ]
|
||||
then
|
||||
cp -f "/app/retrodeck/extras/XEMU/xbox_hdd.qcow2" "$bios_folder/xbox_hdd.qcow2"
|
||||
fi
|
||||
|
@ -844,8 +848,8 @@ prepare_component() {
|
|||
log d "Figure out what Vita3k needs for multi-user"
|
||||
else # Single-user actions
|
||||
# NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
|
||||
rm -rf "/var/config/Vita3K"
|
||||
create_dir "/var/config/Vita3K"
|
||||
rm -rf "$XDG_CONFIG_HOME/Vita3K"
|
||||
create_dir "$XDG_CONFIG_HOME/Vita3K"
|
||||
cp -fvr "$config/vita3k/config.yml" "$vita3kconf" # component config
|
||||
cp -fvr "$config/vita3k/ux0" "$bios_folder/Vita3K/" # User config
|
||||
set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k"
|
||||
|
@ -874,51 +878,51 @@ prepare_component() {
|
|||
create_dir "$rdhome/screenshots/mame-sa"
|
||||
create_dir "$saves_folder/mame-sa/diff"
|
||||
|
||||
create_dir "/var/config/ctrlr"
|
||||
create_dir "/var/config/mame/ini"
|
||||
create_dir "/var/config/mame/cfg"
|
||||
create_dir "/var/config/mame/inp"
|
||||
create_dir "$XDG_CONFIG_HOME/ctrlr"
|
||||
create_dir "$XDG_CONFIG_HOME/mame/ini"
|
||||
create_dir "$XDG_CONFIG_HOME/mame/cfg"
|
||||
create_dir "$XDG_CONFIG_HOME/mame/inp"
|
||||
|
||||
create_dir "/var/data/mame/plugin-data"
|
||||
create_dir "/var/data/mame/hash"
|
||||
create_dir "$XDG_DATA_HOME/mame/plugin-data"
|
||||
create_dir "$XDG_DATA_HOME/mame/hash"
|
||||
create_dir "$bios_folder/mame-sa/samples"
|
||||
create_dir "/var/data/mame/assets/artwork"
|
||||
create_dir "/var/data/mame/assets/fonts"
|
||||
create_dir "/var/data/mame/assets/crosshair"
|
||||
create_dir "/var/data/mame/plugins"
|
||||
create_dir "/var/data/mame/assets/language"
|
||||
create_dir "/var/data/mame/assets/software"
|
||||
create_dir "/var/data/mame/assets/comments"
|
||||
create_dir "/var/data/mame/assets/share"
|
||||
create_dir "/var/data/mame/dats"
|
||||
create_dir "/var/data/mame/folders"
|
||||
create_dir "/var/data/mame/assets/cabinets"
|
||||
create_dir "/var/data/mame/assets/cpanel"
|
||||
create_dir "/var/data/mame/assets/pcb"
|
||||
create_dir "/var/data/mame/assets/flyers"
|
||||
create_dir "/var/data/mame/assets/titles"
|
||||
create_dir "/var/data/mame/assets/ends"
|
||||
create_dir "/var/data/mame/assets/marquees"
|
||||
create_dir "/var/data/mame/assets/artwork-preview"
|
||||
create_dir "/var/data/mame/assets/bosses"
|
||||
create_dir "/var/data/mame/assets/logo"
|
||||
create_dir "/var/data/mame/assets/scores"
|
||||
create_dir "/var/data/mame/assets/versus"
|
||||
create_dir "/var/data/mame/assets/gameover"
|
||||
create_dir "/var/data/mame/assets/howto"
|
||||
create_dir "/var/data/mame/assets/select"
|
||||
create_dir "/var/data/mame/assets/icons"
|
||||
create_dir "/var/data/mame/assets/covers"
|
||||
create_dir "/var/data/mame/assets/ui"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/artwork"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/fonts"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/crosshair"
|
||||
create_dir "$XDG_DATA_HOME/mame/plugins"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/language"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/software"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/comments"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/share"
|
||||
create_dir "$XDG_DATA_HOME/mame/dats"
|
||||
create_dir "$XDG_DATA_HOME/mame/folders"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/cabinets"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/cpanel"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/pcb"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/flyers"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/titles"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/ends"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/marquees"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/artwork-preview"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/bosses"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/logo"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/scores"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/versus"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/gameover"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/howto"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/select"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/icons"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/covers"
|
||||
create_dir "$XDG_DATA_HOME/mame/assets/ui"
|
||||
create_dir "$shaders_folder/mame/bgfx/"
|
||||
|
||||
dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore"
|
||||
dir_prep "$saves_folder/mame-sa/hiscore" "$XDG_CONFIG_HOME/mame/hiscore"
|
||||
cp -fvr "$config/mame/mame.ini" "$mameconf"
|
||||
cp -fvr "$config/mame/ui.ini" "$mameuiconf"
|
||||
cp -fvr "$config/mame/default.cfg" "$mamedefconf"
|
||||
cp -fvr "/app/share/mame/bgfx/"* "$shaders_folder/mame/bgfx"
|
||||
|
||||
sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "$mameconf" # one-off as roms folders are a lot
|
||||
sed -i 's#RETRODECKROMSDIR#'"$roms_folder"'#g' "$mameconf" # one-off as roms folders are a lot
|
||||
set_setting_value "$mameconf" "nvram_directory" "$saves_folder/mame-sa/nvram" "mame"
|
||||
set_setting_value "$mameconf" "state_directory" "$states_folder/mame-sa" "mame"
|
||||
set_setting_value "$mameconf" "snapshot_directory" "$screenshots_folder/mame-sa" "mame"
|
||||
|
@ -940,17 +944,17 @@ prepare_component() {
|
|||
log i "Prepearing GZDOOM"
|
||||
log i "----------------------"
|
||||
|
||||
create_dir "/var/config/gzdoom"
|
||||
create_dir "/var/data/gzdoom/audio/midi"
|
||||
create_dir "/var/data/gzdoom/audio/fm_banks"
|
||||
create_dir "/var/data/gzdoom/audio/soundfonts"
|
||||
create_dir "$XDG_CONFIG_HOME/gzdoom"
|
||||
create_dir "$XDG_DATA_HOME/gzdoom/audio/midi"
|
||||
create_dir "$XDG_DATA_HOME/gzdoom/audio/fm_banks"
|
||||
create_dir "$XDG_DATA_HOME/gzdoom/audio/soundfonts"
|
||||
create_dir "$bios_folder/gzdoom"
|
||||
|
||||
cp -fvr "$config/gzdoom/gzdoom.ini" "/var/config/gzdoom"
|
||||
cp -fvr "$config/gzdoom/gzdoom.ini" "$XDG_CONFIG_HOME/gzdoom"
|
||||
|
||||
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKHOMEDIR#'"$rdhome"'#g' "$XDG_CONFIG_HOME/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKROMSDIR#'"$roms_folder"'#g' "$XDG_CONFIG_HOME/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
sed -i 's#RETRODECKSAVESDIR#'"$saves_folder"'#g' "$XDG_CONFIG_HOME/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
fi
|
||||
|
||||
if [[ "$component" =~ ^(portmaster|all)$ ]]; then
|
||||
|
@ -960,14 +964,14 @@ prepare_component() {
|
|||
log i "Prepearing PortMaster"
|
||||
log i "----------------------"
|
||||
|
||||
rm -rf "/var/data/PortMaster"
|
||||
unzip "/app/retrodeck/PortMaster.zip" -d "/var/data/"
|
||||
cp -f "/var/data/PortMaster/retrodeck/PortMaster.txt" "/var/data/PortMaster/PortMaster.sh"
|
||||
chmod +x "/var/data/PortMaster/PortMaster.sh"
|
||||
rm -rf "$XDG_DATA_HOME/PortMaster"
|
||||
unzip "/app/retrodeck/PortMaster.zip" -d "$XDG_DATA_HOME/"
|
||||
cp -f "$XDG_DATA_HOME/PortMaster/retrodeck/PortMaster.txt" "$XDG_DATA_HOME/PortMaster/PortMaster.sh"
|
||||
chmod +x "$XDG_DATA_HOME/PortMaster/PortMaster.sh"
|
||||
rm -f "$roms_folder/portmaster/PortMaster.sh"
|
||||
install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh"
|
||||
create_dir "/var/data/PortMaster/config/"
|
||||
cp "$config/portmaster/config.json" "/var/data/PortMaster/config/config.json"
|
||||
install -Dm755 "$XDG_DATA_HOME/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh"
|
||||
create_dir "$XDG_DATA_HOME/PortMaster/config/"
|
||||
cp "$config/portmaster/config.json" "$XDG_DATA_HOME/PortMaster/config/config.json"
|
||||
|
||||
fi
|
||||
|
||||
|
@ -977,14 +981,14 @@ prepare_component() {
|
|||
log i "Prepearing Ruffle"
|
||||
log i "----------------------"
|
||||
|
||||
rm -rf "/var/config/ruffle"
|
||||
rm -rf "$XDG_CONFIG_HOME/ruffle"
|
||||
|
||||
# Ruffle creates a directory with the full rom paths in it, so this is necessary
|
||||
# TODO: be aware of this when multi user support will be integrated for this component
|
||||
dir_prep "$saves_folder/flash" "/var/data/ruffle/SharedObjects/localhost/$roms_folder/flash"
|
||||
dir_prep "$saves_folder/flash" "$XDG_DATA_HOME/ruffle/SharedObjects/localhost/$roms_folder/flash"
|
||||
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$saves_folder/flash" "/var/data/ruffle/SharedObjects/localhost/$roms_folder/flash"
|
||||
dir_prep "$saves_folder/flash" "$XDG_DATA_HOME/ruffle/SharedObjects/localhost/$roms_folder/flash"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
|
|
@ -114,14 +114,14 @@ build_preset_list_options() {
|
|||
|
||||
preset="$1"
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
pretty_preset_name=$(echo "$pretty_preset_name" | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
current_preset_settings=()
|
||||
current_enabled_systems=()
|
||||
current_disabled_systems=()
|
||||
changed_systems=()
|
||||
changed_presets=()
|
||||
all_systems=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' "$rd_conf" | sed '/^$/d')
|
||||
|
||||
while IFS= read -r config_line
|
||||
do
|
||||
|
@ -133,8 +133,8 @@ build_preset_list_options() {
|
|||
elif [[ "$system_value" == "false" ]]; then
|
||||
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
|
||||
fi
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
echo "$system_value"^"$(make_name_pretty $system_name)"^"$system_name" >> "$godot_current_preset_settings"
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty "$system_name")" "$system_name")
|
||||
echo "$system_value"^"$(make_name_pretty "$system_name")"^"$system_name" >> "$godot_current_preset_settings"
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
}
|
||||
|
||||
|
@ -252,7 +252,7 @@ build_preset_config() {
|
|||
log d "Applying presets: $presets_being_changed for system: $system_being_changed"
|
||||
for current_preset in $presets_being_changed
|
||||
do
|
||||
local preset_section=$(sed -n '/\['"$current_preset"'\]/, /\[/{ /\['"$current_preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
local preset_section=$(sed -n '/\['"$current_preset"'\]/, /\[/{ /\['"$current_preset"'\]/! { /\[/! p } }' "$rd_conf" | sed '/^$/d')
|
||||
while IFS= read -r system_line
|
||||
do
|
||||
local read_system_name=$(get_setting_name "$system_line")
|
||||
|
@ -376,7 +376,7 @@ build_retrodeck_current_presets() {
|
|||
do
|
||||
if [[ (! -z "$current_setting_line") && (! "$current_setting_line" == "#"*) && (! "$current_setting_line" == "[]") ]]; then # If the line has a valid entry in it
|
||||
if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header
|
||||
local current_section=$(sed 's^[][]^^g' <<< $current_setting_line) # Remove brackets from section name
|
||||
local current_section=$(sed 's^[][]^^g' <<< "$current_setting_line") # Remove brackets from section name
|
||||
else
|
||||
if [[ ! ("$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" || "$current_section" == "cheevos" || "$current_section" == "cheevos_hardcore") ]]; then
|
||||
local system_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line
|
||||
|
@ -387,7 +387,7 @@ build_retrodeck_current_presets() {
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
done < $rd_conf
|
||||
done < "$rd_conf"
|
||||
}
|
||||
|
||||
fetch_all_presets() {
|
||||
|
@ -417,7 +417,7 @@ fetch_all_presets() {
|
|||
presets+=("$preset")
|
||||
if $pretty_output; then
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
pretty_preset_name=$(echo "$pretty_preset_name" | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
pretty_presets+=("$pretty_preset_name")
|
||||
fi
|
||||
fi
|
||||
|
@ -433,7 +433,7 @@ fetch_all_presets() {
|
|||
presets+=("$preset")
|
||||
if $pretty_output; then
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
pretty_preset_name=$(echo "$pretty_preset_name" | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
pretty_presets+=("$pretty_preset_name")
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -389,8 +389,8 @@ find_emulator() {
|
|||
while IFS= read -r line; do
|
||||
command_path=$(echo "$line" | sed -n 's/.*<entry>\(.*\)<\/entry>.*/\1/p')
|
||||
# Check if the command specified by the variable 'command_path' exists and is executable
|
||||
if [ -x "$(command -v $command_path)" ]; then
|
||||
found_path=$command_path
|
||||
if [ -x "$(command -v "$command_path")" ]; then
|
||||
found_path="$command_path"
|
||||
break
|
||||
fi
|
||||
done <<< "$(echo "$emulator_section" | xmllint --xpath "//rule[@type='systempath']/entry" - 2>/dev/null)"
|
||||
|
@ -400,7 +400,7 @@ find_emulator() {
|
|||
while IFS= read -r line; do
|
||||
command_path=$(echo "$line" | sed -n 's/.*<entry>\(.*\)<\/entry>.*/\1/p')
|
||||
if [ -x "$command_path" ]; then
|
||||
found_path=$command_path
|
||||
found_path="$command_path"
|
||||
break
|
||||
fi
|
||||
done <<< "$(echo "$emulator_section" | xmllint --xpath "//rule[@type='staticpath']/entry" - 2>/dev/null)"
|
||||
|
@ -466,4 +466,4 @@ find_system_by_extension() {
|
|||
|
||||
# Return the detected system
|
||||
echo "$detected_system"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,166 +2,157 @@
|
|||
|
||||
steam_sync() {
|
||||
|
||||
# This function looks for favorited games in all ES-DE gamelists and builds a manifest of any found.
|
||||
# It then compares the new manifest to the existing one (if it exists) and runs an SRM sync if there are differences
|
||||
# If all favorites were removed from ES-DE, it will remove all existing entries from Steam and then remove the favorites manifest entirely
|
||||
# If there is no existing manifest, this is a first time sync and games are synced automatically
|
||||
# USAGE: steam_sync
|
||||
# This function looks for favorited games in all ES-DE gamelists and builds a manifest of any found.
|
||||
# It then compares the new manifest to the existing one (if it exists) and runs an SRM sync if there are differences
|
||||
# If all favorites were removed from ES-DE, it will remove all existing entries from Steam and then remove the favorites manifest entirely
|
||||
# If there is no existing manifest, this is a first time sync and games are synced automatically
|
||||
# USAGE: steam_sync
|
||||
|
||||
log "i" "Starting Steam Sync"
|
||||
create_dir $steamsync_folder
|
||||
log "i" "Starting Steam Sync"
|
||||
create_dir "$steamsync_folder"
|
||||
|
||||
if [ ! -f "$srm_path" ]; then
|
||||
log "e" "Steam ROM Manager configuration not initialized! Initializing now."
|
||||
prepare_component "reset" "steam-rom-manager"
|
||||
if [ ! -f "$srm_path" ]; then
|
||||
log "e" "Steam ROM Manager configuration not initialized! Initializing now."
|
||||
prepare_component "reset" "steam-rom-manager"
|
||||
fi
|
||||
|
||||
# Prepare fresh log file
|
||||
echo > "$srm_log"
|
||||
|
||||
# Prepare new favorites manifest
|
||||
echo "[]" > "${retrodeck_favorites_file}.new" # Initialize favorites JSON file
|
||||
|
||||
# Static definitions for all JSON objects
|
||||
target="flatpak"
|
||||
launch_command="run net.retrodeck.retrodeck"
|
||||
startIn=""
|
||||
|
||||
for system_path in "$rdhome/ES-DE/gamelists/"*/; do
|
||||
# Skip the CLEANUP folder
|
||||
if [[ "$system_path" == *"/CLEANUP/"* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Prepare fresh log file
|
||||
echo > "$srm_log"
|
||||
|
||||
# Prepare new favorites manifest
|
||||
echo "[]" > "${retrodeck_favorites_file}.new" # Initialize favorites JSON file
|
||||
|
||||
# Static definitions for all JSON objects
|
||||
target="flatpak"
|
||||
launch_command="run net.retrodeck.retrodeck"
|
||||
startIn=""
|
||||
|
||||
for system_path in "$rdhome/ES-DE/gamelists/"*/; do
|
||||
# Skip the CLEANUP folder
|
||||
if [[ "$system_path" == *"/CLEANUP/"* ]]; then
|
||||
continue
|
||||
fi
|
||||
# Skip folders with no gamelists
|
||||
if [[ ! -f "${system_path}gamelist.xml" ]]; then
|
||||
continue
|
||||
fi
|
||||
system=$(basename "$system_path") # Extract the folder name as the system name
|
||||
gamelist="${system_path}gamelist.xml"
|
||||
system_favorites=$(xml sel -t -m "//game[favorite='true']" -v "path" -n "$gamelist")
|
||||
while read -r game; do
|
||||
if [[ -n "$game" ]]; then # Avoid empty lines created by xmlstarlet
|
||||
local game="${game#./}" # Remove leading ./
|
||||
if [[ -f "$roms_folder/$system/$game" ]]; then # Validate file exists and isn't a stale ES-DE entry for a removed file
|
||||
# Construct launch options with the rom path in quotes, to handle spaces
|
||||
local launchOptions="$launch_command -s $system \"$roms_folder/$system/$game\""
|
||||
jq --arg title "${game%.*}" --arg target "$target" --arg launchOptions "$launchOptions" \
|
||||
'. += [{"title": $title, "target": $target, "launchOptions": $launchOptions}]' "${retrodeck_favorites_file}.new" > "${retrodeck_favorites_file}.tmp" \
|
||||
&& mv "${retrodeck_favorites_file}.tmp" "${retrodeck_favorites_file}.new"
|
||||
fi
|
||||
fi
|
||||
done <<< "$system_favorites"
|
||||
done
|
||||
|
||||
if [[ -f "$retrodeck_favorites_file" && -f "${retrodeck_favorites_file}.new" ]]; then
|
||||
# Look for favorites removed between steam_sync runs, if any
|
||||
removed_items=$(jq -n \
|
||||
--slurpfile source "$retrodeck_favorites_file" \
|
||||
--slurpfile target "${retrodeck_favorites_file}.new" \
|
||||
'[$source[0][] | select(. as $item | ($target[0] | map(. == $item) | any | not))]')
|
||||
# Skip folders with no gamelists
|
||||
if [[ ! -f "${system_path}gamelist.xml" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check if there are any missing objects
|
||||
if [[ "$(echo "$removed_items" | jq 'length')" -gt 0 ]]; then
|
||||
log d "Some favorites were removed between sync, writing to $retrodeck_removed_favorites"
|
||||
echo "$removed_items" > "$retrodeck_removed_favorites"
|
||||
fi
|
||||
|
||||
# Decide if sync needs to happen
|
||||
if [[ -f "$retrodeck_favorites_file" ]]; then # If an existing favorites manifest exists
|
||||
if [[ ! "$(cat "${retrodeck_favorites_file}.new" | jq 'length')" -gt 0 ]]; then # If all favorites were removed from all gamelists, meaning new manifest is empty
|
||||
log i "No favorites were found in current ES-DE gamelists, removing old entries"
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
# Remove old entries
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tRemoving unfavorited games from Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
# Remove old entries
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
fi
|
||||
# Old manifest cleanup
|
||||
rm "$retrodeck_favorites_file"
|
||||
rm "${retrodeck_favorites_file}.new"
|
||||
else # The new favorites manifest is not empty
|
||||
if cmp -s "$retrodeck_favorites_file" "${retrodeck_favorites_file}.new"; then # See if the favorites manifests are the same, meaning there were no changes
|
||||
log i "ES-DE favorites have not changed, no need to sync again"
|
||||
rm "${retrodeck_favorites_file}.new"
|
||||
else
|
||||
log d "New and old manifests are different, running sync"
|
||||
if [[ -f "$retrodeck_removed_favorites" ]]; then # If some favorites were removed between syncs
|
||||
log d "Some favorites removed between syncs, removing unfavorited games"
|
||||
# Load removed favorites as manifest and run SRM remove
|
||||
mv "$retrodeck_removed_favorites" "$retrodeck_favorites_file"
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tRemoving unfavorited games from Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Load new favorites manifest as games to add during sync
|
||||
mv "${retrodeck_favorites_file}.new" "$retrodeck_favorites_file"
|
||||
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
# Add new favorites manifest
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tSyncing favorite games with Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
fi
|
||||
fi
|
||||
system=$(basename "$system_path") # Extract the folder name as the system name
|
||||
gamelist="${system_path}gamelist.xml"
|
||||
system_favorites=$(xml sel -t -m "//game[favorite='true']" -v "path" -n "$gamelist")
|
||||
while read -r game; do
|
||||
if [[ -n "$game" ]]; then # Avoid empty lines created by xmlstarlet
|
||||
local game="${game#./}" # Remove leading ./
|
||||
if [[ -f "$roms_folder/$system/$game" ]]; then # Validate file exists and isn't a stale ES-DE entry for a removed file
|
||||
# Construct launch options with the rom path in quotes, to handle spaces
|
||||
local launchOptions="$launch_command -s $system \"$roms_folder/$system/$game\""
|
||||
jq --arg title "${game%.*}" --arg target "$target" --arg launchOptions "$launchOptions" \
|
||||
'. += [{"title": $title, "target": $target, "launchOptions": $launchOptions}]' "${retrodeck_favorites_file}.new" > "${retrodeck_favorites_file}.tmp" \
|
||||
&& mv "${retrodeck_favorites_file}.tmp" "${retrodeck_favorites_file}.new"
|
||||
fi
|
||||
elif [[ "$(cat "${retrodeck_favorites_file}.new" | jq 'length')" -gt 0 ]]; then # No existing favorites manifest was found, so check if new manifest has entries
|
||||
log d "First time building favorites manifest, running sync"
|
||||
fi
|
||||
done <<< "$system_favorites"
|
||||
done
|
||||
|
||||
if [[ -f "$retrodeck_favorites_file" && -f "${retrodeck_favorites_file}.new" ]]; then
|
||||
# Look for favorites removed between steam_sync runs, if any
|
||||
removed_items=$(jq -n \
|
||||
--slurpfile source "$retrodeck_favorites_file" \
|
||||
--slurpfile target "${retrodeck_favorites_file}.new" \
|
||||
'[$source[0][] | select(. as $item | ($target[0] | map(. == $item) | any | not))]')
|
||||
fi
|
||||
|
||||
if [[ -f "$retrodeck_favorites_file" && -f "${retrodeck_favorites_file}.new" ]]; then
|
||||
# Look for new favorites added between steam_sync runs, if any
|
||||
added_items=$(jq -n \
|
||||
--slurpfile source "${retrodeck_favorites_file}.new" \
|
||||
--slurpfile target "$retrodeck_favorites_file" \
|
||||
'[$source[0][] | select(. as $item | ($target[0] | map(. == $item) | any | not))]')
|
||||
fi
|
||||
|
||||
# Check if there are any missing objects
|
||||
if [[ "$(echo "$removed_items" | jq 'length')" -gt 0 ]]; then
|
||||
log d "Some favorites were removed between sync, writing to $retrodeck_removed_favorites"
|
||||
echo "$removed_items" > "$retrodeck_removed_favorites"
|
||||
fi
|
||||
|
||||
# Check if any new favorites were added
|
||||
if [[ "$(echo "$added_items" | jq 'length')" -gt 0 ]]; then
|
||||
log d "Some new favorites were added between sync, writing to $retrodeck_added_favorites"
|
||||
echo "$added_items" > "$retrodeck_added_favorites"
|
||||
fi
|
||||
|
||||
# Decide if sync needs to happen
|
||||
if [[ -f "$retrodeck_favorites_file" ]]; then # If an existing favorites manifest exists
|
||||
if [[ ! "$(cat "${retrodeck_favorites_file}.new" | jq 'length')" -gt 0 ]]; then # If all favorites were removed from all gamelists, meaning new manifest is empty
|
||||
log i "No favorites were found in current ES-DE gamelists, removing old entries"
|
||||
steam_sync_remove
|
||||
# Old manifest cleanup
|
||||
rm "$retrodeck_favorites_file"
|
||||
rm "${retrodeck_favorites_file}.new"
|
||||
else # The new favorites manifest is not empty
|
||||
if cmp -s "$retrodeck_favorites_file" "${retrodeck_favorites_file}.new"; then # See if the favorites manifests are the same, meaning there were no changes
|
||||
log i "ES-DE favorites have not changed, no need to sync again"
|
||||
rm "${retrodeck_favorites_file}.new"
|
||||
else
|
||||
log d "New and old manifests are different, running sync"
|
||||
if [[ -f "$retrodeck_removed_favorites" ]]; then # If some favorites were removed between syncs
|
||||
log d "Some favorites removed between syncs, removing unfavorited games"
|
||||
# Load removed favorites as manifest and run SRM remove
|
||||
mv "$retrodeck_removed_favorites" "$retrodeck_favorites_file"
|
||||
steam_sync_remove
|
||||
fi
|
||||
if [[ -f "$retrodeck_added_favorites" ]]; then # If some new favorites were added between syncs
|
||||
log d "Some new favorites added between syncs, adding new favorited games"
|
||||
# Load added favorites as manifest and run SRM add
|
||||
mv "$retrodeck_added_favorites" "$retrodeck_favorites_file"
|
||||
steam_sync_add
|
||||
fi
|
||||
|
||||
# Make new favorites manifest the current one
|
||||
mv "${retrodeck_favorites_file}.new" "$retrodeck_favorites_file"
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
# Add new favorites manifest
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tSyncing favorite games with Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
# Add new favorites manifest
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
elif [[ "$(cat "${retrodeck_favorites_file}.new" | jq 'length')" -gt 0 ]]; then # No existing favorites manifest was found, so check if new manifest has entries
|
||||
log d "First time building favorites manifest, running sync"
|
||||
mv "${retrodeck_favorites_file}.new" "$retrodeck_favorites_file"
|
||||
steam_sync_add
|
||||
fi
|
||||
}
|
||||
|
||||
steam_sync_add() {
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tAdding new favorited games to Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager add >> "$srm_log" 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
steam_sync_remove() {
|
||||
if [[ "$CONFIGURATOR_GUI" == "zenity" ]]; then
|
||||
(
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tRemoving unfavorited games from Steam</b></span>\n\n<b>NOTE: </b>This operation may take some time depending on the size of your library.\nFeel free to leave this in the background and switch to another application.\n\n" \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
else
|
||||
steam-rom-manager disable --names "RetroDECK Launcher" >> "$srm_log" 2>&1
|
||||
steam-rom-manager enable --names "RetroDECK Steam Sync" >> "$srm_log" 2>&1
|
||||
steam-rom-manager remove >> "$srm_log" 2>&1
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<project_license>GPL-3.0</project_license>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<releases>
|
||||
<release version="0.9.2b" date="2025-03-26">
|
||||
<release version="0.9.2b" date="2025-03-29">
|
||||
<url>https://github.com/RetroDECK/RetroDECK/releases/tag/0.9.2b</url>
|
||||
<description>
|
||||
<p>New Additions:</p>
|
||||
|
|
|
@ -14,6 +14,8 @@ Arguments:
|
|||
--configurator \t Starts the RetroDECK Configurator
|
||||
--compress-one <file> \t Compresses target file to a compatible format
|
||||
--compress-all <format> \t Compresses all supported games into a compatible format.\n\t\t\t\t\t\t Available formats are \"chd\", \"zip\", \"rvz\" and \"all\"
|
||||
--steam-sync \t Run the Steam ROM Manager sync process to update all ES-DE favorites in Steam
|
||||
--repair-paths \t Reconfigure broken folder locations in RetroDECK without a full reset
|
||||
--reset <component> \t Reset RetroDECK or one or more component/emulator configurations to default values. WARNING: no confirmation prompt
|
||||
--factory-reset \t Factory Reset, triggers the initial setup WARNING: no confirmation prompt
|
||||
--test-upgrade <version> \t Test upgrading RetroDECK to a specific version, developer use only
|
||||
|
@ -109,6 +111,10 @@ while [[ $# -gt 0 ]]; do
|
|||
cli_compress_all_games "$2"
|
||||
shift 2
|
||||
;;
|
||||
--steam-sync)
|
||||
steam_sync
|
||||
exit 0
|
||||
;;
|
||||
--repair-paths)
|
||||
repair_paths
|
||||
exit 0
|
||||
|
|
|
@ -77,6 +77,7 @@ rd_zenity --progress --no-cancel --pulsate --auto-close \
|
|||
# - Add RetroDECK to Steam
|
||||
# - M3U Multi-File Validator
|
||||
# - Repair RetroDECK paths
|
||||
# - Change logging level
|
||||
# - Ponzu: Remove Yuzu
|
||||
# - Ponzu: Remove Citra
|
||||
# - Steam Sync
|
||||
|
@ -156,7 +157,7 @@ configurator_welcome_dialog() {
|
|||
;;
|
||||
|
||||
"Steam Sync" )
|
||||
configurator_steam_sync
|
||||
configurator_steam_sync_dialog
|
||||
;;
|
||||
|
||||
"Developer Options" )
|
||||
|
@ -444,6 +445,7 @@ configurator_tools_dialog() {
|
|||
"Add RetroDECK to Steam" "Add RetroDECK shortcut to Steam. Steam restart required."
|
||||
"M3U Multi-File Validator" "Verify the proper structure of multi-file or multi-disc games."
|
||||
"Repair RetroDECK Paths" "Repair RetroDECK folder path configs for unexpectedly missing folders."
|
||||
"Change Logging Level" "Change the RetroDECK logging level, for debugging purposes"
|
||||
)
|
||||
|
||||
if [[ $(get_setting_value "$rd_conf" "kiroi_ponzu" "retrodeck" "options") == "true" ]]; then
|
||||
|
@ -608,6 +610,46 @@ configurator_tools_dialog() {
|
|||
configurator_tools_dialog
|
||||
;;
|
||||
|
||||
"Change Logging Level" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Change Logging Level" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Informational" "The default, only logs important information." \
|
||||
"Warnings" "Additionally log warnings." \
|
||||
"Errors" "Additionally log warnings and errors." \
|
||||
"Debug" "Log everything, may generate a lot of logs!." \)
|
||||
|
||||
case $choice in
|
||||
|
||||
"Informational" )
|
||||
log i "Configurator: Changing logging level to \"$choice\""
|
||||
set_setting_value "$rd_conf" "logging_level" "info" "retrodeck" "options"
|
||||
;;
|
||||
|
||||
"Warnings" )
|
||||
log i "Configurator: Changing logging level to \"$choice\""
|
||||
set_setting_value "$rd_conf" "logging_level" "warn" "retrodeck" "options"
|
||||
;;
|
||||
|
||||
"Errors" )
|
||||
log i "Configurator: Changing logging level to \"$choice\""
|
||||
set_setting_value "$rd_conf" "logging_level" "error" "retrodeck" "options"
|
||||
;;
|
||||
|
||||
"Debug" )
|
||||
log i "Configurator: Changing logging level to \"$choice\""
|
||||
set_setting_value "$rd_conf" "logging_level" "debug" "retrodeck" "options"
|
||||
;;
|
||||
|
||||
"" ) # No selection made or Back button clicked
|
||||
log i "Configurator: going back"
|
||||
;;
|
||||
|
||||
esac
|
||||
configurator_tools_dialog
|
||||
;;
|
||||
|
||||
"Ponzu: Remove Yuzu" )
|
||||
ponzu_remove "yuzu"
|
||||
;;
|
||||
|
@ -980,7 +1022,7 @@ configurator_portmaster_toggle_dialog(){
|
|||
--title "RetroDECK Configurator - PortMaster Visibility" \
|
||||
--text="PortMaster is now <span foreground='$purple'><b>hidden</b></span> in ES-DE.\nPlease refresh your game list or restart RetroDECK to see the changes.\n\nIn order to launch PortMaster, you can access it from:\n<span foreground='$purple'><b>Configurator -> Open Component -> PortMaster</b></span>."
|
||||
else # User clicked "Cancel"
|
||||
configurator_tools_dialog
|
||||
configurator_global_presets_and_settings_dialog
|
||||
fi
|
||||
else
|
||||
rd_zenity --question \
|
||||
|
@ -996,10 +1038,10 @@ configurator_portmaster_toggle_dialog(){
|
|||
--title "RetroDECK Configurator - PortMaster Visibility" \
|
||||
--text="PortMaster is now <span foreground='$purple'><b>visible</b></span> in ES-DE.\nPlease refresh your game list or restart RetroDECK to see the changes."
|
||||
else # User clicked "Cancel"
|
||||
configurator_tools_dialog
|
||||
configurator_global_presets_and_settings_dialog
|
||||
fi
|
||||
fi
|
||||
configurator_tools_dialog
|
||||
configurator_global_presets_and_settings_dialog
|
||||
}
|
||||
|
||||
# This function checks and verifies BIOS files for RetroDECK.
|
||||
|
@ -1217,32 +1259,71 @@ configurator_about_retrodeck_dialog() {
|
|||
esac
|
||||
}
|
||||
|
||||
configurator_steam_sync() {
|
||||
if [[ $(get_setting_value "$rd_conf" "steam_sync" retrodeck "options") == "true" ]]; then
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization is <span foreground='$purple'><b>currently enabled</b></span>.\nDisabling Steam Sync will remove all of your favorites from Steam at the next Steam startup.\n\nDo you want to continue?\n\nTo re-add them, just reenable Steam Sync then and restart Steam."
|
||||
configurator_steam_sync_dialog() {
|
||||
|
||||
if [ $? == 0 ] # User clicked "Yes"
|
||||
then
|
||||
configurator_disable_steam_sync
|
||||
else # User clicked "Cancel"
|
||||
configurator_welcome_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam synchronization is <span foreground='$purple'><b>currently disabled</b></span>. Do you want to enable it?\n\nAll the games marked as favorites will be synchronized with Steam ROM Manager.\nRemember to restart Steam each time to see the changes.\n\n<span foreground='$purple'><b>NOTE: games with unusual characters such as '/\{}<>* might break the sync, please refer to the Wiki for more info.</b></span>"
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Steam Sync" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Enable/Disable Automatic Steam Sync" "Enable or disable automatic Steam Sync, where ES-DE favorites will be synced to Steam when RetroDECK quits." \
|
||||
"Manual Steam Sync" "Perform a one-time manual sync of ES-DE favorites to Steam." \
|
||||
"Purge Steam Sync Shortcuts" "Perform a full Steam ROM Manager purge of all favorites, in case things have gotten messed up." )
|
||||
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
configurator_enable_steam_sync
|
||||
case $choice in
|
||||
|
||||
"Enable/Disable Automatic Steam Sync" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
if [[ $(get_setting_value "$rd_conf" "steam_sync" retrodeck "options") == "true" ]]; then
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization is <span foreground='$purple'><b>currently enabled</b></span>.\nDisabling Steam Sync will remove all of your favorites from Steam at the next Steam startup.\n\nDo you want to continue?\n\nTo re-add them, just reenable Steam Sync then and restart Steam."
|
||||
|
||||
if [ $? == 0 ] # User clicked "Yes"
|
||||
then
|
||||
configurator_disable_steam_sync
|
||||
fi
|
||||
else
|
||||
configurator_welcome_dialog
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam synchronization is <span foreground='$purple'><b>currently disabled</b></span>. Do you want to enable it?\n\nAll the games marked as favorites will be synchronized with Steam ROM Manager.\nRemember to restart Steam each time to see the changes.\n\n<span foreground='$purple'><b>NOTE: games with unusual characters such as '/\{}<>* might break the sync, please refer to the Wiki for more info.</b></span>"
|
||||
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
configurator_enable_steam_sync
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
configurator_steam_sync_dialog
|
||||
;;
|
||||
|
||||
"Manual Steam Sync" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
export CONFIGURATOR_GUI="zenity"
|
||||
steam_sync
|
||||
configurator_steam_sync_dialog
|
||||
;;
|
||||
|
||||
"Purge Steam Sync Shortcuts" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Configurator - Steam Sync" "Are you sure you want to remove all Steam ROM Manager changes, including all RetroDECK shortcuts from Steam?" ) == "true" ]]; then
|
||||
(
|
||||
steam-rom-manager nuke
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Removing all RetroDECK Steam Sync information" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="<span foreground='$purple'><b>\t\t\t\tRemoving all RetroDECK-related data from Steam</b></span>\n\nPlease wait..." \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
fi
|
||||
configurator_steam_sync_dialog
|
||||
;;
|
||||
|
||||
"" ) # No selection made or Back button clicked
|
||||
log i "Configurator: going back"
|
||||
configurator_welcome_dialog
|
||||
;;
|
||||
|
||||
esac
|
||||
}
|
||||
|
||||
configurator_enable_steam_sync() {
|
||||
|
@ -1253,7 +1334,6 @@ configurator_enable_steam_sync() {
|
|||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization enabled."
|
||||
configurator_welcome_dialog
|
||||
}
|
||||
|
||||
configurator_disable_steam_sync() {
|
||||
|
@ -1276,7 +1356,6 @@ configurator_disable_steam_sync() {
|
|||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization disabled and shortcuts removed, restart Steam to apply the changes."
|
||||
configurator_welcome_dialog
|
||||
}
|
||||
|
||||
configurator_version_history_dialog() {
|
||||
|
|
Loading…
Reference in a new issue