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

Download history 207/week @ 2025-06-25 68/week @ 2025-07-02 127/week @ 2025-07-09 32/week @ 2025-07-16 175/week @ 2025-07-23 123/week @ 2025-07-30 132/week @ 2025-08-06 31/week @ 2025-08-13 300/week @ 2025-08-20 240/week @ 2025-08-27 193/week @ 2025-09-03 143/week @ 2025-09-10 140/week @ 2025-09-17 16/week @ 2025-09-24 178/week @ 2025-10-01 7/week @ 2025-10-08

347 downloads per month

GPL-3.0 license

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:

  1. Start the web client in development mode with desktop-specific features enabled
  2. 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:

  1. Build the web client optimized for desktop
  2. 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 /plugins directory: 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:

  1. Tauri Configuration: The tauri.conf.json file controls basic application settings like window size, application metadata, and update endpoints.

  2. Runtime Configuration: The client uses retrom-plugin-config to 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

Dependencies

~86–140MB
~2.5M SLoC