arbtt-chart
Overview
Textual chart for arbtt, the automatic, rule-based time tracker.
Similar to arbtt-graph, just in plain monospace text.
(The above screenshot is generated using my liskin-arbtt-stats which provides a few handy commands and combines data from multiple X sessions and Strava.)
Raw arbtt-stats
output for the same time period looks something like this:
Getting started
-
Install arbtt and make sure
arbtt-capture
runs in your graphical login session. -
Configure arbtt rules in
~/.arbtt/categorize.cfg
. See Configuring the arbtt categorizer, Effective Use of Arbtt, and sample categorize.cfg for arbtt-graph. -
Try
arbtt-stats --output-format=csv --each-category | arbtt-chart
orarbtt-stats --output-format=csv --category=Graph | arbtt-chart
Installation
Using pipx:
pipx ensurepath
pipx install arbtt-chart
To keep a local git clone around:
git clone https://github.com/liskin/arbtt-chart
make -C arbtt-chart pipx
Alternatively, if you don't need the isolated virtualenv that pipx provides, feel free to just:
pip install arbtt-chart
Or, since the only dependency is pandas, you can just sudo apt install python3-pandas
and run arbtt_chart.py
directly. :-)
Usage
$ arbtt-chart --help
usage: arbtt-chart [-h] [--no-stacked] [--subtags] [--totals-re RE]
Plot charts from arbtt-stats to terminal. Expects `arbtt-stats --output-
format=csv --category=โฆ` or `arbtt-stats --output-format=csv --each-category`
output on stdin.
options:
-h, --help show this help message and exit
--no-stacked don't stack bar chart
--subtags recognize subtags (separated by '-') and sort them together
--totals-re RE totals row regexp, default: ^\(total time\)$
Examples
single category
$ arbtt-stats --filter='$date >= 2021-03-0220:00 && $date < 2021-03-0303:00' \
> --min-percentage=2 --category=Activity --output-format=csv \
> | arbtt-chart
Activity
โโโโโโโโ
Proj-arbttโฑ 03:11:40 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทยทยทยทยทยทรทยทยทยท
Chat 00:30:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทโโโโโโยทยทยทรทยทยทยท
(8 entries omitted) 00:15:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทโโโโรทยทยทยท
Web-Social 00:08:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทโโโยทยท
Web-otherโฑ 00:06:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทโโยท
Web-HN 00:06:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทโโ
(unmatched time) 00:01:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทยทโ
(total time) 04:20:20 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
single category, subtags
$ arbtt-stats --filter='$date >= 2021-03-0220:00 && $date < 2021-03-0303:00' \
> --min-percentage=2 --category=Activity --output-format=csv \
> | arbtt-chart --subtags
Activity
โโโโโโโโ
Proj arbttโฑ 03:11:40 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทยทยทยทยทรทยทยทยท
Chat 00:30:20 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทโโโโโโยทยทรทยทยทยท
Web Social 00:08:20 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทโโโรทยทยทยท
otherโฑ 00:06:40 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทโโยทยทยท
HN 00:06:20 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทโโยทยท
(8 entries omitted) 00:15:40 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทโโโ
(unmatched time) 00:01:20 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทยทโ
(total time) 04:20:20 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
multiple categories
$ arbtt-stats --filter='$date >= 2021-03-0220:00 && $date < 2021-03-0303:00' \
> --min-percentage=2 --each-category --output-format=csv \
> | arbtt-chart
Activity
โโโโโโโโ
Proj-arbttโฑ 03:11:40 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทยทยทยทยทยทรทยทยทยท
Chat 00:30:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทโโโโโโยทยทยทรทยทยทยท
(8 entries omitted) 00:15:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทโโโโรทยทยทยท
Web-Social 00:08:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทโโโยทยท
Web-otherโฑ 00:06:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทโโยท
Web-HN 00:06:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทโโ
(unmatched time) 00:01:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทยทโ
(total time) 04:20:20 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Desktop
โโโโโโโ
4_arbtt 02:21:40 โโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทยทยท
6_arbtt_web 00:50:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทโโโโโโโโโโยทยทยทยทยทยทยทยทยทรทยทยทยท
1_irc 00:34:00 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทโโโโโโโยทยทรทยทยทยท
2_web 00:34:00 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทโโโโโโโ
(1 entries omitted) 00:00:20 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทยทโ
(total time) 04:20:20 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Program
โโโโโโโ
urxvt 02:38:00 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทยทยท
google-chrome 01:21:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทโโโโโโโโโโโโโโโโรทยทยทยท
app_element_io 00:14:40 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทโโโยท
(3 entries omitted) 00:06:00 ยทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทยทยทรทยทโโ
(total time) 04:20:20 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
custom inputs
$ arbtt-chart --totals-re='^\(' <<END
> Tag,Time
> Act:Work,02:30:00
> Act:Social,01:20:00
> Act:Mail,00:20:00
> Act:Movie,01:30:00
> (screen),05:40:00
>
> Tag,Time
> Act:Sport,3600
> Act:Commute,1800
> (outside),5400
> END
Act
โโโ
Work 02:30:00 โโโโโโโโโโโโโโโโโโโโโยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยท
Movie 01:30:00 ยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทโโโโโโโโโโโโโยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยท
Social 01:20:00 ยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทโโโโโโโโโโโโยทยทยทยทยทรทยทยทยทยทยทยทยทรทยท
Sport 01:00:00 ยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทโโโโโโโโโยทยทยทยทยทรทยท
Commute 00:30:00 ยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทโโโโโรทยท
Mail 00:20:00 ยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทโโโ
(screen) 05:40:00 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโยทยทรทยทยทยทยทยทยทยทรทยท
(outside) 01:30:00 โโโโโโโโโโโโโยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทรทยท
custom inputs, multiple tables at same scale
$ arbtt-chart <<END
> Tag,Time
> Screen:Work,02:30:00
> Screen:Social,01:20:00
> Screen:Mail,00:20:00
> Screen:Movie,01:30:00
> (total time),05:40:00
>
> Tag,Time
> Outside:Sport,3600
> Outside:Commute,1800
> (total time),5400
> END
Screen
โโโโโโ
Work 02:30:00 โโโโโโโโโโโโโโโโโโโโโโโโโยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยท
Movie 01:30:00 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทโโโโโโโโโโโโโโโโยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยท
Social 01:20:00 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทโโโโโโโโโโโโโโยทยทยท
Mail 00:20:00 ยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทโโโโ
(total time) 05:40:00 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Outside
โโโโโโโ
Sport 01:00:00 โโโโโโโโโโยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยท
Commute 00:30:00 ยทยทยทยทยทยทยทยทยทโโโโโโยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยท
(total time) 01:30:00 โโโโโโโโโโโโโโโยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยทยทยทยทรทยทยทยทยทยทยท