org-mode is undoubtedly one of the most versatile note-taking and planning tools I have ever encountered. It also ranks as my top choice for daily GTD practices.

Recently, I discovered a small feature that enhances my experience with org-mode even further - notifications. Imagine you’ve just scheduled an incredibly important meeting with your girlfriend, and being a natural programmer, you’ve already made an entry in your org-mode planner.

However, org-mode does not automatically alert you to upcoming events, making it easy to overlook them, especially when you are deep into your work, deciphering yet another Perl script…

But don’t worry! Notifications come to the rescue - just a few minutes before your meeting, you’ll receive a Growl or Growl-like message (possibly accompanied by an attention-grabbing ringtone) reminding you of your crucial appointment.

To make this work on Windows, I utilized ToDoChiKu along with Snarl, which displays attractive Growl-like messages. First step is to register the Emacs application for notifications. Navigate to C:\Program Files\full phat\Snarl\tools where you’ll find heysnarl.exe. Then, enter the following command in the console:

heysnarl.exe “register?app-sig=app/emacs&title=Emacs Org-Mode&icon=C:\Program Files\full phat\Snarl\etc\icons\emacs.png”

Here, app/emacs is the application signature used by ToDoChiKu, and the icon is the path to any icon you prefer. I chose that particular one. Once Emacs is registered, it should appear on the list of applications within Snarl. You can also test whether messages are displayed correctly:

heysnarl.exe “notify?app-sig=app/emacs&title=Simple test&text=Hello World!”

Now that we have Snarl functioning, let’s return to Emacs. To complete the ToDoChiKu configuration, we need to instruct org-mode to use ToDoChiKu as the notification tool with the following code:

(setq
  todochiku-command "C:/Program Files/full phat/Snarl/tools/heysnarl.exe"
  org-show-notification-handler '(lambda (notification)
                                   (todochiku-message "org-mode notification" notification (todochiku-icon 'emacs))))

(require 'todochiku)

Please note that you should require ‘todochiku after setting up the todochiku-command. Otherwise, you might encounter a “respawn process” error the next time you start Emacs.

Assuming ToDoChiKu is functioning correctly (you can verify this in your scratch buffer by evaluating something like (todochiku-message "Simple test" "Hello World" nil)), we now need to enable appointments:

(setq
  appt-activate 1
  appt-message-warning-time 15
  appt-display-mode-line t
  appt-display-format 'window)

With these settings, appointments will be displayed in two ways: in your mode-line and in a separate popup. By default, ToDoChiKu overrides appt-disp-window-function, redirecting all messages to the Snarl process, so no additional action is needed on your part.

Now it’s time for a final test. Create an appointment in your org-mode and wait…