Skip to content


iTerm and Growl

Recent versions of iTerm support Growl notifications. iTerm shows how to initiate Growl events from the command line with:

make; echo $'\e]9;make done\007'

The example shows how to get an alert after a long make. I know I would never remember that command so I wrote a little Bash user defined function to do the same. Add this to your .bashrc file:

growl() { echo -e $'\e]9;'${1}'\007' ; return  ; }

Now the command to initiate a notification would be:

make; growl "make done"

If this snippet is useful to you, please consider buying me a beer.

Popularity: 48% [?]

Posted in Apple / Mac, Snippets.


9 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. David says

    Alas, it does not work under GNU Screen

  2. damonp says

    Would it have something to do with the terminal type?

    From the manpage:

    Each virtual terminal provides the functions of a DEC VT100 terminal

  3. oudeis says

    If you want more control or use a different terminal app, you may want to look at growlnotify:
    http://growl.info/documentation/growlnotify.php

  4. avdempsey says

    Works great, good tip. Now, I’m gonna have to figure out how to make growl notifications work for remote jobs.

  5. Dag Høidahl says

    If you substitue ${1} with ${*} in the shell function, you don’t need to put the notification text within quotes.

  6. Evan Krall says

    You should always quote when you use arguments, unless you have a very good reason not to. Bad things happen otherwise; mostly, newlines and tabs become spaces, globs get expanded, etc. Also, what’s with using echo -e and $’ ‘ at the same time?
    Here’s a better way, IMO:

    growl() { echo $’\e]9;’”${@}”$’07′ ; return ; }

  7. Evan Krall says

    Wow, so I messed that up a little bit.
    That should read:

    growl() { echo $'\e]9;'"${@}"$'07'; }

    Also, be careful about the quotes. I’m not sure exactly why, but some of the quotes in my previous post got transformed to forward and backwards quotes, which will mess with things in the shell.

  8. nobody says
    growl()
    {
            if [ "$TERM_PROGRAM" == "iTerm.app" -a "$TERM" != "screen" ]
            then
                    echo -e $'\e]9;'${1}'07'
            else
                    growlnotify -m ${1} "Alert"
            fi
    }

Continuing the Discussion

  1. links for 2009-06-17 | blog/shl@INTERDOSE linked to this post on 12/22/2009

    [...] iTerm and Growl – damonparker.org (tags: apple shell) [...]



Some HTML is OK

or, reply to this post via trackback.