Achievement Hunting on Linux: How to Add Trophies to Any Non-Steam Game
modslinuxhow-to

Achievement Hunting on Linux: How to Add Trophies to Any Non-Steam Game

AAlex Mercer
2026-04-08
7 min read
Advertisement

Hands-on guide for Linux gamers to add achievements to non‑Steam games, set up overlays, and sync rewards with your profile or stream.

Achievements and trophies are more than vanity metrics — they provide goals, replay hooks, and nice little moments to celebrate on stream. For Linux gaming enthusiasts, most official achievement systems live behind platforms like Steam. But a community of modders has built tools that inject achievement systems into non‑Steam games on Linux. This guide walks you through what those tools do, how to use them, how to get your overlays and stream scenes to show unlocks, and what pitfalls to avoid.

What the community tool does (and why it matters)

At its core, the community tool is an open source achievement injector and overlay server. It lets you define achievement sets for a game, watch for triggers (log files, save‑file changes, in‑memory values, or input events), and then fire unlock events to a local overlay or a remote service. For Linux gamers who play non‑Steam titles — native games, emulated ROMs, console ports, DRM‑free store downloads — this fills the gap left by platform‑locked trophy systems.

Key features you can expect

  • Achievement manifests: JSON or YAML files that describe trophies, icons, and unlock conditions.
  • Trigger engines: regex watchers for logs, file watchers for save changes, and optional memory scanners for games running under Wine/Proton.
  • Local overlay server: a tiny HTTP/WebSocket server that serves overlay HTML and broadcasts unlock events.
  • OBS/stream integration: use a browser source or native plugin to display unlock animations on stream.
  • Open source: you can audit, fork, and add support for more trigger types.

Before you start: prerequisites and safety checklist

Gather these basics so the tutorial runs smoothly:

  • Linux distribution with a working compositor (X11 is easier; Wayland requires extra setup).
  • Git, build essentials (gcc/clang, make or meson), and Python 3 or Node.js depending on the tool's server implementation.
  • OBS Studio or your streaming tool of choice (for overlays) and the ability to add a browser source.
  • Access to the game folder and save files. Sandboxed packages (Flatpak, Snap) often need permission tweaks.
  • A backup of any save files before testing unlock conditions that can modify saves.

Step‑by‑step tutorial: Add achievements to a non‑Steam game

This walkthrough assumes a generic open source injector. Replace repository URLs and command details with the project you choose.

1. Install the tool from source

  1. Clone the repo: git clone https://example.org/achievement‑injector.git
  2. Enter the folder and follow build steps (example for a Python server): cd achievement‑injector && pip3 install -r requirements.txt
  3. Install helper binaries if provided: sudo make install or build using meson/ninja.

2. Create an achievement manifest

Manifests describe each achievement and how to detect it. A minimal JSON might look like this:

{
  "game_id": "mygame",
  "achievements": [
    { "id": "first_blood", "name": "First Blood", "desc": "Defeat your first enemy.", "icon": "icons/first.png", "trigger": { "type": "log", "file": "logs/game.log", "regex": "Enemy defeated" } }
  ]
}

Supported trigger types vary: log, file, regex, save_offset (for simple save parsing), and memory_read (advanced).

3. Configure the trigger engine

Tell the tool where the game writes logs or saves. For Wine/Proton titles you might point at the WINEPREFIX directory. For native games, the default save path or a CLI flag works:

./injector --manifest manifests/mygame.json --watch-path /home/you/.local/share/mygame

4. Start the local overlay server

The tool typically opens a local HTTP server and a WebSocket endpoint that broadcasts unlock events. Start it and open the overlay preview in a browser to test animations:

./injector --overlay --port 3000
# open http://localhost:3000/overlay/mygame in your browser

5. Add the overlay to OBS

  1. In OBS, add a new Browser Source.
  2. Point it to http://localhost:3000/overlay/mygame and set the canvas size (e.g., 800x200).
  3. Toggle visibility and test unlocks by simulating triggers (some tools include a "test unlock" button).

6. Test the full flow

