===Is there an application that converts iCal entries to Remind format?===

===Is there an application that converts iCal entries to Remind format?===

-

You can use [http://jalcorn.net/weblog/archives/899-iCal-to-Remind-script.html this iCal to Remind script]. The recommended way to use this script is to include a secondary file in <code>~/.reminders</code>:

-

<pre>INCLUDE /your/home/directory/.ical2rem</pre>

-

Then you can use [[cron]] to build the included file periodically, with a cron table entry like this:

-

<pre>0-59/15 * * * * local/bin/ical2rem.pl > ~/.ical2rem</pre>

-

This is a good way to also get reminders from your Google calendar when you are off-line and without a browser open. Here is a quick outline of the necessary steps:

+

===Is there an application that converts Remind events to iCal format?===

-

* get your iCal file address, in google calendar this is done through the manage calendars page.

+

-

* use wget within a cron job to download that calendar on a regular basis. put them in a folder names /here/are/my/calendars

+

-

* use the ical2rem.pl file above just change the $cal_dir into your /here/are/my/calendars folder.

+

-

by regularly downloading your web based iCal you'll be able to get reminders even when off-line.

+

Answers to these have been moved to the [[Remind Sync FAQ]].

-

+

-

===Is there an application that converts Remind events to iCal format?===

+

-

Have a look at the [[rem2ics]] script.

+

==Remind Use Cases==

==Remind Use Cases==

Line 89:

Line 79:

==Tips and Tricks==

==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?===

===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:

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:

Line 135:

Line 137:

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:

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 <code>INCLUDE</code> feature. Your default <code>~/.reminders</code> file will contain reminders intended for public consumption. You have a second file called <code>~/.reminders-private</code> where you store confidential data. Inside the private file you can <code>INCLUDE</code> the public reminders:<pre>INCLUDE /your/home/directory/.reminders</pre>Now you can view a public calendar using a command like <code>rem -c</code>, or you can view a calendar containing ''all'' events using <pre>remind -c ~/.reminders-private</pre>

* Take advantage of Remind's <code>INCLUDE</code> feature. Your default <code>~/.reminders</code> file will contain reminders intended for public consumption. You have a second file called <code>~/.reminders-private</code> where you store confidential data. Inside the private file you can <code>INCLUDE</code> the public reminders:<pre>INCLUDE /your/home/directory/.reminders</pre>Now you can view a public calendar using a command like <code>rem -c</code>, or you can view a calendar containing ''all'' events using <pre>remind -c ~/.reminders-private</pre>

-

* Use a variable. Enclose all private reminders in <code>IF</code> blocks:<pre><nowiki>REM Mar 12 AT 13:00 MSG meeting with Bob

+

* Use a variable. Enclose all private reminders in <code>IF</code> blocks:

+

+

<pre><nowiki>REM Mar 12 AT 13:00 MSG meeting with Bob

IF defined("private")

IF defined("private")

REM Mar 12 AT 15:00 MSG double-secret meeting with Bob's nemesis

REM Mar 12 AT 15:00 MSG double-secret meeting with Bob's nemesis

-

ENDIF</nowiki></pre>Now the default for <code>remind</code> is to display only public reminders, but you can choose to view ''all'' reminders by defining the <code>private</code> variable on the command line:<pre>rem -iprivate=1 -c</pre>

+

ENDIF</nowiki></pre>

+

Now the default for <code>remind</code> is to display only public reminders, but you can choose to view ''all'' reminders by defining the <code>private</code> variable on the command line:<pre>rem -iprivate=1 -c</pre>

===How can I handle to-do lists?===

===How can I handle to-do lists?===

Line 158:

Line 163:

three days after the deadline. This reminder will only be triggered on the current date, so it won't clutter up a calendar view.

three days after the deadline. This reminder will only be triggered on the current date, so it won't clutter up a calendar view.

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.

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.

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.

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 ~/.xinitrc .

OS X users may want to consider running Growl, then using growlnotify as a replacement for gxmessage.

[edit]How can I automatically create a popup window with my daily reminders?

The 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:

If you have a healthy level of paranoia, you will want to create backups of ~/.reminders lest 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.

to your ~/.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 ~/.vimrc:

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:

[edit]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 INCLUDE feature. Your default ~/.reminders file will contain reminders intended for public consumption. You have a second file called ~/.reminders-private where you store confidential data. Inside the private file you can INCLUDE the public reminders:

INCLUDE /your/home/directory/.reminders

Now you can view a public calendar using a command like rem -c, or you can view a calendar containing all events using

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: