The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

org-daemon - watch for appointments in org-mode files

SYNOPSIS

    org-daemon [--debug] [--early-warning=seconds] [--recheck-interval=seconds] \
               [--no-emacsclient-eval] [--emacsclient-cmd=...] \
               [--overview-widget=...] [--move-button] \
               orgfile ... &

DESCRIPTION

org-daemon is a Perl/Tk program which watches one or more emacs org-mode files for appointments, that is, entries in the form of <YYYY-MM-DD AAA HH:MM> and fires alarms in the form of non-modal dialogs. "Passive" timestamps (enclosed in square brackets) are ignored. Diary-style sexp entries are not implemented (see "TODO").

OPTIONS

--early-warning=seconds

There's an warning (a non-modal dialog with orange background) before the real alarm, by default 30 minutes (1800 seconds) before. This option can be used to change this default. Use 0 to turn early warnings off completely.

--recheck-interval=seconds

Set the interval for checking the specified org-mode files for changes. By default, org-daemon checks every 60 seconds.

--debug

Turn on debugging mode. Currently this means: do not iconify appointment list by default, and check every 3 seconds instead every 60 seconds.

--no-emacsclient-eval

If there are problems with the usage of emacsclient --eval, then this option may be used for simple non-eval emacsclient usage. If this is used, then a referenced org entry is not opened automatically.

--emacsclient-cmd=cmdline ... %l %f ...

Provide an alternative commandline for emacsclient calls. The placeholder strings %l and %f are replaced by line and file of the current appointment. Example:

    org-daemon --emacsclient-cmd="ssh otheruser@otherhost emacsclient +%l '%f'" ...
--overview-widget=widgettype

Select widget for overview window. Default is hlist, another possible value is listbox.

--move-button

The early warning and alarm windows will get an additional "move" button (displayed with a right arrow: →) for moving the window quickly to the right screen border.

--use-anyevent (EXPERIMENTAL!)

Use either Linux::Inotify2 together with AnyEvent (linux systems) or AnyEvent::Filesys::Notify (non-linux systems) for getting file modification events. Probably not useful on systems using kevent (*BSD). --recheck-interval is still applied for periodic checks.

FEATURES

  • Watch all given org-mode files periodically every minute (or the interval as given with the --recheck-interval switch).

  • Iconified list of next appointments, with entries in different colors (red for appointments in near future, over orange and yellow to green for appointments in far future)

  • By double-clicking on an entry in the appointment list, or clicking on the Edit button in the alarm window, the corresponding entry will be shown in emacs itself (needs emacsclient(1) and emacs has to be put into server-start mode)

  • Show an early warning 30 minutes before (or the period specified with --early-warning. Individual early warnings may be specified with the following non-standard extended org-mode syntax: <YYYY-MM-DD AAA HH:MM -CountUnit>, where Unit may be one of s (seconds), min (minutes), h (hours), w (weeks), m (months), and y (years). Example:

         <2009-12-25 Fr 12:00 -10min>

TODO

 * what about locations attached to lon/lat, and automatic routing and
   automatic pre-alarm calculation?

 * more gui elements:
   * close button for alarm toplevel
   * iconify button for data list window
   * add another file into watcher list
   * remove a file from the watcher list
   * show the current watcher list
   * maybe some debugging helpers (time of the update, parsed contents...)

 * support "Diary-style sexp entries", i.e. timestamps in the form
     <%%(diary-float t 4 2)>

PREREQUISITES

Tk

AUTHOR

Slaven Rezic