Adds support for time goals to Chronometrist
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
contrapunctus 6cb939d160 Update links 1 year ago
.dir-locals.el Add .dir-locals.el 2 years ago
.gitignore Add .gitignore 2 years ago Bump versions 1 year ago
Cask Bump versions 1 year ago Update links 1 year ago Add TODO file 2 years ago
UNLICENSE Add licenses, README, CHANGELOG, Cask file 2 years ago
WTFPL Add licenses, README, CHANGELOG, Cask file 2 years ago
chronometrist-goal.el Update links 1 year ago


Adds support for time goals to Chronometrist


You can get chronometrist-goal from

chronometrist-goal requires alert.el and, of course, Chronometrist


First, hook chronometrist-goal to chronometrist -

(add-hook 'chronometrist-mode-hook 'chronometrist-goal-minor-mode)

Then, define some goals in chronometrist-goal-list

(setq chronometrist-goal-list
      '((60 "Programming")
        (30 "Writing" "Composing")
        (30 "Reading" "Music")))

The numbers stand for the minutes you want to set as the goal.

Observe that you can have any number of tasks after the goal - which is a way of saying you aim to spend that much time on any one of the tasks that follow. In the above example, we aim to spend 60 minutes on Programming, 30 minutes on either Writing or Composing, and 30 minutes on either Reading or Music.

Note - this variable may be subsumed into chronometrist, at an undefinite point in the future.

And you're all set! Run chronometrist again and marvel at your goal times displayed in the buffer.

With the default configuration, when you start tracking time, you will be notified when you

  • are five minutes away from the goal,
  • have reached the goal, and
  • have exceeded the goal by five minutes.

If a task doesn't have a goal, you will be reminded of the time you have spent on it, every fiften minutes.


See the Customize groups chronometrist for variables intended to be user-customizable.

Notification style

You may be interested in customizing alert.el too, especially alert-default-style - the author uses -

(setq alert-default-style 'libnotify)

Notification times

The custom variable chronometrist-goal-alert-functions is a list of functions which are run by chronometrist-goal-run-alert-timers. Each of these functions starts a timer, which notifies you at a certain time.

You can add or remove functions from this list to customize the times at which you are notified. The functions added to the list by default are tiny (7~9 lines) and (hopefully) easy for an interested user to base their own alert functions on.


A user desiring even greater control may define their own versions of chronometrist-goals-run-alert-timers and chronometrist-goals-stop-alert-timers (preferably using them as a template) and add them to the desired hooks.


  • clear notifications on file change event
  • define types for custom variables
  • clock in -> go over the goal, get the 'exceeding' -> clock out, file changes, the exceed alert is shown again

Contributions and contact

Feedback and MRs very welcome. 🙂

If you have tried using chronometrist/chronometrist-goal, I'd love to hear your experiences! Get in touch with the author and other Emacs users in the Emacs channel on the Jabber network - (web chat)

(For help in getting started with Jabber, click here)


I dream of a world where all software is liberated - transparent, trustable, and accessible for anyone to use or improve. But I don't want to make demands or threats (e.g. via legal conditions) to get there.

I'd rather make a request - please do everything you can to help that dream come true. Please Unlicense as much software as you can.

chronometrist-goal is released under your choice of Unlicense or the WTFPL.

(See files UNLICENSE and WTFPL).


wasamasa, bpalmer, aidalgol, and the rest of #emacs for their tireless help and support