arbtt: Automatic Rule-Based Time Tracker

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

arbtt is a background daemon that stores which windows are open, which one has the focus and how long since your last action (and possbly 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.

The documentation, which includes the changelog, can also be found at

WARNING: 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.

[Skip to Readme]


Versions 0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.2.0, 0.3.0, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5,, 0.5, 0.6, 0.6.1, 0.6.2, 0.6.4,, 0.7, 0.8, 0.8.1,,,,, 0.9,,,,,,,,,,,,,, 0.10,,, 0.10.1, 0.10.2, 0.10.2, 0.10.3, 0.10.4, 0.11, 0.11.1
Change log None available
Dependencies aeson (>=0.10 && <1.5), array (>=0.4 && <0.6), attoparsec (==0.13.*), base (>=4.7 && <5), binary (>=0.5), bytestring, bytestring-progress, conduit (>=1.2 && <1.4), containers (>=0.5 && <0.7), deepseq, directory, exceptions (>=0.8), filepath, mtl, old-locale, parsec (==3.*), pcre-light, resourcet (>=1.2), strict, terminal-progress-bar (==0.4.*), text, time (>=1.4), transformers, unix, unliftio-core, utf8-string, Win32, X11 (>=1.9) [details]
License GPL-2.0-only
Copyright Joachim Breitner 2009-2013
Author Joachim Breitner <>
Maintainer Joachim Breitner <>
Category Desktop
Home page
Bug tracker
Source repo head: git clone
Uploaded by JoachimBreitner at 2019-03-16T17:26:17Z

Manual Flags

Automatic Flags

If false then depend on time >= 1.5.

If true then depend on time < 1.5 together with old-locale.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for arbtt-0.10.2

[back to package description]

arbtt, the Automatic Rule-Based Time Tracker

© 2009 Joachim Breitner

The Automatic Rule-Based Time Tracker is a desktop daemon that runs in the background and, every minute, records what windows are open on your desktop, what their titles are, which one is active. The accompanied statistics program lets you derive information from this log file, i.e. what how much of your time have you been spending with e-mail, or what projects are your largest time wasters. The mapping from the raw window titles to sensible "tags" is done by a configuration file with an powerful syntax.


You can build and install this program as any other Cabalized program:

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

Other installation options are described in the website.

You also need to make sure that arbtt-capture is started with your X session:

If you want to record samples at a different rate than one per minute, you will have to pass the --sample-rate parameter to arbtt-capture.


Full documentation is now provided in the user manual in the doc/ directory. If you have the docbook xsl toolchain installed, you can generate the HTML documentation by entering "make" in that directory. Otherwise, you can use the online version of the User’s Guide. Beware that this will also reflect the latest development version.


You are very welcome to help the developement of arbtt. You can find the latest source at the git repository at or

User and Developer discussion happens on the arbtt mailing list: To subscribe to the list, visit:

The issue tracker is hosted on bitbucket: Why Bitbucket and not GitHub? Why not, and we need diversitiy even in the cloud! (Don’t worry, you can use your GitHub account there.)

Some of my plans or ideas include:

Any help cleaning, documenting or testing the current code is appreciated as well.

Creating the Windows Installer

The file setup.iss contains an installer script for Inno Setup and can be used to create the windows installer for arbtt. It can be used under wine. To build arbtt under Windows, you need to install the Haskell Platform. Because the Haskell Platform ships an older version of the w32api package from mingw, you also need to download w32api-3.14-mingw32-dev.tar.gz and copy at least the files include/psapi.h and lib/libpsapi.a over the files installed by the Haskell Platform. For the pcre-light package, you need to install the pcre library. Unless you run a German version of Windows, you’ll need to adjust the path to the pcre3.dll file in setup.iss. Install Inno Setup. Create the documentation (make -C doc) and configure arbtt with the --with-ISCC-flag:

$ wine runhaskell Setup.hs configure --with-ISCC='C:\Programme\Inno Setup 5\ISCC.exe'

again adjusting the path if you do not have a German version of Windows. This will put the version name into setup.iss and create the output file as dist/arbtt-setup-<version>.exe.

Download links: