miles bd8b83a02f feat: enhance emulator configuration and controller support
- Refactored built-in presets in configurator.ts to improve organization and added new configurations for various emulators.
- Implemented caching for scraped cover URLs in scraper.ts and added functionality to apply cached covers to game entries.
- Updated IPC handlers in ipc.ts to support caching of cover URLs.
- Enhanced gamepad navigation in useGamepadNav.ts for better user experience with controller inputs.
- Improved controller detection and button labeling in ControllerPage.tsx to support PlayStation, Xbox, and Switch controllers.
- Added accessibility features to game cards in Dashboard.tsx and LibraryPage.tsx for keyboard navigation.
- Introduced a new presets.json file with recommended configurations for various emulators.
- Updated styles.css to enhance focus visibility for keyboard and controller navigation.
2026-07-09 21:31:39 -05:00
2026-07-08 15:18:14 -05:00
2026-07-08 16:08:30 -05:00
2026-07-08 16:08:30 -05:00

OmniEmu

Cross-platform emulator manager and ROM library — for Windows, macOS, and Linux.

Features

  • Emulator Management — Detect installed emulators, download new ones, manage versions
  • ROM Library — Scan directories for ROMs, organise by platform, launch games
  • Cross-Platform — Same experience on Windows, macOS, and Linux (x86-64 & ARM64)
  • Built-in Launcher — Launch games directly from the library with proper emulator arguments

Supported Emulators

Emulator Systems Windows macOS Linux
Dolphin GameCube, Wii
RPCS3 PlayStation 3
Ryujinx Nintendo Switch
PCSX2 PlayStation 2
MAME Arcade
RetroArch Multi-system

Development

Prerequisites

  • Node.js 20+ (recommended: 22)
  • npm 10+

Setup

npm install
npm run dev

This starts the Vite dev server for the renderer and the TypeScript compiler for the main process in watch mode.

Build for production

npm run build

Package for distribution

# Current platform
npm run package:mac
npm run package:win
npm run package:linux

# All platforms
npm run package:all

Output goes to ./release/.

Platform-specific scripts

# macOS (specify arch: x64 or arm64)
./scripts/build-mac.sh arm64

# Windows (PowerShell)
.\scripts\build-win.ps1 -Arch x64

# Linux
./scripts/build-linux.sh x64

Project Structure

src/
├── main/          # Electron main process
│   ├── index.ts   # App entry, window creation, tray
│   ├── preload.ts # Context bridge API
│   ├── ipc.ts     # IPC handler registration
│   ├── platform.ts # OS/arch detection utilities
│   ├── emulators.ts # Emulator detection, ROM scanning, launching
│   └── settings.ts  # Persistent settings
├── renderer/      # React UI (Vite)
│   ├── App.tsx
│   ├── components/
│   ├── pages/
│   └── styles.css
└── shared/        # Types shared between main & renderer
    └── types.ts
scripts/           # Build and install scripts
.github/workflows/ # CI configuration

License

MIT

S
Description
No description provided
Readme MIT
526 KiB
Languages
TypeScript 91.6%
CSS 6.7%
JavaScript 0.7%
Shell 0.6%
Python 0.2%
Other 0.1%