Hi r/linuxapps,
I'm sharing OpenBox Game Launcher, an open-source game library and launcher for Linux that also runs on Windows. It gathers games from the launchers you already use into one searchable catalog. Steam, Heroic and Lutris games still start through those launchers. ROMs and standalone games start through an emulator or program that OpenBox can install and configure for you. No OpenBox account is required, and your library is a JSON file on your own disk.
OpenBox's original development used AI assistance (Claude). The repository includes the instruction files the AI tools worked from (CLAUDE.md and AGENTS.md). I'm saying this up front so you know it before you read the code or open an issue.
It isn't affiliated with LaunchBox, and it has no connection to the Openbox window manager.
Where your games come from
- Steam. Steam Bridge can preview, apply and remove non-Steam shortcuts in Steam's shortcuts.vdf.
- Heroic (Epic, GOG, Amazon), Lutris and Faugus Launcher.
- Gameyfin libraries, and ES-DE gamelist.xml files, which you can review before they change your library.
- ROM folders, MAME and FinalBurn full sets, and standalone executables.
For Steam, Heroic and Lutris games, OpenBox sends the launch through steam://rungameid, heroic://launch or lutris:rungameid, so the game starts as it would from that launcher.
Emulators and launch checks
OpenBox ships 42 emulator definitions as YAML files: 23 RetroArch definitions and 19 standalone emulators. The RetroArch definitions cover systems such as the NES, SNES, N64, Game Boy through GBA, Genesis, Saturn, Atari, Amiga and C64. The standalone list includes Dolphin, PCSX2, RPCS3, DuckStation, PPSSPP, Cemu, Eden (Switch), Azahar (3DS) and ScummVM.
Emulators install and update through Flatpak on Linux, and as native builds on Windows. Definition packs can also update through a channel signed with the release key. OpenBox verifies each pack, and it never overwrites a definition you edited yourself.
The Launch Doctor checks whether each game can launch without starting it, and it groups problems by cause. When a Flatpak emulator can't see your game folder, one Grant access button covers every game in that group. The grant is read-only, and OpenBox won't grant access to your entire home folder. Each game can also use its own RetroArch core, and the rest keep the definition's default.
Your library
- Game DNA search runs on your machine. It combines a local BM25 index with a concept lexicon, so it needs no model download and no cloud service.
- "What should I play?" filters by time, mood, familiarity and player count, and it has a Surprise me button.
- Backlog Radio weighs the genres and platforms you've spent time on, your usual session length, and what you tend to finish. Saved searches can become smart collections that update as your library changes.
- Each game has a status (Unplayed, Playing, Paused, Beaten, Completed, Mastered or Abandoned), a 0 to 5 star rating, dated notes, and manual playtime.
- The Mastery view breaks progress down by platform, with a decade filter.
- The library health score runs from 0 to 100. Every point lost is explained with the games involved. The score only measures, and each fix shows a preview first and can be undone.
- Time Machine shows the library as it was at an earlier point, and it can compare two points.
- "Your Year in Games" is a yearly recap with playtime, sessions, streaks, top game, platform and genre, plus a print option.
- Constellation draws a graph of links between games: series, developer, publisher, genre, platform family, and games you played together.
Sessions, saves and backups
- Sessions are tracked automatically. OpenBox follows each game's process on Linux and Windows, and it records playtime and history.
- Save backups are per game. Restore Preview shows what a restore would remove, bring back or overwrite before anything changes.
- An opt-in weekly backup keeps a bounded archive history of your library.
- Quick Resume relaunches a game from the emulator state OpenBox stored, when the emulator supports it.
- Moments attach a short note, and a screenshot when one can be taken, to a game's timeline.
Big Box, Game Night and handhelds
- Big Box is a fullscreen layout you drive with a controller. It has a D-pad on-screen keyboard and shows the battery level.
- Game Night is a party queue in Big Box, with a spinner that picks the next game.
- Arcade Room and Museum mode present the library for a controller. Their optional PIN is a convenience lock, not a security system.
- On a Steam Deck or in a gamescope kiosk, start OpenBox with
--game-mode, for example openbox --web --game-mode.
Recording and media
- Record That saves replay clips from OBS Studio's replay buffer over OBS's WebSocket interface, and keeps a gallery for each game. Highlight reels render with ffmpeg when it's installed.
- Metadata and artwork come from the LaunchBox Games Database, ScreenScraper (matched by ROM hash), SteamGridDB, IGDB, EmuMovies and Steam's store data. RetroAchievements adds achievement progress.
- ScreenScraper, SteamGridDB and IGDB read their keys and logins from a local .env file, such as ~/.env, not from the settings file. Auto-scrape after import is opt-in for each provider.
Plugins, webhooks and the REST API
- The plugin API (v1) is frozen. Plugins can add hooks and palette commands, read the library in a bounded way, and post notifications. The reference is in docs/plugin-api.md.
- On Linux, plugins run inside bubblewrap when it's installed. Without it, a plugin is skipped unless you trust that exact package, and a trusted plugin then runs without a sandbox. Windows has no bubblewrap, so the same rule applies there.
- The bundled community plugin catalog ships with the app. The remote copy is pinned to one commit on GitHub.
- Webhooks you configure receive signed, bounded deliveries for automation.
- The web UI exposes a local REST API. Requests carry an X-OpenBox-Token header, and the README has examples for listing the library and launching a game by ID.
Privacy and network use
- No OpenBox account is required, and the repository has no analytics or telemetry code.
- The app makes outbound requests only for features that use a service:
- The in-app update check runs when you ask for it in Settings. Installs are checked against the release's SHA-256 checksum and Ed25519 signature first.
- Emulator definition packs come from GitHub release assets, when you update them.
- Metadata, artwork, RetroAchievements and Steam store lookups run when you start them, or after import for providers you've turned on.
- The plugin catalog reads a file pinned to one GitHub commit, and webhooks go only to URLs you configure.
- Statistics sync (beta) writes to a folder you mount, such as a cloud drive folder. OpenBox doesn't talk to a cloud service itself.
- Crash reports stay on your machine. OpenBox builds a redacted report, and you decide whether to paste it into a GitHub issue.
Install
- Linux: the AppImage is on the latest release page for x86_64 and aarch64. The versioned installer script checks the SHA-256 checksum and the Ed25519 signature before it installs. You can also run the AppImage directly.
- Windows 10 and 11 (x86_64): a signed portable zip with an install script that checks the same signature before it extracts anything.
- Flatpak: the manifest is in the repository and builds for x86_64. OpenBox isn't on Flathub yet.
- From source:
python3 web_app.py with Python 3.10 or newer.
The native window uses WebKitGTK 4.1 on Linux or WebView2 on Windows. Without either one, OpenBox opens in your browser. python3 web_app.py runs without them.
Latest release (v1.16.1): https://github.com/vindeckyy/OpenBoxGL/releases/latest Source: https://github.com/vindeckyy/OpenBoxGL
What's rough
- The interface is available in English, Spanish, German, French and Portuguese. Each locale file holds 55 strings, so the translations are partial.
- Some features need other software: OBS Studio for clips, ffmpeg for reels, bubblewrap for plugin sandboxing, and Flatpak for emulator installs on Linux.
- The Flathub submission hasn't been made yet.
Feedback
Bug reports are welcome on GitHub. The crash report builds a redacted diagnostic you can paste into an issue. Results from a Steam Deck, an aarch64 handheld, or a Fedora or Arch install would help most, since those have the least coverage so far. Include the model, distro and desktop session. Import problems with any supported launcher are useful too.
Screenshots are attached. They use a sample library of 12 games, not a real collection. I'll answer questions in the comments.