A game scrobbler for Backloggd.
Tired of manually logging every play session on Backloggd? Me too :)
Apploggd automatically detects what you're playing, times the session and logs the playtime to your Backloggd journal when you close the game.
- What it is
- Features
- Requirements
- Installation
- How it works under the hood
- Privacy and data
- Troubleshooting
- Known limitations
- Credits
Apploggd lives in the system tray, watches which processes and windows you have open and recognizes your running games. When you close the game, it lets you log the play session to your Backloggd journal without ever opening a browser. There's nothing to configure beyond signing in once.
This app is not meant to be a 1:1 Backloggd client. Its goal is to automate logging play sessions to your account.
- Automatic game detection — by executable name (game database) and, as a fallback, by window heuristics (known game engines, fullscreen windows, and so on). On Linux, Steam games (native or through Proton) are recognized by their Steam App ID.
- Emulated games — RetroArch, Dolphin, Cemu, PPSSPP, DuckStation and PCSX2 are supported, so the session is logged for the game actually running in the emulator, across 20+ consoles (Game Boy, DS, 3DS, NES, SNES, Nintendo 64, GameCube, Wii, Wii U, Mega Drive, Dreamcast, PlayStation, PS2, PS3, PSP, PS Vita, Xbox, Xbox 360...).
- Manual picker — if a game isn't recognized, you can search Backloggd from within the app and pick the right one.
- Playtime accumulates per day — if you play several sessions of the same game on the same day, they're added to the existing entry instead of overwriting it.
- Started / finished — a session can be marked as the day the game was started or finished, like Backloggd's own play session options.
- Pending sessions — sessions can be left in a Pending section to review and save later, on the day they were played. There's also a setting to send every session there without asking.
- Blacklist — apps and emulated games that shouldn't be detected can be added to a blacklist.
- Controller support — the whole app can be used with a controller, without leaving the couch.
- Offline mode — with a remembered session, the app keeps working without a connection and reconnects on its own.
- "Recently played" list with your latest journal entries.
- Self-updating — both the app and its detection database update themselves.
| Operating system | Windows 10/11 or Linux (x64). (macOS is not supported yet) |
| Browser | A Chromium-based one (Chrome, Edge, Chromium). If there isn't one, the app will offer to download its own (~400 MB). |
| Account | A Backloggd account. |
There's no installer: Apploggd is portable on both systems. Get the latest version from the releases page.
- Download
Apploggd-v<version>-win-x64.zip. - Extract it wherever you like. It expands into an
Apploggdfolder — keep its contents as they come:Apploggd.exe,Update.exeandcurrent\all have to stay together for the app to be able to update itself. - Run
Apploggd.exe.
- Download
Apploggd-v<version>-linux-x64.zip. - Extract it wherever you like. It expands into an
Apploggdfolder withApploggd.AppImageinside, already executable. Updates rewrite that same file in place. - Run
Apploggd.AppImage.
Backloggd has no public API, and that fact explains most of this project's design decisions.
A ~10 MB file that maps executable names to games: name, aliases, IGDB id, cover, artwork and the slug of its Backloggd page. When a process matches, the app already knows exactly which game it is and how to reach its page.
Some executables are generic (hl2.exe belongs to several games), so entries may include folder
segments, and the process's actual path is checked against them.
The app updates this file automatically at startup, downloading it from this repository with a
conditional check (ETag): if it hasn't changed, the download is skipped. It's stored in your
local data folder, and the app always ships an embedded copy as a fallback for the first run or
when you're offline.
If a game isn't in the database, the window heuristics kick in: they look for window classes of known engines (Unreal, Unity, Source, SDL, GLFW, etc) or fullscreen windows, with exclusion lists for browsers, store launchers, Discord, OBS, IDEs, etc.
On Linux most games run through Proton/Wine, so the game's .exe and its path are read from the
Wine process and checked against the same database. Steam games, native ones included, are also
recognized by their Steam App ID, and since X11 windows carry no engine classes, the window heuristics
look at the libraries and files of the process instead (Unity, Unreal, Godot, Ren'Py...).
Emulators have their own detectors: they work out which ROM, ISO or title is running (from the emulator's memory, its window title or its open files, depending on the emulator and the system) and identify the game from its serial or name.
When detection only yields a window title (no game identified), a local fuzzy match is
attempted against the names and aliases in the JSON (normalizing ™®© symbols, version suffixes,
parentheses...). If that fails, IGDB is queried through a dedicated
Cloudflare Worker (apploggd.nik250dev.workers.dev).
The Worker acts as a proxy — the app sends it the title, it queries IGDB with its own credentials, and returns the game's id along with its cover, artwork and URL.
With no API, the only way is to automate a real browser. Apploggd uses Playwright to drive a headless Chromium instance that:
- signs in and obtains your account's cookies,
- opens the game's page, goes to the Journal tab, jumps to today, adds the session to the time already logged and saves,
- and reads your journal for the "Recently played" list.
Your password is never stored. It's only used to sign in and then discarded.
Everything Apploggd stores lives in %LOCALAPPDATA%\Apploggd\ on Windows and in
~/.local/share/Apploggd/ on Linux:
| File | Contents |
|---|---|
settings.json |
Your preferences |
user.dat |
Session cookies, encrypted (DPAPI on Windows, tied to your user; the system keyring on Linux) |
user.name |
Username of the remembered session, so the app can start offline |
Keys\ |
Encryption keys |
detectable_processed.json |
Detection database |
blacklist.json |
Apps and games you've blacklisted |
pending_sessions.json |
Sessions left in Pending |
Logs\ |
Daily diagnostic logs (they rotate automatically, 5 files max) |
None of this leaves your machine. The only connections the app makes are to Backloggd (your
account), the IGDB Worker (game titles, to identify them), GitHub (detection database and version
check) and images.igdb.com (covers and artwork).
You can wipe all of it from Settings → Account & Data → Delete data.
It says it can't find a browser
Apploggd needs Chromium (or a Chromium-based browser). Install Chrome or Edge, or let the app download its own copy.
On Linux, it says the browser is missing system libraries
On a fresh install, the Chromium the app downloads may need libraries the distro doesn't ship by
default (libnss3, libasound2...). The notice lists them and gives the command that installs them
(it needs sudo, so the app doesn't run it on its own). Run it in a terminal and hit Retry.
It doesn't detect my game
Its executable may not be in the database and its window may not match the heuristics (common with windowed games running on uncommon engines). If it detects the session but doesn't identify the game, use the manual picker in the confirmation window.
Please open an issue with the game's name and
its executable name (e.g. MyGame.exe) so it can be added to the detection database.
It detects something that isn't a game
The window heuristics can produce false positives with fullscreen applications. Just hit Discard in the confirmation window: nothing gets logged.
Please open an issue with the name of the application (and its executable, if you know it) so it can be added to the exclusion list.
It asks me to sign in again
Your Backloggd session has expired or was closed elsewhere (password change, logout in the browser). Just sign in again as usual.
It fails to sign in/save the session
This is usually Backloggd's anti-bot protection kicking in, or a change on their site. Try again
after a while; if it persists, check the latest log in the Logs folder (see
Privacy and data) and open an issue with the error.
- macOS is not supported. The app may start, but game detection doesn't work there.
- On Linux, window detection needs X11/XWayland. Native Wayland windows can't be listed by other apps, so a game that isn't in the database or on Steam and runs as a native Wayland window won't be detected. Most games (Proton, Unity, SDL 2) use XWayland by default.
- On Linux, minimizing to the tray needs a tray (KDE, or GNOME with the AppIndicator extension). Without one, the option is hidden and closing the window quits the app.
- Apploggd depends on the structure of the Backloggd website. A redesign of the site can break sign-in or the logging of new sessions until an update is released.
Created by nik250.
Game data from IGDB. This project is not affiliated with or endorsed by Backloggd or IGDB.