Download the latest version of Growl for Windows

Growl On Your Phone

Get your Growl notifications on your phone with these apps:

WP7
Android
Notify My Android
iPhone
iPhone

For Developers

Integrate Growl notifications into your applications with just a few lines of code

Download the Integration Guide >

Create custom displays for handling notifications

Download the Display SDK >

Thursday, December 3, 2009

Mac-to-PC Notifications

Growl for Windows uses the TCP-based GNTP protocol for receiving and forwarding notifications. In the near future, Growl on OSX will also support GNTP and then two-way communication will be a breeze. But what about folks that need two-way communication today?

Growl for Windows can forward notifications to existing versions of Growl running on a Mac by using the Growl UDP protocol. That means PC-to-Mac communication will work out-of-the-box. However, Growl on OSX does not use the UDP protocol to forward notifications. Growl/OSX can only forward notifications using Distributed Objects - a Cocoa-only technology that only works on Apple machines. As such, although you can forward notification *to* a Mac from Windows, it has thusfar been impossible to forward *from* a Mac to Windows. Until now.

Today I am announcing 'Growl Impersonator' - a simple utility that solves this problem. Growl Impersonator runs on the Windows machine that you would like to forward notifications to. It acts as a middle-man, posing as a Growl/OSX instance so that Growl/OSX can discover and communicate with it, and then forwarding any notifications it receives on to GfW.

Growl Impersonator running on Windows

Growl Impersonator running on Windows

Forwarding from Growl on OSX

Forwarding from Growl on OSX

Growl/OSX notification on Windows

Growl/OSX notification on Windows

How does it work?

  1. Impersonator advertises itself on Growl's DO port (23052) using Bonjour
  2. Growl/OSX detects the Impersonator and thinks it is another Mac on the network
  3. Growl/OSX displays the Impersonator as a forwarding destination in its PrefPane
  4. When Growl/OSX receives a notification, it forwards it via DO to any destinations, including the Impersonator
  5. DO objects get serialized as binary data and sent over TCP
  6. Impersonator acts as a TCP listener and receives the serialized DO objects
  7. Impersonator understands just enough of the serialized data to be able to parse out the notification information
  8. Impersonator constructs a new GNTP notification using the data it parse and sends that to the local GfW instace

It is very important to note that this is totally experimental and probably has tons of bugs. It does not support images or click callbacks (similar to the UDP protocol). It is not a part of GfW and requires you to run yet another app. Apple could change the format of the DO serialization at any time and it could break (though that is unlikely).

That said, it does supports both registrations and notifications. I have successfully tested it with GrowlTunes and custom AppleScript-based notifications. I am going to continue to test more use cases to ensure the widest range of compatibility. I think that there is even a chance that I may be able to support images at some point as well.

If anybody out there wants to try it out, you can download it from the link below. I make no warranties to how well (or if) it will work for you. But if you do try it out and want to report your successes or failures, you can post up your experience in the GfW discussion group.

Download Growl Impersonator

Leave feedback in the GfW Discussion Group

Note: When configuring the forwarding in Growl on the Mac, you must leave the Password property empty, even if you use a password in GfW. If you do use a password in GfW, you must set it in Growl Impersonator.