Skip to content
Use Emacs to schedule alarms to focus on a task.
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.


Use Emacs to set timers.

schedule an alarm using Emacs use the system's notification system to display the alarm


egg-timer will be available on MELPA soon. In the meantime, you can download egg-timer.el and ensure that it's available on your load-path so that you can call:

(require 'egg-timer)


This module intentionally does not define any keybindings. If you'd like to set one yourself, consider using and adapting the following snippet:

(require 'egg-timer)
(global-set-key (kbd "C-s-a") #'egg-timer-schedule)

If you'd like to customize the intervals that egg-timer.el uses, the variable egg-timer-intervals should suffice. For example, if you'd like to support a timer for 3 hours:

(setq egg-timer-intervals (add-to-list 'egg-timer-intervals '("3 hour" . 180)))

If you'd like to create a keybinding to immediately schedule an alarm instead of being prompted for a list of options, use egg-timer-do-schedule:

(global-set-key (kbd "C-s-a") (lambda () (interactive) (egg-timer-do-schedule 2)))

For more information:

  • See the module documentation in egg-timer.el.

Alternatives to egg-timer.el

Many timer packages exist, so what's different about egg-timer? Many of the timers on MELPA are pomodoro timers. egg-timer is not exclusively a pomodoro timer -- although you could use egg-timer-do-schedule to create one if you'd like.

egg-timer prompts users using Emacs's built-in completing-read function; this integrates with ivy or other completion libraries that users may prefer. egg-timer also notifies users with notifications-notify, which integrates with the FreeDesktop notification protocol, notifying users at the operating system level.

Enjoy responsibly.

You can’t perform that action at this time.