Skip to main content
Version: v2.7.0

Launchers

Detailed launcher configuration for Windows.

Steam

Launches games from your Steam library via the steam:// URL scheme. Both official Steam games and non-Steam shortcuts are detected.

Steam is auto-detected via Windows registry. Games are indexed from your Steam library folders.

To manually launch a Steam game, write steam://<app_id> to a token. For example: steam://1145360 for Hades.

config.toml
[[launchers.default]]
launcher = "Steam"
install_dir = "D:\\Steam" # Optional custom Steam install directory

LaunchBox

Required Plugin

LaunchBox integration requires the Zaparoo plugin. Download Zaparoo LaunchBox Integration.zip and follow the installation steps below.

Plugin Installation

  1. Download the Zaparoo LaunchBox Integration.zip file
  2. Extract the zip file
  3. Copy the Zaparoo LaunchBox Integration folder to your LaunchBox Plugins directory (usually <LaunchBox>/Plugins/)
  4. Restart LaunchBox

Once installed, Zaparoo will automatically detect LaunchBox and add all games to the media database.

To manually create a LaunchBox game token, write launchbox://<game_id> to a token.

config.toml
[[launchers.default]]
launcher = "LaunchBox"
install_dir = "D:\\LaunchBox" # Optional custom install directory

RetroBat

RetroBat integration uses the EmulationStation API. RetroBat must be running for games to launch.

Games are automatically detected from your RetroBat roms folder based on gamelist.xml files.

config.toml
[[launchers.default]]
launcher = "RetroBat"
install_dir = "D:\\RetroBat" # Optional custom install directory

Supported Systems

System IDRetroBat Folder
Arcademame, fbneo
Atomiswaveatomiswave
NAOMInaomi
NAOMI2naomi2
Model2model2
Model3model3
Triforcetriforce
Chihirochihiro
Hikaruhikaru
CPS1cps1
CPS2cps2
CPS3cps3
DAPHNEdaphne
Singesinge
SG1000sg1000
MasterSystemmastersystem
Genesismegadrive
MegaCDmegacd
Sega32Xsega32x
Saturnsaturn
Dreamcastdreamcast
GameGeargamegear
NESnes
FDSfds
SNESsnes
SNESMSU1snes-msu1
Sufamisufami
Nintendo64n64
GameCubegamecube
Wiiwii
WiiUwiiu
Switchswitch
VirtualBoyvirtualboy
Gameboygb
Gameboy2Pgb2players
SGBMSU1gb-msu
GameboyColorgbc
GBAgba
GBA2Pgba2players
NDSnds
PokemonMinipokemini
GameNWatchgw
PSXpsx
PS2ps2
PS3ps3
PS4ps4
Xboxxbox
Xbox360xbox360
TurboGrafx16pcengine
TurboGrafx16CDpcenginecd
SuperGrafxsupergrafx
PCFXpcfx
NeoGeoneogeo
NeoGeoCDneogeocd
Atari2600atari2600
Atari5200atari5200
Atari7800atari7800
AtariLynxlynx
Jaguarjaguar
JaguarCDjaguarcd
3DO3do
ColecoVisioncolecovision
Intellivisionintellivision
ChannelFchannelf
Vectrexvectrex
Odyssey2odyssey2
Amiga500amiga500
Amiga1200amiga1200
AmigaCD32amigacd32
Amstradamstradcpc
Atari800atari800
AtariSTatarist
AtariXEGSxegs
C64c64
MSX1msx1
MSX2msx2
MSX2Plusmsx2+
ZXSpectrumzxspectrum
ZX81zx81
X68000x68000
X1x1
PC88pc88
PC98pc98
Aquariusaquarius
SAMCoupesamcoupe
Thomsonthomson
Spectravideospectravideo
Oricoricatmos

Flashpoint

Launches games from Flashpoint Archive. Games won't appear in the media database, but you can manually create tokens by writing flashpoint://<game_id> or copying the URL from the Flashpoint launcher.

Kodi

Plays media via Kodi's JSON-RPC API. Kodi must be running with remote control enabled.

Local Files

System IDExtensions
Video.mp4, .mkv, .avi, .mov, .webm, .m4v, .wmv, .flv
MusicTrack.mp3, .flac, .ogg, .wav, .m4a, .wma, .aac

Library Media

System IDDescription
MovieMovies from Kodi library
TVEpisodeTV episodes from Kodi library
TVShowTV shows (plays next unwatched episode)
MusicTrackSongs from Kodi library
MusicAlbumAlbums from Kodi library
MusicArtistArtists from Kodi library (plays all songs)
config.toml
[[launchers.default]]
launcher = "KodiLocal"
host = "192.168.1.100" # Kodi IP address
port = 8080 # Kodi JSON-RPC port

Web Browser

Opens URLs in the default web browser. Supports http:// and https:// schemes.

Executables

Security Risk

Be extremely careful! Executables can do anything, including deleting files and installing malware. Only use this feature if you trust the executable.

System IDExtensions
Any.exe

Executables must be explicitly allowed in config.toml:

