org-wild-notifier.el icon indicating copy to clipboard operation
org-wild-notifier.el copied to clipboard

Alert notifications for org-agenda

  • org-wild-notifier.el

[[https://travis-ci.org/akhramov/org-wild-notifier.el][https://travis-ci.org/akhramov/org-wild-notifier.el.svg?branch=master]] [[https://stable.melpa.org/#/org-wild-notifier][file:https://stable.melpa.org/packages/org-wild-notifier-badge.svg]] [[https://melpa.org/#/org-wild-notifier][file:https://melpa.org/packages/org-wild-notifier-badge.svg]]

** What is it? A package which adds notification support for org-agenda views. With this package you'll get notifications for ~TODO~ entries.

** How does it differ from existing packages? There are few good org agenda notification packages I'm aware of:

  • [[https://github.com/spegoraro/org-alert][org-alert]] notifies about deadlines every N minutes using [[https://github.com/jwiegley/alert][alert]] package.
  • [[https://code.orgmode.org/bzg/org-mode/raw/master/contrib/lisp/org-notify.el][org-notify]] complex, feature-rich library from Org contrib directory.

While aforementioned packages are good on their own, I wanted to have something that resembles popular Calendar solutions, something that'd be unobtrusive in use and configuration.

** Configuration?

Oh, yes. This package provides some configuration options:

| Description | Variable | Default value | |-------------------------------------------------------------------------------------------------+----------------------------------------+-----------------------------| | Alert time in minutes | org-wild-notifier-alert-time | '(10) | | Title of notifications | org-wild-notifier-notification-title | Agenda | | Notifications icon | org-wild-notifier-notification-icon | nil | | Org keyword based whitelist. You'll get notified /only/ about events specified by this variable | org-wild-notifier-keyword-whitelist | '("TODO") | | Org keyword based blacklist. You'll /never/ be notified about events specified by this variable | org-wild-notifier-keyword-blacklist | nil | | Org tags based whitelist. You'll get notified /only/ about events specified by this variable | org-wild-notifier-tags-whitelist | nil | | Org tags based blacklist. You'll /never/ be notified about events specified by this variable | org-wild-notifier-tags-blacklist | nil | | Property which adds additional notifications | org-wild-notifier-alert-times-property | WILD_NOTIFIER_NOTIFY_BEFORE |

The last property demands further explanations.

Let's suppose you have an important event. One standard 10-minute notification is not enough. Fear not, let's modify our Org entry.

#+BEGIN_SRC org

  • TODO Visit the chocolate factory SCHEDULED: <2018-01-04 Thu 16:00> :PROPERTIES: :WILD_NOTIFIER_NOTIFY_BEFORE: 80 60 55 43 5 :END: #+END_SRC

With such configuration you'll get notifications 80, 60, 55, 43, 10 and 5 minutes before the event.

*** How do I customize alerts?

As ~org-alert~, this package is based on [[https://github.com/jwiegley/alert][alert]] package. Alert offers a wide range of customizations through it's [[https://github.com/jwiegley/alert#builtin-alert-styles][styles]] facility. Good examples on how to define your own styles can be found in alert source code. A bad example on how to define your own styles can be found [[https://github.com/akhramov/emacs.d/blob/master/packages/wild-notifier.el][here]].

** How do I install the package? This package is available on [[http://melpa.milkbox.net/][MELPA]].

** How do I use the package?

This package works in two modes:

  • Automatic mode: you can toggle timer-based minor mode by invoking ~org-wild-notifier-mode~.
  • Manual mode: user runs checks by invoking ~org-wild-notifier-check~.

** Wait. Wild?

What'd you expect? I have literally no imagination.