A pomodoro timer for Emacs
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.
 
 
Brady McDonough 4449a1cc9e
Corrected kill hook behaviour
3 years ago
.gitignore Tweaked the gitignore to include more emacs editing clutter 3 years ago
Makefile Break load-test out of main target 3 years ago
README.md Started a Readme, changed config defaults to align 3 years ago
chime.wav Initial commit, begin cleanup! 3 years ago
tacc-pkg.el Initial commit, begin cleanup! 3 years ago
tacc.el Corrected kill hook behaviour 3 years ago
tags-history Initial commit, begin cleanup! 3 years ago
tick.wav Initial commit, begin cleanup! 3 years ago

README.md

tacc.el

A pomidoro timer for emacs

tacc implements a slightly modified pomidoro timer with a focus on customizability. Sometimes all you need is a timer to make the pomidoro method work. By default this is just that, a 30 minute timer with a 5 minute break and the option to tag you work session. It can also be easily modified to add or subtract time from each successive work and break cycle and with slightly more effort can be made to process and record your timer stats.

Customization

In M-x customize both the timer's appearence and behavior can be customized in Applications under the group Tacc. These can also all be set in your init.el, just be aware that customize renders a lisp symbol name like tacc-work-seconds as "Tacc Work Seconds"

The root customization dictates the timer length and can be used to set the increment in seconds. As a small bonus to readability, if you set these values in your init.el a function (m:s 1 30) can for example be used instead of 90.

Under the tacc-behavior group there are a number of hook and function customizations. These are best to set in your init.el, since you can define your functions next to where you (add-hook).

Serialization and Record Keeping

If you want to keep a record of your work and break times you can! The catch is that you need to code it yourself.

Here's a simple example. It doesn't do much, but hopefully it's instructive.

(tacc-register-serialization "json" json-serialize)
(add-hooks 'tacc-json-output-functions (lambda (m) (message "%s" m)))

The first call generates a binding for a set of output functions, in this case named tacc-json-output-functions. All functions in that hook will be fed the result of calling json-serialize on a list of time records.

Time records are laid out in an alist format as follows:

(:ts    . <unix timestamp>)
(:end   . <unix timestamp>)
(:state . <'break | 'work>)
(:tag   . <an assigned tag name>)