Launch the game the usual way. Perform the action that should fire the trigger (kill an enemy, collect an item). If your manifest uses log regex, watch the console where the tool prints matches and confirm the overlay shows an unlock animation on OBS.

Syncing achievements with profiles and stream overlays

Once unlock events are produced, there are multiple ways to surface them beyond a local overlay.

Stream overlays and notifications

  • Browser Source (OBS): easiest — use the injector's overlay URL. Animation, icon, and text are rendered from HTML/CSS.
  • StreamElements/Streamlabs: many overlay providers accept webhooks or remote URLs. Configure the injector to POST unlock events to your overlay provider if supported.
  • Custom widgets: run a small Node/Flask app that listens to the injector WebSocket and then updates a remote dashboard or sends chat messages via the Twitch API.

Profile syncing and achievement history

There is no single "official" cross‑platform achievement profile for non‑Steam games, but you can build or use community services:

  1. Local DB: configure the tool to write unlocks to a SQLite file so you have a persistent history and can show totals on stream.
  2. Self‑hosted web profile: if the injector exposes events, a small web app can accept them and show a per‑user trophy page.
  3. Community trackers: some projects integrate with public community trackers where you can register achievements and sync unlocks via API tokens.

Compatibility caveats and anti‑cheat risks

Important warnings before you inject anything into a game:

  • Anti‑cheat systems: For online multiplayer titles with anti‑cheat (VAC, BattleEye, Easy Anti‑Cheat), injecting or LD_PRELOAD hooking can trigger bans. Never use injectors with games that have strict anti‑cheat unless the tool explicitly states compatibility.
  • Wine/Proton differences: Memory reading and hooking behave differently under Wine. Use Winetools or Proton wrappers provided by the project, or prefer log/save triggers where possible.
  • Flatpak/Snap sandboxing: If your game is distributed as a Flatpak or Snap, give the package filesystem permissions or run the injector in the same sandbox to access logs and saves.
  • Wayland vs X11 overlays: Wayland's security model blocks global overlays in many compositors. If your overlay fails to appear, run the game under X11 or use OBS's native capture instead of a hardware overlay.

Troubleshooting checklist

  • No unlock events? Verify the manifest path and that the game actually writes the log lines or saves.
  • Overlay not showing in OBS? Check that the injector server is reachable from your desktop (firewall) and that the browser source URL is correct.
  • False positives or missed triggers? Tighten regexes, use file hashes, or prefer unambiguous save offsets rather than noisy logs.
  • Injector crashes the game on launch? Revert to a backup save and run with --dry‑run or sandbox the injector user to debug without corrupting progress.

Best practices for community & modders

Because this is a modding niche, follow community norms to keep ecosystems healthy:

  • Share manifests and overlays under permissive licenses so others can reuse work.
  • Document trigger assumptions and tested game versions in your manifest repo.
  • Respect anti‑cheat boundaries and make it explicit which games are unsupported for safety.
  • Contribute pull requests for new trigger types — memory readers, controller event hooks, or emulator integrations — and help test on diverse distros and compositors.

Where to go next

Try creating a manifest for a single‑player game you already own and run the overlay in a private test stream. If you plan to stream more, consider hardware and setup improvements that make overlays look sharper on broadcast — our Top 5 accessories guide covers practical streaming gear and ergonomics for a better experience: Top 5 Must‑Have Accessories for Your Gaming Setup.

Want to explore modding and community coordination? See similar community preservation projects for ideas on keeping older games alive: Map Preservation: A Community Plan for Arc Raiders.

Final notes

Achievement injectors for Linux are a great example of open source ingenuity — they let you reintroduce the pleasure of trophies into titles that never shipped with them. Use them responsibly, back up saves, and contribute to the projects that make this possible. With a bit of setup you’ll have unlock animations on stream, a persistent achievement history, and a new way to enjoy the games you love.

Advertisement

Related Topics

#mods#linux#how-to
A

Alex Mercer

Senior SEO Editor

Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.

Advertisement
2026-04-19T20:09:39.243Z