Enabling Growl to send notifications across local networks

Introduction: The notification system Growl (http://growl.info) has many useful properties.  One in particular can be extremely useful to people who have a Mac in some dedicated role: like a media server or collecting weather data.  Growl can be used to forward notifications from one computer to the next on a network that supports something like Apple's Bonjour technology.  Growl uses essentially the same technique to discover other computers running Growl and make it possible to send Growl notifications from one computer to the next.

Because Growl itself is supposed to carry out the self-discovery, the process ought to be every easy.  Alas, that can make the process a little unnerving.  In theory, all you need to do is configure your Growl installations and "wait for the magic to happen." Since that magic can take a while and networks can be cantankerous, here is a "recipe" that can make this process a little easier.  This tutorial, while independent, takes advantage of features described in the AppleScript tutorial to generate Growl from LWC alerts so you may wish to consult that tutorial as well.

Configuring Growl:  To enable networked notifications, you must modify the settings of the network tab of the Growl preference pane.  It is shown below:

The Growl Network tab before discovery

While not necessary in normal operations, the simplest is to check all three boxes highlighted in orange on both computers involved to enable most Growl notifications to work.  Some applications using growl need to be able to get a confirmation back, so that you must forward notifications in both directions.  The option to allow for remote application registration allows the receiving computer to control which notifications are actually displayed.  Once you have established communications, you can then modify these setting to streamline your operations (as will be described below.)

Now all you have to do is sit back and wait! . . . . .   Of course, some people aren't the paragon of patience.  For such people, it is suggested that you restart Growl on both machines in order to jump-start the discovery process.  This can be done either from the General tab of the Growl preference pane or from the Restart Growl item of the Growl pull-down menu (if you have this enabled.)    Such jump-starting may help, or may not.  The author succeeded in getting two computers to communicate almost immediately by restarting Growl.  However, all attempts to connect a third failed.  Nonetheless when the author returned after a few hours - the third computer had been "discovered" on it own.  So when all else fails - by all means try patience!  Eventually, you should see that your Network tabs of the Growl preference pane will have added the discovered computers.  It should look something like the example below:

Growl network pane after discovery

In order to complete the process to enable networking, simply check the box next to the computers you want to forward notifications to (in the above example the box just to the left of the name Orion.)  In this example, a password has been entered for the computer from which this Growl pane has been captured.  You can set the password of the computer you are forwarding notifications to by clicking on the field to the right of the name (again Orion) and typing in the password there.  Nonetheless, unless you have some really unique needs, it is by far the best to avoid passwords when using Growl.  Leave these fields alone until you have succeeded in getting notifications to go from one computer to the other.

Testing your configuration: Once each computer that will be networked has discovered the other, you can try to send a notification from one to the other.  You can use the included application HardwareGrowler for this or if you can cope with a UNIX shell, the command growlnotify.  It is probably more convenient to have a simple tool that produces sample notifications on command.   A member of the Growl development team has written a tiny application that you can download and use to produce notifications on demand:  Simplest Notifier Evar. It will produce notifications that look something like this:

Example notification from LWC Growl trigger

You could also use the scripts from the AppleScript tutorial to generate Growl from LWC alerts. Now that you have something to test with, it is time to see if notifications appear on both computers.  Be aware of the fact that there can be a lag of around a second before the second computer displays the notification.  Hopefully, this will work smoothly, if not, skip down to the troubleshooting notes below.

Note that the notifications produced by the AppleScripts in AppleScript tutorial to generate Growl from LWC alerts are "sticky" meaning they will remain on your screen until they are explicitly closed by pressing the close button in the upper-left corner of the notification.  That can be helpful when trying to troubleshoot between two computers that aren't necessarily right next to each other.

Now that you have something to test with, it is time to see if notifications appear on both computers.  Be aware of the fact that there can be a lag of around a second before the second computer displays the notification.  Hopefully, this will work smoothly, if not, skip down to the troubleshooting notes below.

Configuring remotely registered applications:  The power of Growl to share notifications can quickly become a nuisance of information overload.  Even in a house, not everyone will want to have every possible notification.  For example, suppose you have a computer collecting data from a weather station.  The weather-related notifications (say rain starting) ought to be of interest to everyone.  Yet, notification related to the operation of the weather station may not be appropriate for everyone.  Fortunately, Growl allows users to keep some notifications from being displayed.  These settings are to be found in the Applications tab of the Growl preference pane and are the reason why it was necessary to enable remote registration of applications (see below:)

Growl Applications tab

Each application that has registered itself with the Growl on this machine will appear on this list shown above.  To control the notifications associated with a particular application, click on the Configure button (highlighted in orange above.)  That will bring up a pair of tabs.  You'll need to select the right tab (Notifications) in order to configure the settings for each individual notification associated with that application (see below:)

Growl preference for disabling a notification.

All the notifications associated with this application can be selected by the pop-up menu named Notification in the middle of the screen.  For each notification you can change various settings like the display style, priority, and stickiness.  Highlighted in orange is a check-box that if unchecked, as shown above, will cause Growl to ignore this notification.  For example, this particular alert is intended to be spoken aloud when a weather station is unable to transmit data to the computer.  This could be very annoying to computer users not responsible for keeping the weather station operational.

Coping with too many network notifications:  At first, finally getting notifications across your network is something of a thrill.  However, if you are using Growl to send notifications between actively-used computers, you might suddenly regret being in the loop of the myriad of applications on each computer that are now send Growl notifications.

Unfortunately, the present Growl networking implementation has one key user-interface limitation.  It cannot differentiate between applications registered locally or remotely.  So if you have Growl notifications going between two computers running the same Email reader or browser, you cannot use the mechanism above to turn off notifications from remote computers while keeping notifications from the same application generated locally.  Either you'll get all the notifications from Firefox anywhere on your network, or you can turn all of them off - alias including your own computer's notifications. 

In order to cope with this, it is best to decide on some priorities and avoid having end-user computers sharing Growl notifications in both directions.  Instead, try to decide what is the information you which to share across your network and whenever possible, try to have your network send Growl notifications in one direction.  So for example, if one computer on your network serves as the household jukebox, it makes sense to have this computer forward notifications to other computers that are in rooms where that music is played - so listeners can be informed of the selections they are listening to.  The jukebox computer need not listen to incoming notifications.  This is one way to "break" the flood of notifications that can occur if more than one person uses the same application that generates Growl notifications.  To create a unidirectional Growl network, go to the Network tab of the Growl preference pane and turn off the "Listen for incoming notifications" option on the "transmitting computer."  If you still need the "transmitting computer" to receive some notifications, you can break the feedback loop by turning things off on the receiving end.  On the receive only computers, uncheck the boxes that were forwarding notifications back to the "transmitting computer" (say the jukebox computer in this example.)  It may be necessary to make a clever combination of the both tricks to avoid too many notifications.  These sorts of problems disappear for a computer with a dedicated role: say a dedicated jukebox or Weather Station computer.

These sort of problems will hopefully disappear as Growl matures.

Troubleshooting and slaying the Growl-zombie*:  Alas, there is nothing like networking to make a complicated task nearly impossible, and the Growl networking implementation is suffering from growing-pains.  The Growl development team are working on a major rewrite of this Growl subsystem as this tutorial is being typed up, but in the meantime there is some advice in case of trouble. 

There is a known issue involving the transmission of icons associated with Growl notifications.  Attempting to include a custom-icon in notifications generated from an AppleScript will produce a Growl-zombie on the receiving computer (more on Growl-zombies in a moment.)  Other Growl notifications can cause zombie-like states, and worst of all, some users have reported problems while others have succeed without problems.  Growl appears to be vulnerable to local network conditions and software configurations - so this is another case of "your mileage may vary."

If you seem to be having problems getting notifications between two computers, sometimes restarting Growl on both machines can help.  If that doesn't work, it is time to hunt for the Growl-zombie and see if that is the cause.  If you send a notification to the receiving computer and see nothing, try generating a local notification on the receiving computer.  If this also fails then you most likely have the application GrowlHelperApp is some sort of "non-responsive state" - it has become a dead as far as responding to Growl requests - but the monster remains very much alive in terms of using computer resources.  This is a Growl-zombie.

In this case, the best thing to do is to launch the Apple utility: Activity Monitor.  You can then look for the application GrowlHelpApp and try to make it quit using the Quit Process (stop sign icon) button in the upper-left corner (see the display below:)

Activity monitor window

When you press the Quit Process button, you'll be given a choice of either having the application quit, or using the operating system services to force GrowlHelpApp to quit.  Try simply quitting, but keep the Activity Monitor running and make sure that GrowlHelperApp indeed disappears from the list of applications.  A genuine Growl-zombie process cannot quit in this way, but trying this first avoids using unnecessary force.  Alas, it the GrowlHelperApp remains, you have no choice but to force it to quit.

Once GrowlHelperApp has been stopped, you need to restart Growl on the receiving machine.  GrowlHelperApp needs to be running for Growl notifications to appear whether the come locally or from another computer. 

As noted, some notifications can cause problems when they are sent over the network.  If you manage to get some notifications to work, but quickly have Growl "zapped" into a Growl-zombie state, try to turn off non-essential Growl notifications from other applications.  With a bit of luck, you might be able to prevent the notification that is zapping Growl from being sent again.

Conclusion:  Being able to forward notifications from one computer to another is one of the more unique features of Growl.  Thanks to self-discovery technology, setting up Growl to send notifications over a network is much easier than setting up network systems in the past.  Still, the process can be helped along by a little user awareness.  Growl is still growing and enduring some growing pains along the way.  Sending notifications over a network will become more reliable in the future.  Nonetheless, users are having great success with sending notifications over a network right now - it is well worth an attempt if you have similar needs.

* The term zombie is being used in the colloquial (Hollywood) sense of the term and not the technical (UNIX) sense (see the Wikipedia entry for a UNIX zombie process for more details.)  While programmers may frown upon the use of a term which they insist has a precise technical meaning, this document is intended for a audience of end-users largely unaware of this other meaning.  Those who insist upon co-opting cultural icons from larger cultural traditions, must nonetheless yield to the reality that their own technical societies are but a tiny fraction of the world's population.  Making peace with that larger reality would undoubtably give them a deeper sense of humanity and arguably improve the usability of the world's software.