Getting Steam Deck Tracker Daily to Actually Work
I've been running a daily tracking setup on my Steam Deck for about a year now. The short version: Steam Deck Tracker Daily is a lightweight utility that monitors your library, records session length, and spits out a daily report. It's not fancy, but it gets the job done without the bloat some alternatives push. The app hooks into Steam's webAPI for library data, captures playtime in real time, and stores sessions in a local SQLite database. Each day it generates a summary file — usually a JSON or CSV — that you can pull into whatever spreadsheet or dashboard you're using. It runs in the background on the Deck, uses roughly 40-60 MB of RAM while idle, and writes a new row to the database every time a game session ends. Setup is straightforward. Download the latest release from the GitHub repo, extract it to ~/homebrew/ or wherever you keep your utilities, run the install script that comes with it, and configure your output path in the config.json file. The default session timeout is 10 minutes — if the game sits idle longer than that, the session closes. You can change that number if you want.
One thing most guides skip: you need to enable Steam's non-Steam game detection if you're tracking external apps. Without that, anything outside the Steam library simply won't appear in your reports. I learned that the hard way after spending an afternoon confused about why my Linux native builds showed zero playtime. Added them as non-Steam games in Steam's desktop client, restarted the tracker, and they started showing up the next morning.
Common pitfalls and what I do about them
The biggest issue I've hit is duplicated sessions when the Deck sleeps mid-game and then wakes back up. The tracker sometimes logs two separate entries for what was one continuous play session. The workaround is to set the reconnect timeout in config.json to something higher than the default — I use 300 seconds — and then manually merge duplicates using a quick Python script that groups sessions by game ID and adjacent timestamps. Another problem is that the app doesn't handle games that crash or terminate unexpectedly. If a game exits abnormally, the session may never close, leaving your playtime artificially inflated. I added a watchdog cron job that checks the tracker's own status every 5 minutes and forces a flush if it finds any open sessions older than 3 hours. Privacy-wise, the tracker stores everything locally. It doesn't phone home to any server. That's one reason I stick with it over cloud-based alternatives, though it means you're responsible for your own backups. I sync the SQLite file to a remote folder through Syncthing every night.
Get the Full Details

How it compares to the alternatives
Steam's built-in playtime stats are accurate for library titles but give you nothing in terms of customization or export. DesktopMate and Playtime.app offer more polished interfaces but either require subscriptions or send data to external servers. Steam Deck Tracker Daily sits somewhere in between — it's bare bones, but it gives you raw access to your data without locking it behind a paywall. The main limitation is that it only tracks games launched through Steam. Emulators and standalone Linux apps require the non-Steam game workaround I mentioned. Performance impact is negligible on a well-maintained install, but if you're on an older card with less than 16 GB of free storage, the database can grow fast. A year of heavy use with a large library pushes it past 200 MB. If you want something simpler and don't need detailed reports, the built-in Steam overlay stats might be enough. If you need automation, custom exports, or long-term archival, this is worth the initial setup time. Most people have it running within 20 minutes. After that, it just works.