An open API service indexing awesome lists of open source software.

https://github.com/zapturk/go-romm-sync

A Desktop client for RomM to sync saves and play games with Retroachement support.
https://github.com/zapturk/go-romm-sync

open-source retrogaming rommapp

Last synced: 13 days ago
JSON representation

A Desktop client for RomM to sync saves and play games with Retroachement support.

Awesome Lists containing this project

README

          


Go-RomM-Sync Icon


A seamless bridge between RomM and RetroArch for a console-like gaming experience.

# Go-RomM-Sync

> [!IMPORTANT]
> This application is a client for synchronizing and playing games from your RomM library locally on your device. It is **not** intended for managing or adding new games to your self-hosted RomM instance. Please use the RomM web interface for administrative tasks.
>
> **Note:** This project is not affiliated with, endorsed by, or in any way officially connected with the [RomM project](https://github.com/rommapp/romm).
>
> **Supported RomM Version:** [4.8.1](https://github.com/rommapp/romm/releases/tag/4.8.1)
>
> 📖 **[Project Wiki](https://github.com/zapturk/Go-RomM-Sync/wiki)**: Check out our wiki for setup guides, platform compatibility, and more!

Go-RomM-Sync is a desktop application built with Wails and React that synchronizes your RomM library with a local RetroArch installation. It provides a gaming-console-like experience with full controller navigation support, making it perfect for use with gamepads on a home theater setup.

## Features

- **Enhanced Metadata**: Fetches detailed game summaries, genres, and cover art directly from your RomM instance.
- **Library Management**: One-click download of ROMs to your local storage, organized by platform.
- **RetroArch Integration**: Launch games directly into RetroArch with automatic core detection and RetroAchievements support.
- **Spatial Navigation**: Full support for gamepad and keyboard navigation, with "sticky" focus that remembers your position as you browse.
- **Cross-Platform**: Designed to work on macOS, Linux, and Windows.

## Screenshots


Platform Selection


Platform Selection Screen


Game Selection


Game Selection for Game Boy Advance


Game Detail Page


Game Detail Page with Server and Local Saves

## Technology Stack

- **Backend**: Go with [Wails v2](https://wails.io/) for native OS integration.
- **Frontend**: React + TypeScript + Vite.
- **Styling**: Vanilla CSS for a lightweight, performant UI.
- **Navigation**: Norigin Spatial Navigation for console-like input handling.

## Development

### Developer Prerequisites

- Go 1.23+ installed on your system.
- Node.js 18+ installed on your system.
- NPM installed on your system.
- Wails cli installed on your system.

### Running Locally

To run the application in development mode with hot reloading:

```bash
wails dev
```

### Building

To build a production-ready package for your current platform:

```bash
wails build
```

#### Linux Specifics

For modern Linux distributions (like Ubuntu 22.04+), you may need to install additional dependencies and use specific build tags:

```bash
# Install dependencies (Ubuntu/Debian)
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.1-dev

# Build with WebKit 4.1 tags
wails build -tags webkit2_41
```

## Installation

### macOS (Homebrew)

The easiest way to install Go-RomM-Sync on macOS is via Homebrew:

```bash
brew tap zapturk/homebrew-tap
brew install --cask go-romm-sync
```

### Windows (Scoop)

If you use [Scoop](https://scoop.sh/), you can install Go-RomM-Sync directly from the manifest in this repository:

```powershell
scoop install https://raw.githubusercontent.com/zapturk/Go-RomM-Sync/main/scoop/go-romm-sync.json
```

### Linux (Native Packages)

We provide native packages for major Linux distributions on our [Releases page](https://github.com/zapturk/Go-RomM-Sync/releases):

- **Debian / Ubuntu / Mint**: Download and install the `.deb` package.
```bash
sudo apt install ./go-romm-sync__amd64.deb
```
- **Fedora / RHEL / openSUSE**: Download and install the `.rpm` package.
```bash
sudo dnf install ./go-romm-sync--1.x86_64.rpm
```
- **Arch Linux**: Download the `go-romm-sync-arch-PKGBUILD`, rename it to `PKGBUILD`, and run:
```bash
makepkg -si
```

### Manual Installation

Alternatively, you can download the latest release for your platform from the [Releases page](https://github.com/zapturk/Go-RomM-Sync/releases) and move the executable to your applications/bin directory.

## Setup and Usage

Please refer to the **[Setup and Usage Guide](https://github.com/zapturk/Go-RomM-Sync/wiki/Setup)** in the project wiki for detailed instructions on:
- First-time authentication and configuration.
- Selecting your RetroArch executable.
- Downloading and playing games from your RomM library.
- Synchronizing saves and states.

For a list of all supported emulators and platforms, see the **[Supported Platforms & Cores](https://github.com/zapturk/Go-RomM-Sync/wiki/Platforms)** page.

## Roadmap

- [x] **Save Syncing Management**: Bidirectional synchronization of saves and states between local storage and RomM.
- [x] **Add Pico-8 Support**: Add support for Pico-8 games.
- [ ] **Detailed Achievements**: View RetroAchievements progress and badges directly on the game page.
- [ ] **Advanced Filtering**: Filter games by genre, platform, or download status.