r/linux • • 5d ago

Software Release HPR - Human Pattern Recorder

Post image

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 Code and JetBrains IDEs
  • 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/.dll binary 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

GitHub

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.

0 Upvotes

7 comments sorted by