mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-04-10 19:15:12 +00:00
Compare commits
18 commits
248942b175
...
78dff2d028
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78dff2d028 | ||
|
|
b223ceecef | ||
|
|
13d74e8d06 | ||
|
|
bd62eecf89 | ||
|
|
5457950780 | ||
|
|
fa6dc9c960 | ||
|
|
fc9b0b846a | ||
|
|
c8c84c3043 | ||
|
|
cb86324fe6 | ||
|
|
eabd37fa1b | ||
|
|
b531b3638f | ||
|
|
6b6bc710cf | ||
|
|
a53cf917a3 | ||
|
|
6030fa57b8 | ||
|
|
bef5b4ecb8 | ||
|
|
34b9b927fa | ||
|
|
9d27347817 | ||
|
|
20a61c1d3f |
|
|
@ -842,7 +842,8 @@
|
|||
"description": "RetroDECK Framework",
|
||||
"name": "RetroDECK",
|
||||
"url": "https://retrodeck.net/",
|
||||
"cli-arg": "--version"
|
||||
"cli-arg": "--version",
|
||||
"logs": "$XDG_CONFIG_HOME/retrodeck/logs/retrodeck.log"
|
||||
},
|
||||
"retroarch": {
|
||||
"description": "Libretro Multi-emulator Frontend",
|
||||
|
|
@ -851,6 +852,7 @@
|
|||
"launch": "retroarch",
|
||||
"cli-arg": "--version",
|
||||
"system": "retroarch",
|
||||
"logs": "$logs_folder/retroarch/retroarch.log",
|
||||
"properties": [
|
||||
{
|
||||
"cheevos": true,
|
||||
|
|
@ -1045,6 +1047,7 @@
|
|||
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/",
|
||||
"system": "flash",
|
||||
"launch": "ruffle-rdwrapper.sh",
|
||||
"logs": "$XDG_CACHE_HOME/ruffle/ruffle.log",
|
||||
"cli-arg": ""
|
||||
},
|
||||
"melonds": {
|
||||
|
|
@ -1103,6 +1106,7 @@
|
|||
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/",
|
||||
"system": "psvita",
|
||||
"launch": "Vita3K",
|
||||
"logs": "$XDG_CACHE_HOME/Vita3K/vita3k.log",
|
||||
"cli-arg": ""
|
||||
},
|
||||
"rpcs3": {
|
||||
|
|
@ -1113,6 +1117,7 @@
|
|||
"launch": "rpcs3",
|
||||
"cli-arg": "--version",
|
||||
"launch-override": "cd $(dirname $game) && rpcs3 $game",
|
||||
"logs": "$XDG_CACHE_HOME/rpcs3/RPCS3.log",
|
||||
"properties": [
|
||||
{
|
||||
"ask_to_exit": true
|
||||
|
|
@ -1143,6 +1148,7 @@
|
|||
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/",
|
||||
"launch": "dolphin-emu-wrapper",
|
||||
"cli-arg": "--version",
|
||||
"logs": "$XDG_DATA_HOME/dolphin-emu/dolphin.log",
|
||||
"system": [
|
||||
"gc",
|
||||
"wii"
|
||||
|
|
@ -1163,6 +1169,7 @@
|
|||
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/",
|
||||
"launch": "primehack-wrapper",
|
||||
"cli-arg": "--version",
|
||||
"logs": "$XDG_DATA_HOME/primehack/Logs/dolphin.log",
|
||||
"system": [
|
||||
"wii"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -539,7 +539,7 @@ get_steam_user() {
|
|||
log i "Username: $steam_username"
|
||||
log i "Name: $steam_prettyname"
|
||||
|
||||
if [[ $steam_sync == "true" ]]; then
|
||||
if [[ -d "$srm_userdata" ]]; then
|
||||
populate_steamuser_srm
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -273,6 +273,7 @@ fi
|
|||
# Steam ROM Manager user files and paths
|
||||
|
||||
steamsync_folder="$rdhome/.sync" # Folder containing favorites manifest for SRM
|
||||
srm_userdata="$XDG_CONFIG_HOME/steam-rom-manager/userData" # SRM userdata folder, holding
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1243,6 +1243,7 @@ quit_retrodeck() {
|
|||
|
||||
# if steam sync is on do the magic
|
||||
if [[ $(get_setting_value "$rd_conf" "steam_sync" "retrodeck" "options") == "true" ]]; then
|
||||
export CONFIGURATOR_GUI="zenity"
|
||||
steam_sync
|
||||
fi
|
||||
log i "Shutting down RetroDECK's framework"
|
||||
|
|
|
|||
|
|
@ -817,6 +817,7 @@ post_update() {
|
|||
if [[ "$execute_all" == "true" || " ${selected_choices[@]} " =~ " Refresh Steam Sync " ]]; then
|
||||
log i "User agreed to refresh Steam Sync"
|
||||
steam-rom-manager nuke
|
||||
export CONFIGURATOR_GUI="zenity"
|
||||
steam_sync
|
||||
fi
|
||||
|
||||
|
|
@ -846,6 +847,7 @@ post_update() {
|
|||
if [[ "$execute_all" == "true" || " ${selected_choices[@]} " =~ " Refresh Steam Sync " ]]; then
|
||||
log i "User agreed to refresh Steam Sync"
|
||||
steam-rom-manager nuke
|
||||
export CONFIGURATOR_GUI="zenity"
|
||||
steam_sync
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ prepare_component() {
|
|||
if [[ "$1" == "--factory-reset" ]]; then
|
||||
log i "User requested full RetroDECK reset"
|
||||
rm -f "$lockfile" && log d "Lockfile removed"
|
||||
retrodeck
|
||||
fi
|
||||
|
||||
action="$1"
|
||||
|
|
@ -128,7 +127,6 @@ prepare_component() {
|
|||
log i "Prepearing Steam ROM Manager"
|
||||
log i "-----------------------------"
|
||||
|
||||
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"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ steam_sync() {
|
|||
log "i" "Starting Steam Sync"
|
||||
create_dir "$steamsync_folder"
|
||||
|
||||
if [ ! -f "$srm_path" ]; then
|
||||
if [[ ! -d "$srm_userdata" ]]; then
|
||||
log "e" "Steam ROM Manager configuration not initialized! Initializing now."
|
||||
prepare_component "reset" "steam-rom-manager"
|
||||
fi
|
||||
|
|
@ -38,17 +38,27 @@ steam_sync() {
|
|||
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
|
||||
# Use AWK instead of xmlstarlet because ES-DE can create invalid XML structures in some cases
|
||||
system_favorites=$(awk 'BEGIN { RS="</game>"; FS="\n" }
|
||||
/<favorite>true<\/favorite>/ {
|
||||
if (match($0, /<path>([^<]+)<\/path>/, arr))
|
||||
print arr[1]
|
||||
}' "$gamelist")
|
||||
while read -r game_path; do
|
||||
local game="${game_path#./}" # 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 game_title=$(awk -v search_path="$game_path" 'BEGIN { RS="</game>"; FS="\n" }
|
||||
/<path>/ {
|
||||
if (match($0, /<path>([^<]+)<\/path>/, path) && path[1] == search_path) {
|
||||
if (match($0, /<name>([^<]+)<\/name>/, name))
|
||||
print name[1]
|
||||
}
|
||||
}' "$gamelist")
|
||||
local launchOptions="$launch_command -s $system \"$roms_folder/$system/$game\""
|
||||
jq --arg title "$game_title" --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
|
||||
done <<< "$system_favorites"
|
||||
done
|
||||
|
|
@ -105,7 +115,7 @@ steam_sync() {
|
|||
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
|
||||
steam_sync_add
|
||||
fi
|
||||
|
||||
# Make new favorites manifest the current one
|
||||
|
|
|
|||
|
|
@ -73,27 +73,32 @@
|
|||
<project_license>GPL-3.0</project_license>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<releases>
|
||||
<release version="0.9.2b" date="2025-03-29">
|
||||
<release version="0.9.2b" date="2025-04-09">
|
||||
<url>https://github.com/RetroDECK/RetroDECK/releases/tag/0.9.2b</url>
|
||||
<description>
|
||||
<p>New Additions:</p>
|
||||
<ul>
|
||||
<li>BACKUP: Added backup options for core user data and full/partial backups</li>
|
||||
<li>STEAM SYNC: Improved Zenity Configurator with new backup and steam_sync integration</li>
|
||||
<li>STEAM SYNC: Added functionality for SRM manifest sync, including handling unfavorited games</li>
|
||||
<li>BACKUP: backup is now prompted before any RetroDECK upgrade</li>
|
||||
<li>STEAM SYNC: refactored to be more lightweight</li>
|
||||
<li>STEAM SYNC: Added manual sync mode</li>
|
||||
<li>STEAM SYNC: Added full steam resync option</li>
|
||||
<li>STEAM SYNC: Added purge option</li>
|
||||
<li>STEAM SYNC: Added purge option</li>
|
||||
<li>BACKUP: Introduced optional userdata backup during post-update process</li>
|
||||
<li>FRAMEWORK: New function for repairing RetroDECK paths without needing a full reset</li>
|
||||
<li>COMPRESSOR: Updated Zenity Configurator for better multi-file compression logic</li>
|
||||
<li>COMPRESSOR: New functionality for compression cleanup argument in both single-file and multi-file modes</li>
|
||||
<li>CLI: Added optional "repair-paths" CLI option for fixing paths</li>
|
||||
<li>CONFIGURATOR: added Debug level choice menu</li>
|
||||
<li>CONFIGURATOR: Improved Zenity Configurator with new backup and steam_sync integration</li>
|
||||
<li>THEME: Added a new brighter background option</li>
|
||||
<li>THEME: Added system status indicators: WiFi, Bluetooth and battery status</li>
|
||||
</ul>
|
||||
<p>Updates:</p>
|
||||
<ul>
|
||||
<li>ES-DE: to version 3.2.0</li>
|
||||
<li>RetroDECK Theme: added compatiblity with 3.2.0 and added new features: new background option and system status indicators</li>
|
||||
<li>RetroDECK Theme: added compatiblity with 3.2.0</li>
|
||||
</ul>
|
||||
<p>Bug fixes:</p>
|
||||
<ul>
|
||||
|
|
@ -115,6 +120,7 @@
|
|||
<li>FRAMEWORK: Enhanced `find_compatible_games` logic and spelling improvements</li>
|
||||
<li>FRAMEWORK: Refined `sanitize()` function to be moved to `other_functions.sh` for better code organization</li>
|
||||
<li>BACKUP: Updated `backup_retrodeck_userdata` to support a more efficient "core" backup option</li>
|
||||
<li>API: added a new API engine useful to talk with external applications or the Godot Configurator</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
|
|
|||
|
|
@ -438,8 +438,8 @@ modules:
|
|||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
sha256: RETRODECKDOLPHINLATEST
|
||||
url: https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/download/master-13192425010/RetroDECK-Artifact.tar.gz
|
||||
sha256: 8d0e892cecaa0eb7968f11e8d22333093737a009be73d1c541d278cd9805ec4a
|
||||
|
||||
# PRIMEHACK
|
||||
# https://github.com/RetroDECK/io.github.shiiion.primehack
|
||||
|
|
@ -461,8 +461,8 @@ modules:
|
|||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/io.github.shiiion.primehack/releases/latest/download/RetroDECK-primehack-Artifact.tar.gz
|
||||
sha256: RETRODECKPRIMEHACKLATEST
|
||||
url: https://github.com/RetroDECK/io.github.shiiion.primehack/releases/download/master-230724.27/RetroDECK-primehack-Artifact.tar.gz
|
||||
sha256: 7cd20690cea20284b6b272092f79cadf6a7ca9d5b9df7cb5985cb090ff47731d
|
||||
|
||||
# Universal Dynamic Input for Dolphin and Primehack
|
||||
- name: universal_dynamic_input
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ while [[ $# -gt 0 ]]; do
|
|||
if [[ -n "$2" ]]; then
|
||||
if [[ "$2" == "purge" ]]; then
|
||||
steam-rom-manager nuke
|
||||
rm -f "$retrodeck_favorites_file"
|
||||
else
|
||||
echo "Unknown argument \"$2\", please check the CLI help for more information."
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ rd_zenity --progress --no-cancel --pulsate --auto-close \
|
|||
# - Change Logging Level
|
||||
# - Ponzu: Remove Yuzu
|
||||
# - Ponzu: Remove Citra
|
||||
# - Steam Sync
|
||||
# - Steam Tools
|
||||
# - Add RetroDECK to Steam
|
||||
# - Automatic Steam Sync
|
||||
# - Manual Steam Sync
|
||||
|
|
@ -118,7 +118,7 @@ configurator_welcome_dialog() {
|
|||
"Open Component" "Manually launch and configure settings for each component, system or emulator (for advanced users)."
|
||||
"Reset Components" "Reset a specific component, system, emulator or all of RetroDECK."
|
||||
"Tools" "Various tools for verifying files and BIOS, and installing optional features."
|
||||
"Steam Sync" "Setup synchronization of all ES-DE favorited games with Steam via SRM."
|
||||
"Steam Tools" "Setup synchronization of all ES-DE favorited games with Steam, or add a RetroDECK shortcut to Steam."
|
||||
"Data Management" "Move RetroDECK folders between internal storage, SD card, or a custom location, and clean out empty ROM folders or rebuild all ROM folders."
|
||||
"About RetroDECK" "View additional information, including patch notes and credits."
|
||||
)
|
||||
|
|
@ -159,8 +159,8 @@ configurator_welcome_dialog() {
|
|||
configurator_about_retrodeck_dialog
|
||||
;;
|
||||
|
||||
"Steam Sync" )
|
||||
configurator_steam_sync_dialog
|
||||
"Steam Tools" )
|
||||
configurator_steam_tools_dialog
|
||||
;;
|
||||
|
||||
"Developer Options" )
|
||||
|
|
@ -425,6 +425,7 @@ configurator_open_emulator_dialog() {
|
|||
|
||||
if [[ -n "$emulator" ]]; then
|
||||
open_component "$emulator"
|
||||
configurator_open_emulator_dialog
|
||||
else
|
||||
configurator_welcome_dialog
|
||||
fi
|
||||
|
|
@ -627,7 +628,7 @@ configurator_data_management_dialog() {
|
|||
|
||||
local rc=$?
|
||||
if [[ $rc == "0" ]] && [[ -z "$choice" ]]; then # User selected Cancel button
|
||||
configurator_tools_dialog
|
||||
configurator_data_management_dialog
|
||||
else
|
||||
case $choice in
|
||||
"Core Backup" )
|
||||
|
|
@ -670,7 +671,7 @@ configurator_data_management_dialog() {
|
|||
;;
|
||||
esac
|
||||
|
||||
configurator_tools_dialog
|
||||
configurator_data_management_dialog
|
||||
fi
|
||||
;;
|
||||
|
||||
|
|
@ -1254,9 +1255,9 @@ configurator_about_retrodeck_dialog() {
|
|||
esac
|
||||
}
|
||||
|
||||
configurator_steam_sync_dialog() {
|
||||
configurator_steam_tools_dialog() {
|
||||
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Steam Sync" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Steam Tools" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Add RetroDECK to Steam" "Add RetroDECK to Steam." \
|
||||
|
|
@ -1277,7 +1278,7 @@ configurator_steam_sync_dialog() {
|
|||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="Adding RetroDECK to Steam, please wait..." \
|
||||
--pulsate --width=500 --height=150 --auto-close --no-cancel
|
||||
configurator_tools_dialog
|
||||
configurator_steam_tools_dialog
|
||||
;;
|
||||
|
||||
"Automatic Steam Sync" )
|
||||
|
|
@ -1296,21 +1297,22 @@ configurator_steam_sync_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 favorited games will be synced with Steam ROM Manager.\nRemember to restart Steam to see the changes.\n\n<span foreground='$purple'><b>NOTE: Games with unusual characters in their names like '/\{}<>* might break the sync. Check the RetroDECK Wiki for more information.</b></span>"
|
||||
--text="Steam synchronization is <span foreground='$purple'><b>currently disabled</b></span>. Do you want to enable it?\n\nAll favorited games will be immediately synced with Steam ROM Manager.\nWhile this setting is enabled, RetroDECK check your ES-DE favorites when you quit the program, and update Steam using Steam ROM Manager if there were any changes.\n\nRemember to restart Steam to see the changes.\n\n<span foreground='$purple'><b>NOTE: Games with unusual characters in their names like '/\{}<>* might break the sync. Check the RetroDECK Wiki for more information.</b></span>"
|
||||
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
configurator_enable_steam_sync
|
||||
fi
|
||||
fi
|
||||
configurator_steam_sync_dialog
|
||||
configurator_steam_tools_dialog
|
||||
;;
|
||||
|
||||
"Manual Steam Sync" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_generic_dialog "RetroDeck Configurator - Manual Steam Sync" "RetroDECK will now look for any ES-DE favorites and sync them to Steam, if needed.\n\nIf Steam Sync has been run before and no favorites have been added or removed, you will be returned to the Steam Tools menu.\nIf changes are needed, you will see a progress dialog during the process."
|
||||
export CONFIGURATOR_GUI="zenity"
|
||||
steam_sync
|
||||
configurator_steam_sync_dialog
|
||||
configurator_steam_tools_dialog
|
||||
;;
|
||||
|
||||
"Purge Steam Sync Shortcuts" )
|
||||
|
|
@ -1318,6 +1320,7 @@ configurator_steam_sync_dialog() {
|
|||
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
|
||||
rm -f "$retrodeck_favorites_file"
|
||||
) |
|
||||
rd_zenity --progress \
|
||||
--title="Removing all RetroDECK Steam Sync information" \
|
||||
|
|
@ -1325,7 +1328,7 @@ configurator_steam_sync_dialog() {
|
|||
--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
|
||||
configurator_steam_tools_dialog
|
||||
;;
|
||||
|
||||
"" ) # No selection made or Back button clicked
|
||||
|
|
|
|||
Loading…
Reference in a new issue