Remind Helpers

From 43FoldersWiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 05:19, 9 September 2006 (edit)
Jbalcorn (Talk | contribs)
(Calendar Import/Export Utilities)
← Previous diff
Revision as of 19:22, 13 November 2006 (edit) (undo)
TheCodeGirl (Talk | contribs)
(Editors - added link to Vim syntax file)
Next diff →
Line 132: Line 132:
</pre> </pre>
 +
 +
 +'''Vim'''
 +
 +
 +There is a vim syntax file available for Remind:
 +
 +http://www.vim.org/scripts/script.php?script_id=1536

Revision as of 19:22, 13 November 2006

In the tradition of many great Unix utilities, Remind is designed to interoperate easily with other programs. This page lists a number of programs (and program configurations) that work particularly well with Remind.

Contents

Tools for Displaying Remind's Output

General Text Display Tools

GeekTool

Use GeekTool to display the output of Remind on your desktop. Remember to use the -q option to prevent GeekTool from queueing up all your timed reminders again every time it refreshes.

Growl

  • I don't always have a terminal open, and sometimes when I do have one open, it's not the app currently in focus. So I wrote a Perl script that executes remind and shoves the output (via Mac::Glue) to a Growl notification. Then I put the script in ~/Library/Scripts where Quicksilver can see it and now I can just execute it any time I want to see my reminders no matter what application I'm working in.
  • nohup/remind/growl

You can run remind as a background daemon and fire off reminders through growl:

nohup remind -z -k'growlnotify -s %s &' ~/.reminders &

Dissection:

nohup 
don't kill this command when i close this terminal window or log out
remind -z 
run remind as a daemon, checking up every five minutes
-k 
pass the reminders to 'growlnotify -s %s &'
-s 
make the growl bubble sticky
%s 
represents the text of the reminder
run growlnotify as a background process
~/.reminders
what remind file to run
run the whole thing as a background process

For extra laziness, you can write a launchd script to start this at login.

Dashboard Widgets

Cron, Mail, and Pipes

How would you like to see an updated reminder calendar in your email every morning? Set up a cron job to go off just before you would normally first sit down at your computer. The cron command would be something along the lines of:

rem -c+1 | mail user@foobar.com

Which produces a nice plaintext weekly calendar with all your reminders for your inbox.

Frontends

  • Wyrd is a popular text-based frontend for Remind.
  • wxRemind is similar to Wyrd but based on wxPython rather than curses.

Calendar Import/Export Utilities

iCal2Remind is a script to turn iCal entries into Remind entries. In the ~/.reminders file, include the new file:
INCLUDE ./.ical2rem
and use cron to build the included file:
0-59/15 * * * * local/bin/ical2rem.pl > ~/.ical2rem

iCal2Remind OSX HOWTO

rem2ics is a script that converts Remind events to iCal format.

out2rem is a script to scrape your Microsoft Outlook appointments into Remind-compatible lines. Use as indicated for ical2remind above. This version 0.0.1 was not written with reference to the ical2rem script, so there is probably some worth in comparing the code and harmonizing features. Tested only with Outlook 2003 so far (please note if you test with other versions).

Editors

Editing your remind files in TextMate can be made easier if you create a Remind bundle. Here is a language grammar that provides syntax coloring for your rem files. Open your bundle editor (by pressing ⌃ ⌥ ⌘ B) and create a new bundle called Remind. Within the newly created Remind bundle creat a new language and add the following:

{	scopeName = 'source.remind';
	firstLineMatch = '^REM*';
	fileTypes = ( 'defs.rem', 'REM*.txt', '.reminders' );
	patterns = (
		{	name = 'keyword.control.remind';
			match = '\b(IF|ELSE|ENDIF|IFTRIG)\b';
		},
		{	name = 'entity.remind';
			match = '\b(tag|PRIORITY|TAG)\b';
		},
		{	name = 'constant.language.remind';
			match = '%';
		},
		{	name = 'keyword.commands.remind';
			match = '\b(REM|OMIT|SET|FSET|UNSET)\b';
		},
		{	name = 'keyword.expiry.remind';
			match = '\b(UNTIL|SCANFORM|SCAN|WARN|SCHED)\b';
		},
		{	name = 'keyword.timed.remind';
			match = '\b(AT|DURATION)\b';
		},
		{	name = 'keyword.move.remind';
			match = '\b(ONCE|SKIP|BEFORE|AFTER)\b';
		},
		{	name = 'keyword.special.remind';
			match = '\b(INCLUDE|INC|BANNER|PUSH-OMIT-CONTEXT|PUSH|CLEAR-OMIT-CONTEXT|CLEAR|POP-OMIT-CONTEXT|POP)\b';
		},
		{	name = 'keyword.run.remind';
			match = '\b(RUN|MSG|MSF|CAL|SATISFY|SPECIAL|PS|PSFILE|SHADE|MOON)\b';
		},
		{	name = 'comment.line.number-sign.remind';
			match = '(?<!\$)#(?!\{).*$';
		},
		{	name = 'comment.line.semi-colon.remind';
			match = '(?<!\$);(?!\{).*$';
		},
		{	name = 'string.quoted.double.remind';
			begin = '"';
			end = '"';
		},
	);
}

To get the syntax coloring to work with your favorite theme add the above scope names to your theme and assign them colors.

To view your monthly calendar within TextMate add the following command to your Remind bundle:

Save:		Nothing
Command(s)	remind -p1 ~/.reminders | rem2html -b 1 -t 1 -se -1
Input:		None
Output:		Show as HTML

Assign the command a key equivalent and now you can access your monthly calendar within TextMate at a keystroke.

Snippets will also be useful for your Remind bundle. Here is (a slightly modified) snippet suggested by Merlin Mann:

REM ${1:`date +'%b %e %Y'`} AT ${2:00}:${3:00} DURATION ${4:1:00} MSG $5 %
$0


Emacs

Add the following lines in your .emacs

;; ;; To include .reminders as a shell mode 
  (setq auto-mode-alist
        (cons '(".reminders$" . shell-script-mode) auto-mode-alist))

(add-hook 'sh-mode-hook
     (lambda ()
       (auto-fill-mode nil)))


Vim


There is a vim syntax file available for Remind:

http://www.vim.org/scripts/script.php?script_id=1536



Other snippets are useful as well but these will depend on your use case.

You can also download Rupa Deadwyler's Remind bundle from this subversion repository

Personal tools