Growl, Prowl, and Customized iPhone Notifications Using Perl

Growl, Prowl, and Customized iPhone Notifications Using Perl

Growl is “a notification system for Mac OS X: it allows applications that support Growl to send you notifications.” It’s one of the coolest notifications systems you’ll ever see. There’s also a Growl for Windows which I’ve not yet used but I hear good things about it. Basically, if you’re using an application that is Growl-enabled, it can send non-obtrusive status messages to your screen. The message appears for a configurable amount of time, then silently disappears. It’s frigging awesome. Here’s a screen shot of one example. This is using the Music Video style, and the image below is portion of the bottom left-hand of my screen.

Growl Example

Prowl is basically a Growl client for the iPhone. It’s comprised of two parts. The first is a Growl plugin and the second is an iPhone app. The plug-in is free. The iPhone app is an absolute steal at $2.99. Prowl allows you to configure certain notifications to be pushed to your iPhone, so you’ll need to be running iPhone 3.0 for this to work.

Prowl’s installation instructions are about as straightforward as they can be. If all you’re wanting is notifications from applications running on your computer, this document is all you need. However, as usual, I need more. I want to send customized notifications from a Perl script I’m working on. What follows is the basic framework to accomplish this.

First, you’ll obviously need to install Growl. The installations instructions are very easy to follow. I was already running version 1.1.4 but needed to upgrade to 1.1.5 to get Prowl working.

Next, because we’re writing a Perl script, we need to install a few prerequisites. You’ll need MacPorts installed. Again, the documentation is straightforward.

Once MacPorts is installed, you’ll need to install the following packages. We’ll need them during the Perl configuration. Execute the following command then go get take a break/vacation.

$ sudo port install lynx wget ncftp gnupg2

Next, you’re going to need to configure Perl. Enter the following to get started:

$ sudo perl -MCPAN -e shell

If you don’t understand a question, the default answer is almost always good enough. You should be able to get through this in a semi-reasonable amount of time. During the process, you’ll be asked for the location of your gpg program. Enter /opt/local/bin/gpg2 and you’ll be good to go. Once done, enter the following two commands:

cpan[1]> install Encode … cpan[1]> install Mac::Growl

At some point you may be informed that another package is needed. If you’ve taken the default answers, the default will be follow and you’ll only need to hit enter. Let it install whatever dependencies it needs.

At this point, we’re ready to try a test script. I’ve written a short one, which is fairly well documented. You can download it here. Save it as Then run it with the following command:

$ perl ./

If everything goes correctly, you should see the following Growl notification (depending upon your Growl Display Style).

Growl Test Script Example

Now it’s time to move beyond Growl and get notifications on our iPhone. This is why you’ve read this far. At this point, I’ll hand it over to the Prowl installation instructions. First, you’ll want to install and configure the Prowl plug-in. After that, you’ll need to go to System Preferences -> Growl -> Applications -> TestPerlApp -> Configure … -> Notifications, set Display Style to Prowl as seen below. This isn’t covered in the installation instructions, but I found it necessary.

Growl Test Script Configuration

Once that’s all done, you’ll need to purchase the Prowl iPhone app and configure it according to the instructions. Once done, you should be able to run Growl-Test-pl again and receive notifications on your iPhone. Once this works, you can go back to the TestPerlApp -> Configure… and change the style to Default, so you’ll receive notifications on both you computer and your iPhone. Here’s a shot of the notification.

Prowl iPhone Screenshot

And that’s it. If you have questions or issues, drop me a line and let me know. Between the two of us, we can figure it out. Enjoy!