- Main article: Remind
- 1 Overview
- 2 Applications that Work with Remind
- 3 Remind Use Cases
- 4 Tips and Tricks
- 4.1 How can I get emailed 15 minutes before some events?
- 4.2 I have a recurring reminder. How can I cancel it on one or more dates?
- 4.3 How can I generate popup windows to warn me of timed reminders?
- 4.4 How can I automatically create a popup window with my daily reminders?
- 4.5 How can I automatically back up my reminders file?
- 4.6 I use Remind to generate publically-viewable calendars. How can I keep some of my reminders private?
- 4.7 How can I handle to-do lists?
- 4.8 How can I view 'today' in the calendar view?
What is Remind?
Remind is a sophisticated calendar and alarm service for Unix. It is a command line application which interacts well with other programs. Remind offers a specialized scripting language which can be used to express rather complicated scheduling methods in just a few lines.
Why would I want to use Remind?
- Remind is very fast and lightweight in comparison to typical GUI calendar programs.
- Remind can handle rather complicated recurring reminders, which are beyond the capability of most calendar applications.
- Remind can interact well with other programs. You can quickly add reminders from the terminal, with Quicksilver, or with a homebrewed Python script; you can schedule applications to execute through Remind; you can display Remind's output through an external application, or even read off your reminders with a text-to-speech program.
- If you have any programming experience, then the idea of using a scripting language to describe a calendar may seem very natural to you.
Where can I get Remind?
The Remind source code is available at the Remind homepage.
Remind packages are available for most popular GNU/Linux and BSD distributions.
How can I learn to use Remind?
- The definitive reference is Remind's manpage. You can probably access it on your system by executing
man remindat the terminal.
- Dianne Skoll, the creator of Remind, wrote an introduction for the Linux Journal.
- Mike Harris provided an overview on 43 Folders.
Applications that Work with Remind
(See also: Remind Helpers)
Are there any frontends that make Remind easier to use?
- TkRemind is a GUI frontend that ships with Remind. Its point-and-click interface is quite easy to use, but also hides some of Remind's power from the user.
- Wyrd is a frontend for the terminal. It integrates with an editor of your choice, making it faster and easier to enter and edit reminders. Wyrd is probably a good choice for power users, as it is highly configurable and does not conceal any of Remind's functionality.
- wxRemind is a GUI frontend similar to Wyrd but based on wxPython rather than curses. The display features a calendar with days color coded to reflect the duration of scheduled appointments together with a daily schedule. Dates can be quickly selected either by mouse or cursor keys. Allows search for appointments and the integration of an external editor.
What applications can I use to display Remind's output graphically?
- For X Window desktops, the standard application would be
xmessage. GNOME or KDE users may prefer gxmessage or kmessage, respectively.
Is there an application that converts iCal entries to Remind format?
Is there an application that converts Remind events to iCal format?
Answers to these have been moved to the Remind Sync FAQ.
Remind Use Cases
Are there any examples of configuring Remind to fit a particular workflow?
- Paul Pelzl has a description of his Remind usage, focusing on Wyrd and generating alarm popup windows.
- Phil Snowberger talks about his custom Remind alarm system, which uses a Screen session running under the Ion window manager.
Tips and Tricks
How can I get emailed 15 minutes before some events?
1. Add a 15 minute 'tdelta' to any reminders that you want advance warning for, e.g.
REM Nov 27 2006 AT 14:00 +15 MSG %"Do something%" %1
2. Launch a background Remind process in "daemon mode" and tell it to send triggered reminder messages to 'mail':
remind -z -k'echo "%s" | mail -s "reminder" username' ~/.reminders &
I have a recurring reminder. How can I cancel it on one or more dates?
Assuming you don't want to cancel every reminder on that date, you probably want to isolate the reminder in its own "omit context," like so:
PUSH OMIT Mar 16 2006 OMIT Mar 30 2006 REM Thu SKIP MSG poker game tonight POP
Note that the the reminder will not be cancelled unless the
SKIP keyword is used.
How can I generate popup windows to warn me of timed reminders?
You can use a separate application that takes text as input and simply displays it in a window; on GNU/Linux systems, gxmessage is one such program. Then you can launch Remind in "daemon mode" and direct it to generate a popup window for every timed reminder that is triggered:
remind -z -k'gxmessage -title "reminder" %s &' ~/.reminders &
You probably want this command to run exactly once, when your desktop is started. For an X Window desktop, this command could be placed in the startup script
How can I automatically create a popup window with my daily reminders?
rem command can create a list of your reminders in the terminal. If you want to get a bit fancier, you can have your day's reminders automatically pop up in a window at whatever time you like. Just use cron to dump
remind's output to a window periodically, with a cron table entry like this:
# Pop up daily reminders at 8:00am 00 08 * * * export DISPLAY=:0.0 && \ remind -q -g ~/.reminders | gxmessage -title "today's reminders" -file -
How can I automatically back up my reminders file?
If you have a healthy level of paranoia, you will want to create backups of
~/.reminders lets you accidentally delete your calendar. If you use a decent programmer's editor to modify your reminders file, you should be able to configure the editor to automatically make backups.
If you happen to use Vim, just add
~/.vimrc, and it will automatically create a single backup file entitled
.reminders~ . If you are exceedingly paranoid, you might prefer to have redundant timestamped backups that record every change you make. Just add this code to
au BufRead * if exists("b:current_syntax") && b:current_syntax == "remind" au BufRead * let nowdatetime = strftime("%Y%m%d.%H%M%S") au BufRead * execute "set backupext=." . nowdatetime au BufRead * endif
This changes the backup extension for Remind files, so every time you modify reminder files you will get backups with filenames that look like
.reminders.20060412.181038 . Naturally this will leave a lot of backups littering your home dir, so you might prefer to collect backups in a dedicated backup directory; check
:help backupdir to see how to make that change.
An alternative strategy is to periodically make copies of your reminders file using cron:
# make daily backups of ~/.reminders at 11pm, with names like .reminders-2006-04-12 00 23 * * * cp ~/.reminders ~/.reminders-`date --iso-8601`
I use Remind to generate publically-viewable calendars. How can I keep some of my reminders private?
Remind can be used to generate HTML or PostScript calendars, and naturally you may want to make these available to other people. But some reminders may be personal or confidential, so you would like to keep these private. Here are a couple of strategies:
- Take advantage of Remind's
INCLUDEfeature. Your default
~/.remindersfile will contain reminders intended for public consumption. You have a second file called
~/.reminders-privatewhere you store confidential data. Inside the private file you can
INCLUDEthe public reminders:
INCLUDE /your/home/directory/.remindersNow you can view a public calendar using a command like
rem -c, or you can view a calendar containing all events using
remind -c ~/.reminders-private
- Use a variable. Enclose all private reminders in
REM Mar 12 AT 13:00 MSG meeting with Bob IF defined("private") REM Mar 12 AT 15:00 MSG double-secret meeting with Bob's nemesis ENDIFNow the default for
remindis to display only public reminders, but you can choose to view all reminders by defining the
privatevariable on the command line:
rem -iprivate=1 -c
How can I handle to-do lists?
A very simple solution is to represent each task as a reminder like
REM Apr 1 *1 MSG File taxes
which will repeat every day after April 1. The reminder can simply be deleted when the task is complete, or one could add an
UNTIL clause to cause the reminder to expire on some date.
This method has the disadvantage that the same task will appear on multiple dates in a calendar view. This could be addressed by scripting a "floating" reminder that appears only on one day at a time. First define some helper functions in your reminders file:
FSET float(y,m,d) trigger(MAX(realtoday(), date(y,m,d))) FSET due(y,m,d) "(" + (date(y,m,d)-trigdate()) + ")"
Now you can schedule floating reminders like so:
REM [float(2006,4,1)] MSG File tax return [due(2006,4,15)]
As an example, this will display
File tax return (2)
two days before the deadline, and
File tax return (-3)
three days after the deadline. This reminder will only be triggered on the current date, so it won't clutter up a calendar view.
How can I view 'today' in the calendar view?
You can add the following reminder to your reminder file:
REM [trigger(realtoday())] CAL today