Clone form https://github.com/TatriX/pomidor, with the endgoal of implementing various enhancements like:
- Editable pomodoros
- Customizable timeframes
- Auto stoping current clock on pause
- Resuming current clock after pause
- Report in "org-clock-report"
- Pomodoro planning tool as seen on https://www.freelancingdigest.com/articles/pomodoro-emacs-with-orgmode/
- Play Tick Tok sound while overworking
- Improve code to call notifications directly after break time is over
- Get increasingly agressive after prolonged breaks (every minute break gets more annoying)
- Implement customizable pomodoros untill big break
- Improve code to call notifications directly after work time is over
- Fix the scrolling issue, where the total timers are centered every second
- Fix the indent between "Work" and the total timer to align with the rest
- Fix the bug where you press "Space+y" twice in a row that the work timer stays at 00:00:00 triggers a break
- Redesign the customisations
- Integrate https://github.com/Syncriix/org-time-budgets
Pomidor is a simple and cool pomodoro technique timer.
It's available on melpa:
M-x package-install pomidor
Or clone the repo:
cd ~/.emacs.d
git clone https://github.com/TatriX/pomidor
and add to your .emacs:
(add-to-list 'load-path "~/.emacs.d/pomidor/")
(require 'pomidor)
Bind it to a key with the following command:
(global-set-key (kbd "<f12>") #'pomidor)
Or run simply M-x pomidor
When you start pomidor, you automatically begin your first
pomodoro. There is nothing to do at this point, except to work. You
can, of course, restart the pomodoro if you get distracted, or even
the whole series, but the program takes care of itself until the
25-minute mark is reached. At this point, the overwork period will
start until you press Space
to start break period.
Then you can press Space
(ask for confirmation) or Enter
to start a new period.
After 5 minutes of the break period, pomidor will start telling you
that you should finish your break. To snooze it just press Space
and
select n
.
Key | Description |
---|---|
Enter | Start new pomodoro. |
Space | Start a break. |
R | Resets the timer. |
q | Quit pomidor buffer. |
Q | Turns off pomidor. |
You can customize pomidor with M-x customize-group RET pomidor
or just edit your .emacs
.
To change timer length:
(setq pomidor-seconds (* 25 60)) ; 25 minutes
(setq pomidor-break-seconds (* 5 60)) ; 5 minutes
To disable or configure sounds:
(setq pomidor-sound-tick nil
pomidor-sound-tack nil
pomidor-sound-overwork (expand-file-name (concat pomidor-dir "overwork.wav"))
pomidor-sound-break-over (expand-file-name (concat (getenv "HOME") "/Music/overwork.wav")))
To change appearance you may you customize
or set faces via theme or directly:
;; for a full list of available faces see `customize' or search for `defface' in the source code
(progn
(set-face-attribute 'pomidor-break-face nil :foreground "#00ff00")
(set-face-attribute 'pomidor-overwork-face nil :foreground "#00abff")
(set-face-attribute 'pomidor-skip-face nil :foreground "#abbac3")
(set-face-attribute 'pomidor-work-face nil :foreground "#ff0000"))
If your Emacs can't play sounds you can provide your own function to do it:
(setq pomidor-play-sound-file
(lambda (file)
(start-process "my-pomidor-play-sound"
nil
"mplayer"
file)))
By default pomidor will show you an overwork notification once per minute. See alert documentation to learn how change alert settings.
You can change default notification style globally:
(setq alert-default-style 'libnotify)
;; or 'growl (see alert docs)
To change notification you can set pomidor-alert
variable (defaults to pomidor-default-alert
):
(setq pomidor-alert (lambda () (alert "OMG!11")))
Also you can set pomidor-update-hook
to do some work on every update.
(defun my-pomidor-update-hook ()
(alert "Zzz"))
(add-hook 'pomidor-update-hook #'my-pomidor-update-hook)
You can adjust update interval by setting pomidor-update-interval
variable
(setq pomidor-update-interval 30) ; seconds
Inspired by https://github.com/konr/tomatinho
Sounds from freesound