Implements of Intrigue.

A kinological curation.

Tooling

Arbtt

tldr; Use this tool for non-manual time tracking.

Arbtt is a tool created by Joachim Breitner , that runs as a daemon, recording open windows, focus windows, and their titles, and time spend inactive.

The additional functionality comes from arbtt-stats, which, according to rules defined by you in your categorize.cfg file, which uses a DSL (written in Haskell, I assume), that will describe the rules by which arbtt-stats will filter your log data, stored in ~/.arbtt/capture.log, and provide you time-tracking/productivity statistics on your day to day endeavors.

While I haven’t completely configured arbtt, here’s an example of my config (largely based on the example in the documentation), to give you an idea of how it might work on your machine.

In short, every snapshot of your system is a sample that can can have associated tags, such as time of day, or inactive, after a certain amount of idle time. A tag can be preprended with text, followed by a colon, which is a tag category, which of course is also assigned to a sample.

Time tracking is something that, for me, sounds incredibly interesting, but is incredibly droll to engage with, an this is the first tool that’s made that pain point soluble for me, so I hold it in high regard for that.


aliases (
  "chromium" -> "Web Browser",
  "firefox" -> "Web Browser",
  "code" -> "VS Code",
  "gnome-terminal" -> "Terminal",
  "ghostty" -> "Terminal",
  "xfce4-terminal" -> "Terminal",
  "nvim" -> "Neovim",
  "floorp" -> "Web Browser",
  "zen-browser" -> "Web Browser",
  "zen" -> "Web Browser",
)

{
  $idle > 60 ==> tag inactive,

  tag CurrentProgram:$current.program,

  tag CurrentTitle:$current.title,

  current window $program == ["ghostty", "xfce4-terminal"] ==> tag Category:Terminal,
  current window $program == ["floorp", "zen-browser", "zen"] ==> tag Category:Browsing,
  current window $title =~ m/n?vim/ ==> tag Activity:Coding,
  current window $title =~ m/\.([^.]+)\s/ ==> tag FileType:$1,

  $time >= 8:00 && $time < 12:00 ==> tag time-of-day:morning,
  $time >= 12:00 && $time < 17:00 ==> tag time-of-day:afternoon,
  $time >= 17:00 && $time < 22:00 ==> tag time-of-day:evening,
  $time >= 22:00 || $time < 8:00 ==> tag time-of-dat:night
}

kino

A very rich resource that provides perspectives from researchers, on manipulating multi-media data, and the storage systems, operating systems, network protocols etc, that support these processes.

Check out other works from Morgan Kaufmann, they’ve got some other texts that are equally in depth.

Trust me on this one.

I may elaborate further at some point, but, I mean, it speaks for itself.

Just look at that cover.

(Admit it, you think you could fix her.)