The launcher for the eXoDOS project.
- eXo Projects - Official eXo projects website
- Retro-Exo Linux Guide - Linux setup guide
- exogui discord - exogui-specific support
exogui is an Electron-based desktop application for browsing, managing, and launching games from the eXo projects. It is based on BlueMaxima's Flashpoint Launcher and reads LaunchBox-format XML configuration files.
Currently supported:
- eXoDOS - DOS games collection
- eXoDREAMM - Dreamcast games collection
- eXoDemoscene - Demoscene collection
More eXo projects coming in the future!
- Browse and search through the entire eXo game collections
- Launch DOS and Windows games with platform-specific configurations
- Manage playlists and favorites
- Cross-platform support (Windows, Linux)
- macOS support is currently under development
- Integration with game metadata, screenshots, and videos
If you encounter any issues with exogui, seek help on the exogui discord server. For general eXoDOS support and Linux setup, visit the eXoDOS Discord server.
This project is currently intended for developers. To set up your development environment:
-
Clone the repository with submodules:
git clone --recurse-submodules https://github.com/margorski/exodos-launcher launcher cd launcher -
Install dependencies:
npm install
-
Run in development mode (recommended approach):
- Terminal 1: Start the watch process to rebuild on changes
npm run watch
- Terminal 2: Start the application
npm run start
- Terminal 1: Start the watch process to rebuild on changes
Alternatively, you can build once and run:
npm run build
npm run startnpm run build- Build the launcher (main, renderer, and static files to./build/)npm run watch- Build and incrementally rebuild on source file changesnpm run start- Run the latest build of the launchernpm test- Run Jest testsnpm run lint- Run ESLint
npm run pack- Package the latest build (outputs to./dist/)npm run release- Build and package in one step
npm run pack:linux- Package for Linux (x64)npm run pack:win32- Package for Windows (ia32)npm run pack:darwin- Package for macOS (Intel) - under developmentnpm run pack:m1- Package for macOS (Apple Silicon) - under developmentnpm run pack:all- Package for all platforms
Use release:* variants (e.g., npm run release:linux) to build and package in production mode.
Note: You can also set environment variables PACK_PLATFORM and PACK_ARCH to customize packaging.
exogui uses several JSON configuration files to control its behavior:
- config.json - Application configuration (paths, ports, native platforms)
- preferences.json - User preferences (UI settings, theme, window size)
- mappings.json - File extension to application mappings (for opening manuals, videos, etc.)
- platform_options.json - Platform-specific options (file watching)
- docs/architecture.md - Detailed architecture overview and socket communication
- docs/troubleshooting.md - Troubleshooting guide for common issues