My own time tracker.
The core idea is that we simply track a list of events stating that from a moment onward, some task is currently active.
I want it to be available in many platforms, but so far there is only an Emacs version.
The core tracking file looks like this:
2019-01-15T22:40:18+0900 Entertainment:Gaming:osu! 2019-01-15T23:04:56+0900 Development:Canrylog:Emacs 2019-01-15T23:13:41+0800 Notes:Scheduling 2019-01-15T23:28:19+0800 SocialMedia:Youtube 2019-01-16T00:24:53+0800 Sleep
Each line represents a “task switching event”. Each line starts with a timestamp, a separator (two spaces), and a task name.
The task name can be broken down into a hierarchy, using a colon (
:) to separate paths.
This tells us that the currently active task is
SocialMedia:Youtube was active between 2019-01-15T23:28:19+0800 and 2019-01-16T00:24:53+0800. All timestamps are in ISO 8601, sorted chronologically (taking the UTC offset into account).
My usual workflow is:
canrylog-switch-taskto switch to something I’m doing or working on
Switch to the task “Downtime” to signify that I’ve clocked out
canrylog-describe-taskto see a summary on a task
canrylog) to see my current task and how much time it’s been active for.
I’ve also built a task list view, although that’s something that isn’t really fleshed out just yet.
Command line version
Currently the tracking file location is hard coded, as I’ve only been working on the current version for less than 3 hours.
canrylog switch-to <task>