Skip to content

Instantly share code, notes, and snippets.

@udance4ever
Last active August 21, 2026 19:59
Show Gist options
  • Select an option

  • Save udance4ever/1f2be1e3bd8b9cd36097a22d957c9b9c to your computer and use it in GitHub Desktop.

Select an option

Save udance4ever/1f2be1e3bd8b9cd36097a22d957c9b9c to your computer and use it in GitHub Desktop.
enhanced ES-DE find rules to bridge Batocera ES parity on macOS
<?xml version="1.0"?>
<!-- This is the ES-DE find rules configuration file for macOS -->
<!-- Aug 21, 2026 (baseline: Feb 10, 2025)
- searches /Applications/#emu (help reduce clutter in /Applications)
- support for custom `emulatorLauncher` to bridge ES-DE gaps with Batocera ES
- added a wide variety of emulators ported to macOS
- support for launching Steam games natively, thru Whisky, and prelim support for Sikarugir
- NOTE: assumes /userdata is a valid path (mimics Batocera Linux dir structure)
-->
<ruleList>
<emulator name="EMULATORLAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/emulatorLauncher</entry>
</rule>
</emulator>
<emulator name="OS-SHELL">
<!-- Operating system shell -->
<rule type="systempath">
<entry>zsh</entry>
<entry>bash</entry>
</rule>
</emulator>
<emulator name="OPEN">
<!-- macOS open -->
<rule type="systempath">
<entry>/usr/bin/open</entry>
</rule>
</emulator>
<!-- $$ not working
<emulator name="LOCALE">
<rule type="staticpath">
<entry>/usr/bin/locale</entry>
</rule>
</emulator>
-->
<emulator name="RETROARCH">
<rule type="staticpath">
<entry>/Applications/#emu/RetroArch.app/Contents/MacOS/RetroArch</entry>
<entry>/Applications/RetroArch.app/Contents/MacOS/RetroArch</entry>
</rule>
</emulator>
<core name="RETROARCH">
<rule type="corepath">
<entry>/userdata/system/configs/retroarch/cores</entry>
<!-- RetroArch >= v1.9.2 -->
<entry>~/Library/Application Support/RetroArch/cores</entry>
<!-- RetroArch < v1.9.2 -->
<entry>/Applications/RetroArch.app/Contents/Resources/cores</entry>
</rule>
</core>
<emulator name="AETHERSX2">
<!-- Sony PlayStation 2 emulator AetherSX2 -->
<rule type="staticpath">
<entry>/Applications/#emu/AetherSX2.app/Contents/MacOS/AetherSX2</entry>
<entry>/Applications/AetherSX2.app/Contents/MacOS/AetherSX2</entry>
</rule>
</emulator>
<emulator name="ARES">
<!-- Multi-system emulator ares -->
<rule type="staticpath">
<entry>/Applications/#emu/ares.app/Contents/MacOS/ares</entry>
<entry>/Applications/ares.app/Contents/MacOS/ares</entry>
</rule>
</emulator>
<emulator name="ASTRIS">
<!-- Nintendo Switch emulator Astris (based on Ryujinx for Apple Silicon) -->
<rule type="staticpath">
<entry>/Applications/#emu/Astris.app/Contents/MacOS/Astris</entry>
<entry>/Applications/Astris.app/Contents/MacOS/Astris</entry>
</rule>
</emulator>
<emulator name="AZAHAR">
<!-- Nintendo 3DS emulator Azahar -->
<rule type="staticpath">
<entry>/Applications/#emu/Azahar.app/Contents/MacOS/azahar</entry>
<entry>/Applications/Azahar.app/Contents/MacOS/azahar</entry>
</rule>
</emulator>
<emulator name="BASILISKII">
<!-- Macintosh 68k emulator Basilisk II -->
<rule type="staticpath">
<entry>/Applications/#emu/BasiliskII.app/Contents/MacOS/BasiliskII</entry>
<entry>/Applications/BasiliskII.app/Contents/MacOS/BasiliskII</entry>
</rule>
</emulator>
<emulator name="CEMU">
<!-- Nintendo Wii U emulator Cemu -->
<rule type="staticpath">
<entry>/Applications/#emu/Cemu.app/Contents/MacOS/Cemu</entry>
<entry>/Applications/Cemu.app/Contents/MacOS/Cemu</entry>
</rule>
</emulator>
<emulator name="CITRA">
<!-- Nintendo 3DS emulator Citra -->
<rule type="staticpath">
<entry>/Applications/#emu/citra-qt.app/Contents/MacOS/citra-qt</entry>
<entry>/Applications/citra-qt.app/Contents/MacOS/citra-qt</entry>
<entry>/Applications/Citra/nightly/citra-qt.app/Contents/MacOS/citra-qt</entry>
<entry>/Applications/Citra/canary/citra-qt.app/Contents/MacOS/citra-qt</entry>
</rule>
</emulator>
<emulator name="3DS_LAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/3dsLaunch</entry>
</rule>
</emulator>
<emulator name="DEMUL">
<rule type="staticpath">
<entry>C:\emulators\demul\demul.exe</entry>
</rule>
</emulator>
<emulator name="DOLPHIN">
<!-- Nintendo GameCube and Wii emulator Dolphin -->
<rule type="staticpath">
<entry>/Applications/#emu/Dolphin.app/Contents/MacOS/Dolphin</entry>
<entry>/Applications/Dolphin.app/Contents/MacOS/Dolphin</entry>
</rule>
</emulator>
<emulator name="DOLPHIN-TRIFORCE">
<!-- Triforce emulator -->
<rule type="staticpath">
<entry>/Applications/#emu/Dolphin (Triforce).app/Contents/MacOS/Dolphin</entry>
</rule>
</emulator>
<emulator name="EDEN">
<!-- Nintendo Switch emulator eden -->
<rule type="staticpath">
<entry>/Applications/#emu/eden.app/Contents/MacOS/eden</entry>
<entry>/Applications/eden.app/Contents/MacOS/eden</entry>
</rule>
</emulator>
<emulator name="FLYCAST">
<!-- Sega Dreamcast emulator Flycast -->
<rule type="staticpath">
<entry>/Applications/#emu/Flycast.app/Contents/MacOS/Flycast</entry>
<entry>/Applications/Flycast.app/Contents/MacOS/Flycast</entry>
</rule>
</emulator>
<emulator name="GSPLUS">
<!-- Apple IIGS emulator Apple GSplus -->
<rule type="staticpath">
<entry>/Applications/#emu/GSplus.app/Contents/MacOS/gsplus</entry>
<entry>/Applications/GSplus.app/Contents/MacOS/gsplus</entry>
</rule>
</emulator>
<emulator name="GSPLUS_LAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/apple2gsLaunch</entry>
</rule>
</emulator>
<emulator name="HYPSEUS-SINGE">
<!-- Hypseus Singe, fork of arcade LaserDisc emulator Daphne -->
<rule type="staticpath">
<entry>/userdata/system/configs/hypseus-singe/bin/hypseus.bin</entry>
</rule>
</emulator>
<emulator name="HYPSEUS-SINGE_LAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/hypseusLaunch</entry>
</rule>
</emulator>
<emulator name="LIME3DS">
<!-- Nintendo 3DS emulator Lime3DS -->
<rule type="staticpath">
<entry>/Applications/#emu/lime3ds.app/Contents/MacOS/lime3ds</entry>
<entry>/Applications/lime3ds.app/Contents/MacOS/lime3ds</entry>
<entry>/Applications/lime3ds-gui.app/Contents/MacOS/lime3ds-gui</entry>
<entry>/Applications/lime-qt.app/Contents/MacOS/lime-qt</entry>
</rule>
</emulator>
<emulator name="LINDBERGH">
<!-- Lindbergh Loader -->
<rule type="staticpath">
<entry>C:\emulators\linuxloader\linuxloader.exe</entry>
</rule>
</emulator>
<config name="LINDBERGH">
<rule type="staticpath">
<!-- ideally Windows path
<entry>C:\emulators\linuxloader</entry>
-->
<entry>/userdata/system/whisky-bottles/#emu 2/drive_c/emulators/linuxloader</entry>
</rule>
</config>
<emulator name="MELONDS">
<!-- Nintendo DS and DSi emulator melonDS -->
<rule type="staticpath">
<entry>/Applications/#emu/melonDS.app/Contents/MacOS/melonDS</entry>
<entry>/Applications/melonDS.app/Contents/MacOS/melonDS</entry>
</rule>
</emulator>
<emulator name="MODEL2EMU">
<rule type="staticpath">
<entry>C:\emulators\model2emu\EMULATOR.EXE</entry>
</rule>
</emulator>
<emulator name="OPENBOR">
<rule type="staticpath">
<!-- "damaged"
<entry>/Applications/#emu/OpenBOR Frontend Launcher.app/Contents/MacOS/OpenBORFrontend</entry>
<entry>/Applications/OpenBOR Frontend Launcher.app/Contents/MacOS/OpenBORFrontend</entry>
-->
<entry>C:\emulators\OpenBOR\OpenBOR.exe</entry>
</rule>
</emulator>
<config name="OPENBOR">
<rule type="staticpath">
<!-- ideally Windows path
<entry>C:\emulators\OpenBOR</entry>
-->
<entry>/userdata/system/whisky-bottles/#emu 2/drive_c/emulators/OpenBOR</entry>
</rule>
</config>
<emulator name="PCSX2">
<!-- Sony PlayStation 2 emulator PCSX2 -->
<rule type="staticpath">
<entry>/Applications/#emu/PCSX2.app/Contents/MacOS/PCSX2</entry>
<entry>/Applications/PCSX2.app/Contents/MacOS/PCSX2</entry>
</rule>
</emulator>
<emulator name="PLAY!">
<!-- Sony PlayStation 2 [and Namco 2x6] emulator Play! -->
<rule type="staticpath">
<entry>/Applications/#emu/Play.app/Contents/MacOS/Play</entry>
<entry>/Applications/Play.app/Contents/MacOS/Play</entry>
</rule>
</emulator>
<emulator name="PPSSPP">
<!-- Sony PlayStation Portable emulator PPSSPP -->
<rule type="staticpath">
<entry>/Applications/#emu/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL</entry>
<entry>/Applications/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL</entry>
<entry>/opt/homebrew/bin/ppsspp</entry>
<entry>/usr/local/bin/ppsspp</entry>
</rule>
</emulator>
<emulator name="PPSSPPGOLD">
<!-- Sony PlayStation Portable emulator PPSSPP Gold -->
<rule type="staticpath">
<entry>/Applications/#emu/PPSSPPGold.app/Contents/MacOS/PPSSPPGold</entry>
<entry>/Applications/PPSSPPGold.app/Contents/MacOS/PPSSPPGold</entry>
</rule>
</emulator>
<emulator name="REDREAM">
<!-- Sega Dreamcast emulator Redream -->
<rule type="staticpath">
<entry>/Applications/#emu/redream.app/Contents/MacOS/redream</entry>
<entry>/Applications/redream.app/Contents/MacOS/redream</entry>
</rule>
</emulator>
<emulator name="RPCS3">
<!-- Sony PlayStation 3 emulator RPCS3 -->
<rule type="staticpath">
<entry>/Applications/#emu/RPCS3.app/Contents/MacOS/rpcs3</entry>
<entry>/Applications/RPCS3.app/Contents/MacOS/rpcs3</entry>
</rule>
</emulator>
<emulator name="RPCS3_INTEL">
<!-- Sony PlayStation 3 emulator RPCS3 (x86)-->
<rule type="staticpath">
<entry>/Applications/#emu/RPCS3 (Intel).app/Contents/MacOS/rpcs3</entry>
<entry>/Applications/RPCS3 (Intel).app/Contents/MacOS/rpcs3</entry>
</rule>
</emulator>
<emulator name="RUFFLE">
<!-- Adobe Flash player Ruffle -->
<rule type="staticpath">
<entry>/Applications/#emu/Ruffle.app/Contents/MacOS/ruffle</entry>
<entry>/Applications/Ruffle.app/Contents/MacOS/ruffle</entry>
</rule>
</emulator>
<emulator name="RYUJINX">
<!-- Nintendo Switch emulator Ryujinx -->
<rule type="staticpath">
<entry>/Applications/#emu/Ryujinx.app/Contents/MacOS/Ryujinx</entry>
<entry>/Applications/Ryujinx.app/Contents/MacOS/Ryujinx</entry>
</rule>
</emulator>
<emulator name="RYUBING">
<!-- Nintendo Switch emulator Ryujinx (fork) -->
<rule type="staticpath">
<entry>/Applications/#emu/Ryubing.app/Contents/MacOS/Ryujinx</entry>
<entry>/Applications/Ryubing.app/Contents/MacOS/Ryyjinx</entry>
</rule>
</emulator>
<emulator name="SCUMMVM">
<!-- ScummVM game engine -->
<rule type="staticpath">
<entry>/Applications/#emu/ScummVM.app/Contents/MacOS/scummvm</entry>
<entry>/Applications/ScummVM.app/Contents/MacOS/scummvm</entry>
<entry>/opt/homebrew/bin/scummvm</entry>
<entry>/usr/local/bin/scummvm</entry>
</rule>
</emulator>
<emulator name="SDLPOP">
<rule type="staticpath">
<entry>/userdata/system/configs/sdlpop/prince</entry>
</rule>
</emulator>
<emulator name="SHADPS4">
<rule type="staticpath">
<entry>/userdata/system/configs/shadps4/bin/shadps4</entry>
<entry>/Applications/#emu/shadps4.app/Contents/MacOS/shadps4</entry>
<entry>/Applications/shadps4.app/Contents/MacOS/shadps4</entry>
</rule>
</emulator>
<emulator name="SIMCOUPE">
<!-- SAM Coupé emulator SimCoupé -->
<rule type="staticpath">
<entry>/Applications/#emu/SimCoupe.app/Contents/MacOS/SimCoupe</entry>
<entry>/Applications/SimCoupe.app/Contents/MacOS/SimCoupe</entry>
</rule>
</emulator>
<emulator name="SOLARUS">
<!-- Solarus game engine -->
<rule type="staticpath">
<entry>/opt/homebrew/bin/solarus-run</entry>
<entry>/usr/local/bin/solarus-run</entry>
<!-- doesn't work (workaround below)
<entry>/Applications/#emu/Solarus Launcher.app/Contents/MacOS/solarus-run</entry>
-->
<entry>/Applications/#emu/Solarus Launcher.app/Contents/Resources/solarus-run</entry>
<entry>/Applications/Solarus Launcher.app/Contents/Resources/solarus-run</entry>
</rule>
</emulator>
<emulator name="STEAM">
<rule type="staticpath">
<entry>C:\Program Files (x86)\Steam\steam.exe</entry>
</rule>
</emulator>
<emulator name="STEAMSIKARUGIR">
<rule type="staticpath">
<entry>/userdata/Bottles/SteamSikrugir.app/Contents/MacOS/launcher</entry>
</rule>
</emulator>
<emulator name="SUPERMODEL">
<!-- Sega Model 3 emulator Supermodel -->
<!-- official support in v3.5 -->
<rule type="staticpath">
<entry>/opt/homebrew/bin/supermodel</entry>
<entry>/usr/local/bin/supermodel</entry>
<!-- requires
<command label="Supermodel">%STARTDIR%=%EMUDIR%/.. %EMULATOR_SUPERMODEL% %ROM%</command>
-->
<entry>/userdata/system/configs/supermodel/bin/supermodel</entry>
</rule>
</emulator>
<config name="SUPERMODEL">
<rule type="staticpath">
<entry>/opt/homebrew/var/supermodel</entry>
</rule>
</config>
<emulator name="VISUAL-PINBALL">
<!-- Pinball simulator Visual Pinball -->
<rule type="staticpath">
<entry>/Applications/#emu/VPinballX_GL.app/Contents/MacOS/VPinballX_GL</entry>
<entry>/Applications/VPinballX_GL.app/Contents/MacOS/VPinballX_GL</entry>
</rule>
</emulator>
<emulator name="VITA3K">
<!-- Sony Playstation Vita emulator Vita3K -->
<rule type="staticpath">
<entry>/Applications/#emu/Vita3K.app/Contents/MacOS/Vita3K</entry>
<entry>/Applications/Vita3K.app/Contents/MacOS/Vita3K</entry>
</rule>
</emulator>
<emulator name="VITA3K_LAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/psvitaLaunch</entry>
</rule>
</emulator>
<emulator name="XEMU">
<!-- Microsoft Xbox emulator xemu -->
<rule type="staticpath">
<entry>/Applications/#emu/xemu.app/Contents/MacOS/xemu</entry>
<entry>/Applications/xemu.app/Contents/MacOS/xemu</entry>
</rule>
</emulator>
<emulator name="XEMU_LAUNCHER">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/xboxLaunch</entry>
</rule>
</emulator>
<emulator name="XENIA">
<!-- Microsoft Xbox 360 emulator xenia -->
<rule type="staticpath">
<entry>/Applications/#emu/Xenia (Canary).app/Contents/MacOS/xenia</entry>
<entry>/Applications/Xenia (Canary).app/Contents/MacOS/xenia</entry>
<entry>/Applications/Xenia.app/Contents/MacOS/xenia</entry>
</rule>
</emulator>
<emulator name="XENIA-EDGE">
<!-- macOS port Microsoft Xbox 360 emulator xenia -->
<rule type="staticpath">
<entry>/Applications/#emu/Xenia-Edge.app/Contents/MacOS/Xenia-edge</entry>
</rule>
</emulator>
<emulator name="XENIOS">
<!-- macOS port Microsoft Xbox 360 emulator xenia -->
<rule type="staticpath">
<entry>/Applications/#emu/XeniOS.app/Contents/MacOS/xenios</entry>
</rule>
</emulator>
<emulator name="XROAR">
<!-- Dragon and Tandy 8-bit computer emulator XRoar -->
<rule type="staticpath">
<entry>/Applications/#emu/XRoar.app/Contents/MacOS/xroar</entry>
<entry>/Applications/XRoar.app/Contents/MacOS/xroar</entry>
</rule>
</emulator>
<emulator name="WHISKYCMD">
<rule type="staticpath">
<entry>/Applications/Whisky.app/Contents/Resources/WhiskyCmd</entry>
</rule>
</emulator>
<emulator name="WHISKYCMDRAW">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/WhiskyCmd.py</entry>
<entry>/userdata/system/admin/bin/WhiskyCmd.sh</entry>
</rule>
</emulator>
<emulator name="WHISKYSTEAM">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/WhiskySteam.sh</entry>
</rule>
</emulator>
<emulator name="WHISKYSTEAMHEROIC">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/WhiskySteamHeroic.py</entry>
<entry>/userdata/system/admin/bin/WhiskySteamHeroic.sh</entry>
</rule>
</emulator>
<emulator name="WHISKYXENIA">
<rule type="staticpath">
<entry>/userdata/system/admin/bin/WhiskyXenia.py</entry>
<entry>/userdata/system/admin/bin/WhiskyXenia.sh</entry>
</rule>
</emulator>
<emulator name="WHISKYWINE">
<!-- NOTE: depends on Whisky having run at least once after install -->
<rule type="staticpath">
<entry>~/Library/Application Support/com.isaacmarovitz.Whisky/Libraries/Wine/bin/wine64</entry>
</rule>
</emulator>
<bottle name="EMU2">
<rule type="staticpath">
<entry>/userdata/system/whisky-bottles/#emu 2</entry>
</rule>
</bottle>
</ruleList>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment