Canrylog


Tags
apps emacs
Homepage
https://canrylog.gitlab.io
Gitlab
https://gitlab.com/canrylog

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.

Tracking file

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 Sleep, while 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).

Emacs version

My usual workflow is:

  • Use canrylog-switch-task to switch to something I’m doing or working on
  • Switch to the task “Downtime” to signify that I’ve clocked out
  • Use canrylog-describe-task to see a summary on a task
  • Use canrylog-view-main (aliased to 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.

/canrylog-20201118-task-view.png
Task view
/canrylog-20201118-dashboard.png
Main view

Command line version

https://gitlab.com/canrylog/canrylog-cli

I revamped the whole thing again on 2024-03-25. Current features:

  • canrylog switch pops up a list of tasks to select, then switches to it
  • canrylog config to configure time tracking repo
  • canrylog task duration to check the duration of a task