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:
chronic
for parsing human readable date string andterminal-notifier
for send notification using Notification Center. Aschronic
cannot 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 chronic
andgem 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
osascript
to 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 6pm
will create a remindercall my mom
in thelife
list and set due date to 6pm of tomorrow.