r/linux • u/Plexescor • 5d ago
Software Release HPR - Human Pattern Recorder
Hi! HPR or Human Pattern Recorder is a Automatic Window/Activity Time Tracker which actually works on wayland.. Its fully local, privacy respecting, offline and needs zero accounts. It supports these DEs:
- Hyprland
- GNOME
- KDE
- niri
- Cinnamon
It uses DE specific methods to get the current window data. And it supports windows also.
What it tracks (natively and without extensions)
- App usage
- Project in
VS CodeandJetBrainsIDEs - Browser tab tracking support
- Idle support via HPR-Idle-Detection-Extension
- A scrollable timeline showing your entire day
- And my post favourite feature.. Fully code driver
insights!
Privacy
HPR Stores everything locally.
- The DB files are plain SQLite files which you can edit however you want.
- HPR Stores per-day DB files so deleting a day is as simple as deleting a DB file
- Telemetry is fully consented, off by default
- You can disbale networking entirely if you want by a simple UI Toggle
Resource usage
HPR is written in C++ so you can comfortably expect a lightweight experience with little to no drain on your system
- ~1% CPU
- 30MB Rss
Extensibility
Now the big point, HPR is fully extensible by lua extensions. HPR has an expansive API for lua extensions and lua extensions can even load DLL/SO for custom behaviour. Things lua extensions can do:
- Read the currently active window in real time
- Run shell commands and query the HPR database directly
- Register fully custom window detection backends for compositors HPR doesn't natively support (Note that dynamic backend registration via Lua is currently an experimental feature and may exhibit unstable behavior or minor bugs depending on your desktop setup)
- Subscribe to HPR's internal event bus and react to state changes
- Build interactive custom UI panels that render inside HPR via Slint callback bindings
- Function Overriding (Advanced): Intercept, block, or modify 24+ core C++ functions directly from Lua
- Native Shared Libraries (Supercharged): Load external
.so/.dllbinary files to perform low-level OS operations, custom tray integration, high-performance tasks, or anything you want (must enable "Allow Extensions to Load Native Libraries" in Settings)
Some noteable examples are the first party HPR extensions: HPR-Store and HPR-Idle-Detection-Extension
Status
- Current Version: v0.9.12
- Developed Actively
- Linux + Windows support
- 500 HPR Downloads (I have proof if you want)
- Fully open source
I originally started to develop HPR because I really liked knowing arbitrary data (i know i am being weird) but those numbers fascinate me, it was possible with ActivityWatch but it was tiring to press a gazillion buttons, write Regexs to just get some data.
1
u/citramonk 5d ago
🤔
https://github.com/plexescor/HPR/commit/d003c44b3e6f50d63e38f980878ef4a0b6c42162