Local-first game library and launcher for Linux
Overview | Screenshots | Why OpenBox on Linux | Comparison | Features | Installation | Documentation | Development | Legal
One library for Steam, ROMs, and emulators. Click for more screenshots.
OpenBox is an open-source game library manager and launcher built for Linux. It puts PC games, storefront libraries, ROM collections, arcade sets, and emulator workflows in one searchable catalog with artwork, metadata, session tracking, save management, and launch profiles.
If you already know LaunchBox, OpenBox targets the same core job on Linux: organize a large library, enrich it with metadata and media, and launch games reliably from one front end. The difference is the packaging. OpenBox is built for Steam, Heroic, Lutris, Flatpak emulators, RetroArch, and local ROM folders on Linux, and it does not put advanced library workflows behind a Premium subscription.
OpenBox provides two interfaces:
| Interface | Entry point | Best for |
|---|---|---|
| Web UI | python3 web_app.py or openbox |
Full feature set, REST API, Big Box mode |
| Native UI | python3 openbox.py or openbox-native |
Lightweight desktop use |
Library data is stored locally at ~/.local/share/openbox-game-launcher/library.json.
Independence notice: OpenBox is an independent open-source project. It is not affiliated with LaunchBox or Unbroken Software, LLC. LaunchBox and Big Box are trademarks of Unbroken Software, LLC. See DISCLAIMER.md.
LaunchBox is a capable Windows library launcher with artwork, emulator profiles, and Big Box couch browsing. Several advanced library workflows require LaunchBox Premium, and there is still no native Linux build.
OpenBox is a Linux-native alternative with no subscription for custom fields, ESRB filters, list view, media packs, or similar library workflows.
OpenBox targets the launchers and paths Linux users already run: Steam, Heroic, Lutris, Gameyfin, Flatpak emulators, RetroArch, and local ROM folders.
| Topic | OpenBox on Linux | Typical LaunchBox experience on Linux |
|---|---|---|
| Platform support | Native Linux application | Windows-first; Linux use often depends on compatibility layers |
| License and cost | Open source under AGPL-3.0; Premium workflows included without a subscription | Free tier plus paid Premium for several advanced workflows |
| Account requirement | No OpenBox account required | LaunchBox account and Premium features for parts of the ecosystem |
| Premium workflows | Custom fields, ESRB, list view, media packs, import wizard, and Big Box features included | Custom fields, ESRB, media packs, and several Big Box features require Premium |
| Steam integration | Reads installed Steam libraries and launches through Steam | Supported, but not centered on Linux-native install layouts |
| Heroic / Epic / GOG / Amazon | Import through Heroic manifests | Possible, but not the primary Linux workflow |
| Lutris / EA / Ubisoft / Game Pass tagging | Uses Lutris and Heroic catalog import | Less direct on Linux |
| Emulator setup | Detects local binaries and installs from Flathub with Update All | Strong on Windows; Linux emulator install paths vary more |
| Updates | GitHub releases, AppImage, zsync, Flatpak, Makefile install | Windows installer/updater focused |
| Cloud sync | Mounted-folder sync with Syncthing, Dropbox, Drive, or any path | LaunchBox Premium cloud library |
| Automation | Local REST API with token auth | Limited external automation surface |
| Handheld / couch use | Big Box mode with controller navigation and AppImage portability | Big Box exists, but Linux handheld workflows are secondary |
| Source availability | Full source code in this repository | Proprietary application |
Consider OpenBox if you:
- Run Linux on a desktop, laptop, Steam Deck, or handheld PC
- Want one library for Steam, Heroic, Lutris, Gameyfin, ROMs, and standalone emulators
- Prefer local JSON library state over vendor cloud lock-in
- Need Flathub-aware emulator install/update flows
- Want RetroAchievements, save backups, session history, and Big Box in one app
- Care about open source licensing and self-hosted backups
LaunchBox remains the better choice if you:
- Use Windows as your primary launcher platform
- Need Windows-only integrations such as shell replacement, LEDBlinky, or Teknoparrot-native workflows
- Already rely on LaunchBox Premium cloud library hosting and want that exact service model
OpenBox covers the LaunchBox workflows that work on Linux and documents the rest in PARITY.md.
OpenBox is an independent open-source project aimed at Linux parity with LaunchBox. The comparison below covers practical outcomes for Linux users.
Both projects handle large local libraries, metadata editing, favorites, collections, filters, playlists, and bulk operations. OpenBox also has searchable settings, sidebar section hiding, arrange-by jump bars, provider-aware duplicate detection, ESRB filtering, custom fields, list view, platform categories, and a library health audit for missing files, media, saves, and emulator configuration.
OpenBox imports from:
- Installed Steam libraries across standard Steam root layouts
- Heroic for Epic, GOG, and Amazon titles
- Lutris for EA, Ubisoft, Xbox, and Game Pass tagged entries
- Gameyfin self-hosted libraries with on-demand install and uninstall
- ScummVM, RPCS3, Vita3K, Xbox 360, and loose arcade import helpers
- Local ROM folders with extension-aware scanning and drag-and-drop import
- MAME and FinalBurn DAT/XML full-set classification
- Multi-platform folder import, multi-emulator install chooser, ROM version ranking, and multi-disc M3U generation
- Storefront Manager for owned vs. installed catalog browsing and optional startup auto-import
LaunchBox covers many of the same sources on Windows. On Linux, these importers target the paths, manifests, and launchers users already have installed.
OpenBox syncs with the official LaunchBox Games Database, matches games locally, downloads artwork and metadata (including ESRB), supports image groups, duplicate cleanup, region priority, download limits, bulk media jobs, Steam trailer download, and Heroic GOG media download. Licensed EmuMovies and Bezel Project hooks are available when you provide your own credentials. Bundled media packs for platform logos, controller prompts, and badges are included without a subscription.
OpenBox launches through safe tokenized emulator commands without shell interpolation, extracts archives before launch when needed, tracks sessions with play counts and play time, shows startup/shutdown overlays, supports force-close on exit, and can back up saves on session close with retention limits and guarded restore. Optional Ludusavi and Hoard CLI hooks are available from the game detail pane when those tools are on PATH.
RetroAchievements support includes account login, ROM hash matching for ZIP and 7z archives, badge display, hardcore status, beaten/mastered stats, Big Box filters, pause-menu access, and emulator launch injection.
OpenBox includes fullscreen Big Box mode with Stage, Hybrid, and CoverFlow layouts, jewel-case styling, hybrid scoped search, filter/sort/RetroAchievements menus, configurable gamepad button mapping, bundled controller prompt packs, pause overlay for running games, attract mode and screensaver support, optional startup video, library background music, and localized UI strings (English, Spanish, German, French, Portuguese).
Themes are plain CSS files with live reload, global or per-platform assignment, and a local import workflow instead of a proprietary online theme store. Five stock themes ship with the web UI: Midnight Circuit, Phosphor Terminal, Harbor Light, Cinema Marquee, and Nordic Mist.
OpenBox provides sandboxed Python plugins with library, before_launch, and after_session hooks, plus a bundled community plugin catalog. LaunchBox has its own plugin ecosystem on Windows; OpenBox plugins are local and inspectable.
The full capability matrix with acceptance checks lives in PARITY.md. Major LaunchBox workflows that apply on Linux are implemented, including Premium features without a subscription. Windows-only arcade, shell, LED, and native Xbox package features have documented Linux equivalents or external tools instead.
- One catalog for Steam, Heroic, Lutris, Gameyfin, ROM folders, ScummVM, RPCS3, Vita3K, and local executables
- Storefront Manager for catalog browse, uninstalled import, and startup auto-import (including Gameyfin install/uninstall)
- Installed-only and owned-library filters in desktop and Big Box views
- Game Discovery Center with recently added, never played, continue playing, highly rated, random picks, and short-session lists
- Collections, saved filter presets with explorer facets, favorites, bulk edits, custom fields, ESRB filters, list view, platform categories, and Surprise Me random selection
- Platform documents pane for manuals and reference files per platform
- MAME and FinalBurn merged/split/non-merged set classification with BIOS awareness
- LaunchBox Games Database daily sync, local matching, ESRB metadata, and artwork download
- Media manager with image groups, audits, duplicate cleanup, region priority, download limits, and bundled media packs
- Steam trailer and Heroic GOG media download from the game detail pane
- In-app PDF/document reader with page navigation, spread layout, and light/dark themes
- Multi-category video playback, screenshot capture, gallery lightbox, and library BGM in Big Box
- Auto-detection of emulators on
$PATH - Flathub install, Update All, Open Emulator, dependency checks, and recommend-on-import
- YAML emulator definition packs, extension-aware ROM scanning, and per-platform command profiles with
{path},{name},{rom_name},{app_id},{heroic_app_id}, and{lutris_id}tokens - Archive extraction for ZIP plus 7z/RAR through installed
7z - Additional apps, alternate versions, and bundled extras per game
- Welcome wizard on first run with media limits and persistent import queues
- Session history with timestamps, duration, exit status, optional history disable, and configurable process tracking modes
- Startup and shutdown overlays with force-close support
- Game progress automation from play time and idle days
- Save discovery for Steam Cloud, RetroArch, PCSX2, PPSSPP, RPCS3, Dolphin, and Cemu
- Versioned backups, retention limits, pre-restore safety copies, and backup-on-close
- Fullscreen browsing optimized for gamepads and handhelds
- Stage, Hybrid, and CoverFlow layouts with hybrid scoped search
- Filter, sort, and RetroAchievements menus
- Configurable gamepad button mapping and bundled controller prompt packs
- Pause overlay for running games
- Attract mode, screensaver with controller wake and launch, and optional startup video
- UI localization for English, Spanish, German, French, and Portuguese
LaunchBox Premium workflows are included in OpenBox without a subscription:
- Custom fields with per-game values and bulk edit support
- ESRB ratings from database imports, sidebar filtering, and list columns
- Drag-and-drop import with multi-emulator install chooser and ROM version ranking
- Bundled media packs for platform logos, controller prompts, and status badges
- Big Box shutdown commands when entering or leaving fullscreen mode
- RetroAchievements matching, badges, hardcore tracking, 7z ROM scanning, and launch injection
- EmuMovies and Bezel Project downloads with user-provided credentials
- OBS recording auto-attach on session close
- MAME community high score export and import
- Granular JSON library backups and restore with rotation, automatic pre-restore safety copy, and safe archive path handling
openbox://deep links, keyboard launcher support, and optional IGDB metadata lookup- Mounted-folder sync for Syncthing, Dropbox, Google Drive, or any local path
- Plugin hooks and bundled plugin catalog
- Local REST API for automation and third-party tooling
Download the latest release from GitHub Releases.
chmod +x OpenBox-x86_64.AppImage
./OpenBox-x86_64.AppImageUse --native to launch the Tk interface instead of the web UI.
sudo make install
openbox # Web UI
openbox-native # Native UIflatpak-builder --user --install --force-clean build-dir io.openbox.GameLauncher.yml
flatpak run io.openbox.GameLaunchergit clone https://github.com/vindeckyy/OpenBox.git
cd OpenBox
python3 web_app.pyRequirements: Python 3.10 or newer on a Linux system with standard desktop tooling.
Optional local configuration can be loaded from ~/.env or a project .env file. See .env.example. Never commit secrets.
Library: grid and list views, platform filters, playlists, drag-and-drop import
Game detail: metadata, ratings, play history, hero art, and one-click launch
Screenshots use real LaunchBox metadata and cover art. Regenerate with python3 scripts/capture_readme_screenshots.py (see scripts/package.json).
| Document | Description |
|---|---|
| PARITY.md | LaunchBox capability matrix and Linux parity decisions |
| CHANGELOG.md | Release history |
| CONTRIBUTING.md | Development workflow and contribution guidelines |
| SECURITY.md | Security reporting process |
| CODE_OF_CONDUCT.md | Community standards |
| DISCLAIMER.md | Trademark, fair use, and DMCA policy |
Configure per-platform launch commands in emulator preferences:
[SNES]
command = retroarch -L /usr/lib/libretro/snes9x_libretro.so "{path}"| Token | Description |
|---|---|
{path} |
Absolute path to the game file or ROM |
{name} |
Game title |
{rom_name} |
ROM filename |
{app_id} |
Steam application ID |
{heroic_app_id} |
Heroic application ID |
{lutris_id} |
Lutris game identifier |
Plugins live under the user plugins directory with a plugin.json manifest and Python entry module. Supported hooks: library, before_launch, and after_session. See CONTRIBUTING.md for details.
The web UI exposes a local REST API authenticated with a session token. This supports automation, integrations, and third-party tools without modifying the core application. API routes are covered by the parity and integration test suite in test_parity_api.py.
OpenBox/
├── web_app.py Web UI server and REST API
├── openbox.py Native Tk UI
├── importers.py Steam, Heroic, and Lutris import
├── parity_import.py M3U, multi-platform import, emulator recommendations, ROM ranking
├── parity_premium.py Premium workflows (custom fields, ESRB, media packs, localization)
├── parity_storefront.py Storefront Manager catalog and uninstalled import
├── parity_gameyfin.py Gameyfin library client, install, and uninstall
├── parity_save_tools.py Ludusavi and Hoard CLI wrappers
├── parity_discovery.py Game Discovery Center lists
├── parity_media.py Media queues, duplicates, region priority, limits
├── parity_saves.py Save retention and backup-on-close helpers
├── parity_integrations.py RA inject, bezels, EmuMovies, OBS, MAME scores
├── stock_themes.py Bundled stock CSS theme installer
├── themes/ Stock Web UI themes (Midnight Circuit, Phosphor Terminal, Harbor Light, Cinema Marquee, Nordic Mist)
├── metadata.py LaunchBox database sync and media scraping
├── emulators.py Emulator profiles and Flathub management
├── retroachievements.py RetroAchievements integration
├── saves.py Save discovery and backup engine
├── updates.py Verified GitHub release updater
├── env_config.py Local environment and token loading
├── plugins.py Plugin lifecycle and hooks
├── plugin_catalog.py Bundled community plugin catalog
├── catalog.py Search, filters, and bulk edits
└── test_*.py Test suite
./run_all_tests.shBuild the AppImage:
./build_appimage.shPull requests should pass the full test suite. See CONTRIBUTING.md.
OpenBox is released under the GNU Affero General Public License v3.0.
Trademark references to LaunchBox, Steam, Heroic, Lutris, RetroArch, and other third-party products are used for compatibility description only. OpenBox does not distribute ROMs, BIOS files, firmware, or DRM circumvention tools.
For the full legal policy, see DISCLAIMER.md.
OpenBox is free and open source (AGPL-3.0). If it saves you time, a voluntary donation helps cover hosting and development:
Payments are processed by Stripe. No account or subscription is required.
Contributions are welcome. Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening a pull request.