The Best Activity Trackers for Linux Wayland in 2026
If you're on Linux Wayland and want to know where your time actually goes, your options are surprisingly limited. Most activity trackers were built for X11, assume a web dashboard, or drag a Python runtime and 200MB of RAM into your session. Here's an honest breakdown of what's actually worth using in 2026.
1. HPR — Human Pattern Recorder
GitHub | Free | Open Source | C++23
Full disclosure: I built this. I'm a 16-year-old solo developer in India and HPR is my main project. I'm including it first because it's genuinely the best option for Wayland-native Linux tracking — not because I made it.
What it actually does
HPR polls your active window every 50ms, all day, and builds a complete log of where your time went. No extensions. No accounts. No server. Just a compiled C++23 binary that starts instantly and writes to local SQLite.
You get three things live:
- What you're in right now
- Total time per app today
- Your complete switch history, timestamped
Historical queries work across any date range — pick a single day, last N days, or a custom range. Multiple daily .db files get merged on a background thread without ever pausing live tracking.
Why it's different on Wayland
Most trackers bolt on Wayland support as an afterthought. HPR was built with native Wayland backends from day one:
| Platform | Backend |
|---|---|
| Hyprland |
hyprctl IPC |
| GNOME (Wayland) | Custom GNOME Shell extension |
| KDE Plasma 6+ | KWin D-Bus scripting |
| Cinnamon |
org.Cinnamon.Eval D-Bus |
| niri |
niri msg IPC |
| Windows 10/11 | Win32 API |
No hacks. No XWayland fallback. Each compositor gets its own proper backend.
Features that nothing else has
Browser tab tracking without extensions — HPR reads the window title directly. When Chrome or Firefox is focused, it parses the tab name automatically. No browser extension to install, no permissions to grant.
VS Code project tracking — HPR parses VS Code's window title to extract the active project name. You get per-project time breakdowns with zero setup.
App Limits and Goals — set a daily cap on any app. Hit the limit and HPR sends a notification. Optionally it force-quits the app. Goals work the other way — set a minimum daily target and track progress live.
Day Construction Timeline — a zoomable, scrollable visual timeline of your entire day. Preset zoom levels from 1h to 24h. Gap detection handles reboots and closed sessions cleanly.
Advanced Pattern Analysis — 9 cross-day metrics including escape pattern (how often you jump from work to browser), return rate, peak focus hour, deep work before noon percentage, and weekend vs weekday comparison.
Lua 5.4 Extension Engine — drop a .lua file into your extensions folder and HPR loads it automatically. Each extension runs in an isolated VM on its own thread. You can read the active window in real time, query the SQLite database, subscribe to internal events, build custom UI panels, and override 26+ core C++ functions from Lua. Stress tested to 1000 simultaneous extensions.
Performance
- ~8MB RSS on Windows
- ~22MB private footprint on Linux (htop shows ~47MB but ~25MB of that is shared Mesa/LLVM GPU pages — not HPR's actual cost)
- 1-3% CPU during normal use
- ~19KB per day of tracking data
- Instant startup
Privacy
No telemetry by default. No accounts ever. The networking libraries are compiled in to power the Lua HTTP API and optional anonymous analytics — but HPR itself never phones home unless you explicitly enable it.
Install
# Arch Linux
yay -S hpr
# Windows
# Download the Inno Setup installer from GitHub releases
# Linux manual
chmod +x installHPRConfigAndUi.sh && ./installHPRConfigAndUi.sh && ./HPR
The honest part
HPR is v0.9 and I'm the only developer. It's not as mature as ActivityWatch. If you need a battle-tested tool with years of production use and a full web dashboard, read the next section. If you're on Wayland, care about memory footprint, and want Lua scripting, give HPR a try.
Ko-fi link is in the README if it's useful to you.
2. ActivityWatch
activitywatch.net | Free | Open Source | Python
ActivityWatch is the most mature open source activity tracker available. It has been in active development for years, has a proper web dashboard, a plugin ecosystem, browser extensions, and a large community. If you want something that just works and has been battle-tested by thousands of users, this is the honest recommendation.
What it does well
- Full web dashboard with detailed visualizations
- Browser extensions for Chrome and Firefox
- Plugin ecosystem — community has built integrations for VS Code, AFK detection, and more
- Cross-platform (Linux, Windows, macOS)
- REST API for building your own integrations
- Active community and regular releases
Wayland situation
ActivityWatch's Wayland support has historically been its weak point. The core watcher uses wnck which is X11-based. Community-maintained Wayland watchers exist but require separate installation and vary in reliability per compositor. On Hyprland and niri especially, you'll need to find and configure a third-party watcher.
Resource usage
ActivityWatch runs a local web server, a Python daemon, and several watcher processes. Expect 200MB+ RAM in real use. It also takes several seconds to start. For a background daemon that runs all day this matters on lower-spec hardware.
Bottom line
ActivityWatch is the right choice if you want maturity, community, and a full dashboard. It's what HPR is measured against. The gap is Wayland support and resource footprint.
3. Wakatime (self-hosted: Wakapi)
wakapi.dev | Free tier | Open Source self-hosted option
Wakatime is a different category — it tracks coding time specifically, not general window focus. If your main goal is understanding how much time you spend in your editor and across projects, it's worth knowing about.
What it does
Editor plugins (VS Code, Neovim, JetBrains, etc.) send heartbeats to a Wakatime-compatible server every time you type. You get per-project, per-language, and per-file breakdowns of coding time.
Wakapi is the self-hosted open source server that's compatible with the Wakatime API. Run it locally, point your editor plugins at it, and all your data stays on your machine.
What it doesn't do
Wakatime only knows about time in editors. It has no awareness of browser usage, application switching, or anything outside your coding environment. It's a coding time tracker, not a general activity tracker.
Wayland situation
Irrelevant — it runs entirely through editor plugins, no window system access needed.
Bottom line
If your specific question is "how much time did I actually spend coding vs everything else" and you don't care about the rest, Wakapi is elegant and lightweight. For general activity tracking it's out of scope.
Quick Comparison
| HPR | ActivityWatch | Wakapi | |
|---|---|---|---|
| Native Wayland | ✅ All major compositors | ⚠️ Community watchers | ✅ N/A (editor plugins) |
| RAM usage | ~22MB private | 200MB+ | Minimal |
| Web dashboard | ❌ | ✅ | ✅ |
| Browser tab tracking | ✅ Built-in | ✅ Extension required | ❌ |
| VS Code projects | ✅ Built-in | ✅ Plugin required | ✅ Built-in |
| App limits/goals | ✅ | ❌ | ❌ |
| Scripting/extensions | ✅ Lua 5.4 | ❌ | ❌ |
| Maturity | v0.9, solo dev | Mature, team | Mature |
| Startup time | Instant | Several seconds | Server |
| Coding-specific | ❌ | ❌ | ✅ |
Which one should you use
You're on Hyprland, niri, or GNOME Wayland and want something lightweight → HPR. It has native backends for all of them, starts instantly, and uses almost no RAM.
You want something mature with a web dashboard and don't mind Python overhead → ActivityWatch. It's been around longer and has a larger ecosystem.
You specifically want to track coding time by project and language → Wakapi with the VS Code/Neovim plugin.
All three are free and open source. There's no wrong answer — it depends on what you're optimizing for.``
Top comments (0)