154 releases
| 0.7.39 | Oct 1, 2025 |
|---|---|
| 0.7.35 | Aug 31, 2025 |
| 0.7.30 | Jul 27, 2025 |
| 0.7.14 | Feb 26, 2025 |
| 0.0.14 | Jul 31, 2024 |
#84 in Games
347 downloads per month
4MB
13K
SLoC
The Retrom Client is a desktop application built with Tauri that serves as the primary way for users to interact with their Retrom game library. This application wraps the web client and adds desktop-specific functionality like game installation, launching, and integration with local systems.
Features
- Install/uninstall games from your Retrom library
- Launch games using configured emulators
- Seamless Steam integration for managing your Steam library alongside Retrom
- Standalone mode for using Retrom without a dedicated server
- Configuration management for emulators and game launching
- System-level integration (file associations, protocol handlers)
- Automatic updates
Development Setup
Prerequisites
- Rust (stable toolchain)
- Node.js (LTS version recommended)
- PNPM for JavaScript package management
- Tauri CLI and its system dependencies
Building and Running
Development Mode
The client depends on the web client being built or in development mode. You can run both simultaneously using NX:
pnpm nx dev retrom-client
This command will:
- Start the web client in development mode with desktop-specific features enabled
- Launch the Tauri application that wraps the web client
Production Build
To create a production build of the client:
pnpm nx build retrom-client --configuration prod
This will:
- Build the web client optimized for desktop
- Create a production build of the Tauri application
The built application can be found in /target/release/bundle/ for release (production) builds or /target/debug/bundle/ for debug builds.
Internal Dependencies
The client package depends on several internal packages in the monorepo:
client-web: The React-based web interface that provides the UI- Plugins from the
/pluginsdirectory: For functionality like installation, launching, configuration, service communication, and platform integration retrom-codegen: Generated code for protocol buffers and other shared types
External Dependencies
The client relies on several external libraries and frameworks:
- Tauri: Core framework for building the desktop application
- Tokio: Asynchronous runtime for Rust
- Tonic: gRPC implementation for Rust
- Tracing: Structured logging and telemetry
Configuration
The client can be configured using several methods:
-
Tauri Configuration: The
tauri.conf.jsonfile controls basic application settings like window size, application metadata, and update endpoints. -
Runtime Configuration: The client uses
retrom-plugin-configto manage user settings at runtime, which are stored locally and can include:- Service connection details
- Emulator configurations
- UI preferences
- Telemetry settings
Plugin Architecture
The client uses Tauri's plugin system to provide modular functionality. Each plugin is in its own package in the plugins/ directory. This architecture makes it easy to extend the client with new features while keeping the codebase organized and maintainable.
Read more about tauri plugins in the documentation: Tauri Plugins
Supported Platforms
The Retrom Client supports:
- Windows
- macOS
- Linux (Debian-based distributions, Fedora/RPM-based distributions, and AppImage)
Troubleshooting
Logs are stored in the application data directory and can be useful for diagnosing issues:
- Windows:
%APPDATA%\com.retrom.client\logs\retrom.log - macOS:
~/Library/Logs/com.retrom.client/retrom.log - Linux:
~/.local/share/com.retrom.client/logs/retrom.log
Additional Resources
- Tauri Documentation
- Plugin-Specific READMEs for details on individual plugins
Dependencies
~86–140MB
~2.5M SLoC