Yapper, a Jabber/XMPP interface for Growl

June 28, 2009

Update: I’ve basically stopped development and support of Yapper because Notify.io is the right way to solve this problem. However, this post describes that problem and is still worth the read. ;)

Yapper, a Jabber/XMPP interface for Growl

Today I released Yapper, a full featured Jabber/XMPP interface for Growl. It was based on the simple Twisted script I wrote while building my notification email to Growl piping. Although it’s limited to OS X users, I still think this is a big deal. Let me explain.

If you haven’t heard of Growl, it’s a global notification system that lets applications notify you of events in a consistent, customizable way. It’s been around for a while and is integrated or has plugins for lots of popular apps like iTunes, Adium, and Tweetie. It has bindings for a bunch of languages and also has a command line tool that you shell scripters can use to pipe notifications into. For example, I used this recently for my reminder system.

I think Growl is great particularly because it very nicely solves passive real-time notifications. That is, you want to be notified, but you don’t want it to interrupt you by requiring action. This is why I hate email notifications.

However, the major problem with Growl is that for the most part, it’s limited to local notifications. Sure, you can get notifications from “out there,” like Twitter or IRC or Gmail … but it requires you to have a local application that pushes them into Growl. One for each, in fact.

It turns out, I don’t actually care about most local notifications. Telling me a file is done downloading or what song is playing in iTunes is not terribly notification worthy. If I’m sitting there to get the notification, I probably already know. The most useful notifications are of events important to me that I’m nowhere near … events from things out on the Internet.

So Growl needs a network interface. Oh, wait! It has one! Well, what’s the problem? Two things: it’s a non-standard protocol, and it requires a direct connection. That not only raises the bar for things “out there” to notify you with Growl, but it literally makes it impossible if you’re constantly changing IPs, sitting behind a firewall or NAT, etc.

Let’s see… who’s solved this problem already? Right, IM! XMPP, the open standard for IM and real-time message passing (also known as Jabber), seems to have everything we need. It’s a popular protocol, fairly accessible from any language, and doesn’t require a direct point to point connection. So it’s a perfect transport for network Growl notifications!

Since I’m not one to wait around for people to implement what I think they should implement, I solved this problem by making Yapper. Yapper is a lightweight Jabber client made specifically to receive Growl notifications. It starts when your machine starts and sits in the background just waiting for whatever you have sent to it so it can pop it up with Growl.

You can now easily have Growl notifications sent to you from anywhere. Websites have less of a reason not to directly notify you with Growl for events that are important to you. More importantly for me, I can more easily set up Growl notifications for whatever I want. With the rise of webhooks, so can you. Anyway, to me this generally makes Growl much more useful.

Give Yapper a look. It’s on GitHub under MIT license. It’s the first release, but it should work fine. If not, drop off an issue and it’ll likely be taken care of.

11 Responses to “Yapper, a Jabber/XMPP interface for Growl”


  1. Hey, this is pretty cool indeed! I’ve been thinking too that asynchronous passive notifications would be useful. I might have to take a peek tomorrow at enhancing it to support Linux as well via libnotify; it looks like it should be some fairly straightforward additions/abstractions in core. This would be wonderful to have in Ubuntu with notify-osd. I will however admit to not quite grokking launchd and the manager though; I’m not sure quite what it is doing and what the Linux way to go about doing that would be.

  2. Azmir Says:

    Hi, I’m having problem installing Yapper.

    Keep getting this error:
    No eggs found in /tmp/easy_install-Alc0bk/simplejson-2.0.9/egg-dist-tmp-mG6qdD (setup script problem?)
    error: Could not find required distribution simplejson>=2.0.0

    I already installed py-simplejson 2.0.9_0 via Port and I’m running OSX V10.5.7.
    I hope you can contact me via email because I’m not sure how to install it. Thanks.

    • Jeff Lindsay Says:

      Very weird! I’m actually not sure where to start with that message. It’s very likely you have multiple versions of Python installed. You can use “locate bin/python” to see if you do.

  3. Azmir Says:

    This is the result from “locate bin/python”:

    /Developer/Documentation/wxWidgets/wxPython/bin/pythonize_docs.py
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python-config
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5-config
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw
    /System/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw2.5
    /usr/bin/python
    /usr/bin/python-config
    /usr/bin/python2.5
    /usr/bin/python2.5-config
    /usr/bin/pythonw
    /usr/bin/pythonw2.5

    • Jeff Lindsay Says:

      Well, this is getting pretty specific to your setup, so I’m not sure how much I can help. You said you installed simplejson with ports, but it doesn’t look like you have python installed with ports (normally ports installs under /opt/local).

      I’m particularly concerned that the problem is with simplejson because that should be a trivial dependency to install. You’ll probably have more problems when you get to Twisted.

      Anyway, I was afraid there were going to be these kinds of problems. OS X sucks for Python packages. :(

  4. Azmir Says:

    I do have Python under /opt/local/bin and I managed to install Twisted without a problem.

    The Yapper installation seems to be stucked at simplejson.
    I googled around and found a few hint.

    Can this be the problem?
    URL: http://code.google.com/p/simplejson/issues/detail?id=54


  5. Heya i am for the first time here. I came across this board and I find It
    really useful & it helped me out much. I hope to give something back and aid others like you helped me.


  6. I know this site provides quality based content and other stuff,
    is there any other web site which presents these stuff in quality?


  7. Hi there very nice website!! Guy .. Beautiful .
    . Amazing .. I’ll bookmark your blog and take the feeds also? I am happy to search out a lot of helpful info here in the put up, we need develop extra strategies in this regard, thanks for sharing. . . . . .


  8. It’s in fact very complex in this active life to listen news on TV, so I just use internet for
    that purpose, and get the hottest news.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: