Skip to content
Smallest emacs pomodoro timer (1 char)
Emacs Lisp
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



This package provides a little pomodoro timer in the mode-line.



  • Install from melpa (

  • Use (require 'redtick). After requiring, it shows a little red tick (✓) in the mode-line. When you click on it, it starts a pomodoro timer. The pomodoro description is set using current-buffer and which-function. Redtick description

  • You can launch a pomodoro by M-x redtick, or M-x redtick-with-description (manual description).

  • By default your pomodoro info is saved to "~/redtick-history.txt". You can set redtick-history-file to nil to avoid that.

You should install SoX (Sound eXchange if you want to hear the clock ticking! (be careful, in windows you should clear the "" in the sox path to allow emacs to find the executable)

It only shows the timer in the selected window (a moving timer replicated in each window is a little bit distracting!).


I thought about this, after seeing the spinner.el package.


I tried to make it efficient:

  • It uses an elisp timer to program the next modification of the pomodoro timer.
  • Only works when the mode-line is changed.

Thanks to

  • Malabarba, for the spinner and smart-mode-line packages.
  • abo-abo, for asking how to check if the current window is selected from inside the mode-line, and Drew for answering it.
  • purcell at melpa, for reviewing the code.
  • wellons at, for the code used to save and restore lisp data.
  • Alexani, for the sound of a pocketwatch ticking found at ''.
  • unfa, for the sound of a clock making a perfect 10-second loop (cut to make a 2-second loop) found at ''.
  • Jeremy Seitz, for the fantastic 🎶 sounds that he created with a Nord Modular synthesizer, published in 2007 in his blog, and that I've been using since then when autotesting in Ruby.
  • Carlo Zancanaro for cleaning the main loop using hooks.
You can’t perform that action at this time.