Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/akhramov/org-wild-notifier.el

Alert notifications for org-agenda
https://github.com/akhramov/org-wild-notifier.el

emacs emacs-lisp notifications org-agenda org-mode

Last synced: about 2 months ago
JSON representation

Alert notifications for org-agenda

Awesome Lists containing this project

README

        

* 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 |
| Predicate based whitelist. You'll get notified /only/ about events matched by one of these functions | org-wild-notifier-predicate-whitelist | nil |
| Predicate based blacklist. You'll /never/ be notified about events matched by one of these functions | org-wild-notifier-predicate-blacklist | nil |
| Property which adds additional notifications | org-wild-notifier-alert-times-property | WILD_NOTIFIER_NOTIFY_BEFORE |

~org-wild-notifier-predicate-whitelist~ and
~org-wild-notifier-predicate-blacklist~ are lists of functions that take a
single parameter, which is a marker on an Org event. For example, to not receive
notifications for Org habits:

#+BEGIN_SRC lisp
(setq org-wild-notifier-predicate-blacklist
'((lambda (marker)
(-contains? (org-entry-properties marker 'all)
'("STYLE" . "habit")))))
#+END_SRC

~org-wild-notifier-alert-times-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.