mirror of
https://github.com/mileswolfallen2/OmniEmu2.0.git
synced 2026-09-08 11:23:17 +00:00
bd8b83a02fd9c046f12ebf6dc237be5c48fc9877
- 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.
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
Languages
TypeScript
91.6%
CSS
6.7%
JavaScript
0.7%
Shell
0.6%
Python
0.2%
Other
0.1%