config.toml
[launchers]
allow_file = [
'^C:\\Games\\.*\\.exe$',
'^D:\\Emulators\\.*\\.exe$'
]

Scripts

Security Risk

Scripts can execute arbitrary code. Only allow scripts you trust.

System IDExtensions
Any.bat, .cmd, .lnk, .a3x, .ahk

Scripts must be explicitly allowed in config.toml:

config.toml
[launchers]
allow_file = [
'^C:\\Scripts\\.*\\.bat$',
'^C:\\Scripts\\.*\\.ahk$'
]

Custom Launchers

Custom launchers allow you to start ROMs with a specified emulator. They are TOML files placed in the launcher directory (%localappdata%\zaparoo\launchers).

Example for PCSX2:

PCSX2PS2_zaparoo_launcher.toml
[[launchers.custom]]
id = "PCSX2PS2"
system = "PS2"
media_dirs = ["D:\\Emulation\\Roms\\PS2"]
file_exts = [".iso", ".bin", ".img", ".nrg", ".mdf", ".chd"]
execute = "powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command Start-Process -FilePath 'D:\\Emulation\\Emulators\\PCSX2-Nightly\\pcsx2-qt.exe' -ArgumentList '\"[[media_path]]\"'"
PowerShell script for automatic launcher creation
launcher-generator.ps1
Write-Host "=== Zaparoo Launcher TOML Generator ==="

$system = Read-Host "Enter system name (e.g., CPS2, PS1, NES)"
$rompath = Read-Host "Enter full path to ROM folder"
$emupath = Read-Host "Enter full path to emulator executable"

$coreMap = @{
"PS1" = "mednafen_psx_hw_libretro.dll"
"PS2" = ""
"NES" = "mesen_libretro.dll"
"SNES" = "snes9x_libretro.dll"
"N64" = "mupen64plus_next_libretro.dll"
"GBA" = "mgba_libretro.dll"
"CPS1" = "fbalpha2012_cps1_libretro.dll"
"CPS2" = "fbalpha2012_cps2_libretro.dll"
"CPS3" = "fbalpha2012_cps3_libretro.dll"
"NeoGeo" = "fbalpha2012_neogeo_libretro.dll"
"Arcade" = "fbneo_libretro.dll"
"Genesis" = "genesis_plus_gx_libretro.dll"
"TG16" = "mednafen_pce_fast_libretro.dll"
"GB" = "gambatte_libretro.dll"
"GBC" = "gambatte_libretro.dll"
"DS" = "melonds_libretro.dll"
"PSP" = "ppsspp_libretro.dll"
"Saturn" = "mednafen_saturn_libretro.dll"
"Dreamcast" = "flycast_libretro.dll"
"3DO" = "opera_libretro.dll"
"MSX" = "bluemsx_libretro.dll"
"DOS" = "dosbox_pure_libretro.dll"
"ScummVM" = "scummvm_libretro.dll"
"Amiga" = "puae_libretro.dll"
}

$extMap = @{
"PS1" = '".cue", ".bin", ".iso", ".chd"'
"NES" = '".nes"'
"SNES" = '".sfc", ".smc"'
"N64" = '".z64", ".n64", ".v64"'
"GBA" = '".gba"'
"CPS1" = '".zip"'
"CPS2" = '".zip"'
"CPS3" = '".zip"'
"NeoGeo" = '".zip"'
"Arcade" = '".zip"'
"Genesis" = '".md", ".bin"'
"TG16" = '".pce"'
"GB" = '".gb"'
"GBC" = '".gbc"'
"DS" = '".nds"'
"PSP" = '".iso", ".cso"'
"Saturn" = '".cue", ".bin"'
"Dreamcast" = '".cdi", ".gdi"'
"3DO" = '".iso"'
"MSX" = '".rom", ".dsk"'
"DOS" = '".zip"'
"ScummVM" = '".svm"'
"Amiga" = '".adf"'
}

$corepath = $null
if ($coreMap.ContainsKey($system)) {
$core = $coreMap[$system]
if ($core -ne "") {
$corepath = Join-Path (Split-Path $emupath) "cores\$core"
}
}

$rompath = $rompath -replace '\\', '\\'
$emupath = $emupath -replace '\\', '\\'
if ($corepath) { $corepath = $corepath -replace '\\', '\\' }

if ($corepath) {
$exec = "powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command Start-Process -FilePath '$emupath' -ArgumentList '-L', '$corepath', '[[media_path]]'"
} else {
$exec = "powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command Start-Process -FilePath '$emupath' -ArgumentList '[[media_path]]'"
}

$exts = if ($extMap.ContainsKey($system)) { $extMap[$system] } else { '".zip"' }

$outfile = "${system}_zaparoo_launcher.toml"
@"
[[launchers.custom]]
id = "$system"
system = "$system"
media_dirs = ["$rompath"]
file_exts = [$exts]
execute = "$exec"
"@ | Set-Content -Encoding UTF8 $outfile

Write-Host "`nTOML launcher created: $outfile"
Read-Host -Prompt "`nPress Enter to exit"