Skip to content

functions/tools_scripts/

Contains scripts for auxiliary tools (frontends, utilities). Each follows the same pattern as emulator scripts.

Pattern

Every tool script implements:

Function Description
[tool]_install() Downloads and installs the tool
[tool]_uninstall() Removes the tool
[tool]_is_installed() Checks if tool exists
[tool]_init() Configures the tool
[tool]_install_init() Calls install + init

Example: Steam ROM Manager (SRM)

from core.all import *

def srm_install():
    set_msg("Installing Steam Rom Manager")

    if system == "linux":
        type = "AppImage"
        destination = emus_folder
    if system.startswith("win"):
        type = "exe"
        destination = tools_path
    if system == "darwin":
        type = "dmg"
        destination = emus_folder

    repo = get_latest_release_gh("SteamGridDB/steam-rom-manager", type, "portable")
    install_emu("srm", repo, type, destination)

def srm_uninstall():
    if system == "linux":
        uninstall_emu("Steam Rom Manager", "AppImage")
    if system.startswith("win"):
        uninstall_emu("srm", "dir")
    if system == "darwin":
        uninstall_emu("Steam Rom Manager", "app")

def srm_is_installed():
    if system == "linux":
        return (tools_path / "Steam Rom Manager.AppImage").exists()
    if system.startswith("win"):
        return (tools_path / "srm.exe").exists()
    if system == "darwin":
        return (emus_folder / "Steam Rom Manager.app").exists()

def srm_init():
    set_msg("Setting up Steam Rom Manager")

    # Copy configs
    copy_setting_dir("common/srm/", srm_path)
    copy_and_set_settings_file("common/srm/userData/userSettings.json", f"{srm_path}/userData")
    copy_and_set_settings_file("common/srm/userData/userConfigurations.json", f"{srm_path}/userData")

    # Add parsers for each emulator
    srm_add_custom_parsers()

    # Windows needs path conversion
    if system.startswith("win"):
        srm_windows_paths()

def srm_windows_paths():
    # Convert Unix paths to Windows paths in config files
    sed('/', '\\\\', f"{srm_path}/userData/userConfigurations.json")

def srm_install_init():
    srm_install()
    srm_init()

def srm_add_custom_parsers():
    # Finds all functions ending with _add_custom_parser and calls them
    funcs = [name for name in globals() if name.endswith('_add_custom_parser')]
    for name in sorted(funcs):
        globals()[name]()

Available Tools

Script Description
emudeck_srm.py Steam ROM Manager
emudeck_esde.py EmulationStation-DE
emudeck_retro_library.py Artwork downloader for Decky
emudeck_compressor.py CHD compression tool
emudeck_cloudsync_local.py Cloud sync with rclone
emudeck_migration.py Migration between installations
emudeck_copy_games.py Copy games between devices
emudeck_update_emus.py Update emulators
emudeck_plugins.py Plugin management
emudeck_bios_checker.py BIOS verification