I recently switched to Reminder.app as my ToDo management tool, after upgrading to Mountain Lion. The only thing I missed is a hotkey window to create a new reminder instantly. As always, I turn to Quicksilver for this kind of things.
So, I wrote a Quicksilver action (in Ruby). The following is the screenshot of how it works.

And here is the source code. Just drop it under ~/Library/Application Support/Quicksilver/Actions and make it executable by using chmod 755 NewReminder.rb in terminal (thanks to Luke for pointing it out), then restart Quicksilver.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
Some notes about this script:
The script is written in Ruby, and it uses 2 gems:
chronicfor parsing human readable date string andterminal-notifierfor send notification using Notification Center. Aschroniccannot work well with Ruby 1.9.3 as of this writing, I forced the script to be executed using system ruby (/usr/bin/ruby) which is of version 1.8.7 in OS X 10.8. Anyway, you need to install those 2 gems usinggem install chronicandgem install terminal-notifier.As it uses Notification Center, it should only work on OS X 10.8+. But it is easy to be tweaked to drop notification or use other notification services like Growl.
Some AppleScript code is embedded and executed by
osascriptto interact with Reminder.app. This script could be written entirely in AppleScript, but I chose Ruby + AppleScript way as it is much easier to write most part of the logic in Ruby.The usage of this action: assuming it is correctly installed, launch QS, hit “.” to enter text mode, write your reminder message, hit tab key to focus on the 2nd pane, and choose “NewReminder” action. Your reminder should be created.
You can set list and/or due date in your message. The list name should be prefixed with
@. The due date string can be any human readable format understandable by chronic. Due date must be prefixed with^and be the last part of the message. For example,call my mom @life ^tomorrow 6pmwill create a remindercall my momin thelifelist and set due date to 6pm of tomorrow.