Fix syntax of example categorize.cfg file
[darcs-mirror-arbtt.git] / categorize.cfg
1 -- Comments in this file use the Haskell syntax:
2 -- A "--" comments the rest of the line.
3 -- A set of {- ... -} comments out a group of lines.
4
5 -- This defines some aliases, to make the reports look nicer:
6 aliases (
7         "sun-awt-X11-XFramePeer"  -> "java",
8         "sun-awt-X11-XDialogPeer" -> "java",
9         "sun-awt-X11-XWindowPeer" -> "java",
10         "gramps.py"               -> "gramps",
11         "___nforschung"           -> "ahnenforschung",
12         "Pidgin"                  -> "pidgin"
13         )
14
15 -- A rule that probably everybody wants. Being inactive for over a minute
16 -- causes this sample to be ignored by default.
17 $idle > 60 ==> tag inactive,
18
19 -- A rule that matches on a list of strings
20 current window $program == ["Navigator","galeon"] ==> tag Web,
21
22 current window $program == "sun-awt-X11-XFramePeer" &&
23 current window $title == "I3P"
24   ==> tag Program:I3P,
25
26 current window $program == "sun-awt-X11-XDialogPeer" &&
27 current window $title == " " &&
28 any window $title == "I3P"
29   ==> tag Program:I3P,
30
31 -- Simple rule that just tags the current program
32 tag Program:$current.program,
33
34 -- I'd like to know what evolution folders I'm working in. But when sending a
35 -- mail, the window title only contains the (not very helpful) subject. So I do
36 -- not tag necessarily by the active window title, but the title that contains
37 -- the folder
38 current window $program == "evolution" &&
39 any window ($program == "evolution" && $title =~ /^(.*) \([0-9]+/)
40   ==> tag Evo-Folder:$1,
41
42 -- A general rule that works well with gvim and gnome-terminal and tells me
43 -- what project I'm currently working on
44 current window $title =~ m!(?:~|home/jojo)/projekte/(?:programming/(?:haskell/)?)?([^/)]*)!
45   ==> tag Project:$1,
46 current window $title =~ m!(?:~|home/jojo)/debian!
47   ==> tag Project:Debian,
48
49 -- This was a frequently looked-at pdf-File
50 current window $title =~ m!output.pdf! &&
51 any window ($title =~ /nforschung/)
52   ==> tag Project:ahnenforschung,
53
54
55 -- My diploma thesis is in a different directory
56 current window $title =~ [ m!(?:~|home/jojo)/dokumente/Uni/DA!
57                          , m!Diplomarbeit.pdf!
58                          , m!LoopSubgroupPaper.pdf! ]
59   ==> tag Project:DA,
60
61 current window $title =~ m!TDM!
62   ==> tag Project:TDM,
63
64 ( $date >= 2010-08-01 &&
65   $date <= 2010-12-01 &&
66   ( current window $program == "sun-awt-X11-XFramePeer" &&
67       current window $title == "I3P" ||
68     current window $program == "sun-awt-X11-XDialogPeer" &&
69       current window $title == " " &&
70       any window $title == "I3P" ||
71     current window $title =~ m!(?:~|home/jojo)/dokumente/Uni/SA! ||
72     current window $title =~ m!Isabelle200! ||
73     current window $title =~ m!isar-ref.pdf! ||
74     current window $title =~ m!document.pdf! ||
75     current window $title =~ m!outline.pdf! ||
76     current window $title =~ m!Studienarbeit.pdf! )
77 ) ==> tag Project:SA,
78
79
80 -- Out of curiosity: what percentage of my time am I actually coding Haskell?
81 current window ($program == "gvim" && $title =~ /^[^ ]+\.hs \(/ )
82   ==> tag Editing-Haskell,
83
84 {-
85 -- Example of time-related rules. I do not use these myself.
86
87 -- To be able to match on the time of day, I introduce tags for that as well.
88 -- $time evaluates to local time.
89 $time >=  2:00 && $time <  8:00 ==> tag time-of-day:night,
90 $time >=  8:00 && $time < 12:00 ==> tag time-of-day:morning,
91 $time >= 12:00 && $time < 14:00 ==> tag time-of-day:lunchtime,
92 $time >= 14:00 && $time < 18:00 ==> tag time-of-day:afternoon,
93 $time >= 18:00 && $time < 22:00 ==> tag time-of-day:evening,
94 $time >= 22:00 || $time <  2:00 ==> tag time-of-day:late-evening,
95
96 -- This tag always refers to the last 24h
97 $sampleage <= 24:00 ==> tag last-day,
98
99 -- To categorize by calendar periods (months, weeks, or arbitrary periods),
100 -- I use $date variable, and some auxiliary functions. All these functions
101 -- evaluate dates in local time. Set TZ environment variable if you need
102 -- statistics in a different time zone.
103
104 -- You can compare dates:
105 $date >= 2001-01-01 ==> tag this_century,
106 -- You have to write them in YYYY-MM-DD format, else they will not be recognized. 
107
108 -- “format $date” produces a string with the date in ISO 8601 format
109 -- (YYYY-MM-DD), it may be compared with strings. For example, to match
110 -- everything on and after a particular date I can use
111 format $date =~ ".*-03-19"  ==> tag period:on_a_special_day,
112 -- but note that this is a rather expensive operation and will slow down your
113 -- data processing considerably.
114
115 -- “day of month $date” gives the day of month (1..31),
116 -- “day of week $date” gives a sequence number of the day of week
117 -- (1..7, Monday is 1):
118 (day of month $date == 13) && (day of week $date == 5) ==> tag day:friday_13,
119
120 -- “month $date” gives a month number (1..12), “year $date” gives a year:
121 month $date == 1 ==> tag month:January,
122 month $date == 2 ==> tag month:February,
123 year $date == 2010 ==> tag year:2010,
124 -}
125
126 }