wxRemind is both a text and graphical front/back-end for Remind, a powerful calendar and alarm application. The display features a calendar and daily event list suitable for visualizing your schedule at a glance, together with a flexible display of your free/busy times for the week of the selected day. Either 12 hour and 24 hour time displays can be selected and either Sunday or Monday can be selected as the first day of the week for calendar displays. Dates and associated events can be quickly selected either with the mouse or cursor keys, and dates in the calendar are color coded to reflect the total duration of scheduled events. Holidays can be highlighted both in the wxremind display and in generated monthly postscript calendars. Arbitrarily long notes stored as separate text files can easily be attached to (or removed from) reminders which are then highlighted in the daily event view. wxRemind integrates with an external editor of your choice to make editing of reminder files more efficient, provides hotkeys to quickly access the most commonly used options, and allows popup, sound, and/or spoken alarms.
New: wxremind, by default, now starts remind in internal server mode using the -z0 switch. When this option is enabled, internal alerts are generated for MSG reminders including a graphical alert box together with an optional audible alert, e.g., the text of the message spoken. For early warnings prior to the event time, the graphical alert offers an option to cancel further alerts for the reminder and, if no further action is taken, automatically closes itself after a specified time, 15 seconds by default, without canceling further repetitions. If not previously canceled, the final alert message box will appear and stay open until manually closed, by default, or for a specified number of seconds. Internal alerts are not generated for reminders whose message (MSG) field begins with "ignore_char" ("~" by default).
The latest version of wxRemind should be available at wxRemind.
You will need to have Remind, python >= 2.4.3, wxPython >= 184.108.40.206 and the non-standard but easily-installed python module dateutil. wxRemind has been tested with python 2.5 and wxPython 220.127.116.11 on OS X 10.4 and with python 2.4.3 and wx 18.104.22.168 on Fedora Core 4 (linux). Note: wxPython is being very actively developed and it is both easy and well worth the effort to update to the latest version. OS X users will need to upgrade both python and wx from the standard versions that come with 10.4 Tiger - OSX_README.
Displaying monthly postscript calendars requires rem2ps (included with remind) and Preview.app on OS X or ggv (gnome ghostview) on linux.
Audible, spoken-message alerts require a text to speech synthesis utility, e.g., 'say' on OS X or festival on linux.
Visible alerts are supported internally but external utilities such as OS X's "growlnotify" are also supported.
wxRemind consists of three standalone, platform-independent (linux or os x) programs. Simply download wxRemind-#.tgz, upack it and move the following files to somewhere in your executable path. (If you would like to have the source files, download wxRemind-src-#.tgz and look at make_dist.sh for details of how the executables were made.)
|wxremind:||The main program, a gui for remind. To start enter wxremind at a command prompt. Once it is running, pressing ? will bring up a display of usage information.|
|wxremalert:||A standalone alert/notification utility designed to be used with remind's RUN command. At a command prompt, enter wxremalert -h for usage information.|
|wxremdata:||A standalone alternative for 'rem'. At a command prompt, enter wxremdata -h for usage information.|
|wxremhints:||Standalone hints. This can be run from the command line or activated within wxremind by pressing 'h' or by pressing the '?' button when creating a new event.|
The first time you run any of the wxrem* programs, the configuration file, ~/.wxremindrc, will automatically be created in your home directory if it doesn't already exist and populated with defaults appropriate for your platform, linux or os x. If you already have a ~/.wxremindrc and new configuration options have been added, your file will first be saved as ~/.wxremindrc.bak and then a new ~/.wxremindrc will be created with your settings together with the default values for any new options.
This means you can always restore the default settings by either removing or renaming ~/.wxremindrc. Further, if you would like to restore some but not all of the default settings, simply erase the settings you want restored and the next time wxremind, wxremdata or wxremalert is run, your ~/.wxremindrc will be recreated with your settings together with the default settings for the ones you erased.
Sample output from wxremdata:
============== Mon, 18 Jun 2007 - Thu, 21 Jun 2007 ============== 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 18 Mon . . . . [====][==] . . . . . . . 19 Tue . . . . [====][==] . [==]. . . . . 20 Wed . . . . . . . . . . . . . . 21 Thu . . . . [====][==] . . . . . . . Mon, 18 Jun: 10:45AM - 12:15PM Economics 205 in 129 SocPsy 12:15PM - 1:15PM Office Hours Tue, 19 Jun: 10:45AM - 12:15PM Economics 205 in 129 SocPsy 12:15PM - 1:15PM Office Hours 3:00PM - 4:00PM Blackboard Advisory Meeting: Breedlove Thu, 21 Jun: 10:45AM - 12:15PM Economics 205 in 129 SocPsy 12:15PM - 1:15PM Office Hours
By default wxremind uses UTF-8 encoding though this can be changed in ~/.wxremindrc. 'International' characters should thus display correctly within wxremind and in the 'days' view. For characters to display correctly in the postscript output for the monthly calendars it is necessary to convert from UTF-8 to ISO-8859-1. The simplest way to do this is use something like the following in your ~/.wxremindrc
rem2ps = '/usr/bin/iconv -f UTF-8 -t ISO-8859-1 | /usr/local/bin/rem2ps -l -i > ~/.calendar.ps'
or, for pdf output,
rem2ps = '/usr/bin/iconv -f UTF-8 -t ISO-8859-1 | /usr/local/bin/rem2ps -l -i | ps2pdf - ~/.calendar.pdf'
where the paths '/sw/bin/iconv' and '/usr/local/bin/rem2ps' should be adjusted for your situation.
A similar conversion may also be necessary if you use Festival for spoken announcements, e.g.,
audible2 = "echo '%s' | /usr/bin/iconv -f UTF-8 -t ISO-8859-1 | /usr/local/bin/festival --tts"
Displayed month and weekday names should automatically be correct for your locale setting. Note that remind itself requires that English month and weekday names be used within dates in reminders.
For 24-hour time displays use
twelvehour = 0
and to have Monday displayed as the first day of the week use
sundayfirst = 0
in your ~/.wxremindrc.
It is also possible to place entries in ~/.wxremindrc so that alerts and main screen labels appear in the language of your choice. Here is an example for German with 24 hour time from Peter Rexigel:
minute24 = "Minute" minutes24 = "Minuten" nullminute24 = "" undertenminuteprefix24 = "" Nullhours24 = "null Uhr" onehour24 = "ein Uhr" hour24 = "Uhr" hours24 = "Uhr" goodmorning = "Guten Morgen" goodafternoon = "Guten Tag" goodevening = "Guten Abend" thetimeis = "Die Uhrzeit ist" remindersfor = u"Erinnerungen f\303\274".encode('iso8859-1') pressforhelp = U"Dr\303\274Cken Sie ? um Hilfe zu erhalten.".encode('iso8859-1')
Here's a tip to help you keep your ~/.reminders lean. Create reminder files for each month, 01-Jan, 02-Feb, etc, and INCLUDE them in your ~/.reminders. Now run the following shell script each day when you start wxremind (or on the first day of the month using a cron tab):
#!/bin/bash # The directory where you keep '01-Jan', '02-Feb', ..., '12-Dec': monthlyreminders='/Users/dag/Documents/Reminders' # edit to suit cd $monthlyreminders thismonth=$(date +%m-%b) # e.g., 02-Feb lastyear=$(($(date +%Y)-1)) # e.g., 2007 backup=$lastyear-$thismonth # e.g., 2007-02-Feb # Have we already archived this month? if [ ! -e $backup ]; then echo archiving $thismonth to $backup mv $thismonth $backup && touch $thismonth else echo $backup already exists - skipping archive fi # link this month's file to 'current' ln -sf $thismonth current cd -
Now 'current' will be a symbolic link that automatically points to the current month's file so that, e.g., if it's February and you save a one-shot reminder to 'current' then it will actually be written to the file '02-Feb'. When February 2009 rolls around, your '02-Feb' file will be renamed '2008-02-Feb' and a new '02-Feb' will be created and linked to 'current' to provide a blank slate for your new February reminders.
This way you'll have backups of all of your reminders by the year and month that they were created but only the last year's worth will actually be INCLUDED in your ~/.reminders.
wxRemind supports this process. If you have defined 'current' in your ~/.wxremindrc, e.g.:
current = '/Users/dag/Documents/Reminders/current'
then wxremind will add a radio button to the new-event dialog inviting you to choose whether to save the new reminder to 'current' (the default) or '~/.reminders'.
It is now possible to add arbitrarily long notes to reminders. Pressing 'N' with a reminder selected will open the associated note in an external editor, first creating it if necessary. Pressing 'D' will delete the associated note. Reminders that have associated notes are displayed in a user specified 'notecolor' and notes are kept in separate text files in a user specified 'notedir'. Note files have automatically generated file names that are stored as TAG keywords in the user's reminder files, e.g.,
REM 24 Jan 2008 AT 11:30 DUR 1:30 TAG NOTE-Z3JYcB MSG Faculty Meeting
This tag would appear in remind -s output as
2008/01/24 * NOTE-Z3JYcB 90 690 11:30am-1:00pm Faculty Meeting
but otherwise would have no effect on remind output.
Copyright (c) 2006-2008 Daniel A. Graham email@example.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation (www.gnu.org/licenses/gpl.html); either version 2 of the License, or (at your option) any later version. This program is provided in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.