Skip to content
forked from TatriX/pomidor

Pomidor is a simple and cool pomodoro technique timer.

Notifications You must be signed in to change notification settings

Syncriix/pomidor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 MELPA

Pomidor is a simple and cool pomodoro technique timer.

Installation

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)

Usage

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.

This cycle goes on forever. pomidor buffer

Keybindings

Key Description
Enter Start new pomodoro.
Space Start a break.
R Resets the timer.
q Quit pomidor buffer.
Q Turns off pomidor.

Customization

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"))

Sound

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)))

Notification

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

Acknowledgments

Inspired by https://github.com/konr/tomatinho

Sounds from freesound

About

Pomidor is a simple and cool pomodoro technique timer.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Emacs Lisp 100.0%