arbtt – The Automatic Rule-Base Time Tracker

Joachim Breitner

Main author of arbtt 

Sergey Astanin


Martin Kiefel


Muharem Hrnjadovic


Waldir Pimenta

Documentation writer 

Gwern Branwen

Documentation writer 

Table of Contents

Building with cabal-install
Building without cabal-install
Setting up the capture program
Building the documentation
Development version
Configuring the arbtt categorizer (arbtt-stats)
Configuration example
The semantics (informal)
The syntax
Effective Use of Arbtt
Enabling data collection
Checking data availability
Categorizing advice
Long-term storage
External processing of arbtt statistics
Contributed tools
Program references
arbtt and xmonad
Copyright and Contact
arbtt License
Release Notes
Version 0.9.1
Version 0.9
Version 0.8.1
Version 0.8
Version 0.7
Version 0.6.4
Version 0.6.3
Version 0.6.2
Version 0.6.1
Version 0.6
Version 0.5 (The ZuriHac-Release)
Version 0.4.5
Version 0.4.4
Version 0.4.3
Version 0.4.2
Version 0.4.1
Version 0.4
Version 0.3.0
Version 0.2.0
Version 0.1.5
Version 0.1.4
Version 0.1.3
Version 0.1.2
Version 0.1.1
Version 0.1


arbtt is a background daemon that stores which windows are open, which one has the focus and how long since your last action (and possibly more sources later), and stores this. It is also a program that will, based on expressive rules you specify, derive what you were doing, and what for.

It is comparable to the window trackers RescueTime, selfspy, TimeSnapper, and Productive Peach; but it differs from the manual timetrackers like Project Hamster which require the user to type a description of their activities.


The log file might contain very sensitive private data. Make sure you understand the consequences of a full-time logger and be careful with this data.


Building with cabal-install

arbtt comes in the form of a Cabalized[1] package, and is available from hackage. The easiest way of obtaining and installing arbtt is via cabal-install. If you have cabal-install available, just run

$ cabal install arbtt

to download, build and install arbtt.

Building without cabal-install

You can fetch the latest arbtt source tarball from hackage, at Extract the tarball and run the following commands to build and install the arbtt binaries:

$ runhaskell Setup.hs configure
$ runhaskell Setup.hs build
$ runhaskell Setup.hs install

Setting up the capture program

To have arbtt gather useful data, you need to make sure that arbtt-capture is started with your X session. If you use GNOME or KDE, you can copy the file arbtt-capture.desktop to ~/.config/autostart/. You might need to put the full path to arbtt-capture in the Exec line there, if you did not do a system wide installation.

By default, arbtt-capture will save one data sample per minute. If you want to change that, you can pass --sample-rate RATE to arbtt-capture, where RATE specifies the sample rate in seconds.

Building the documentation

Obviously, you can already read the documentation. If you still want to build it yourself, enter the directory doc/ and run make for the documentation in HTML and PDF format.

Development version

If you want to try the latest unreleased state of the code, or want to contribute to arbtt, you can fetch the code with

darcs get

[1] Cabal is the common software packaging for Haskell programs and libraries, see