Coder Social home page Coder Social logo

pomidor's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.