From 1f7a462788b27a83ea7e0660273e6864ed71e17f Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Wed, 14 Nov 2007 19:47:52 +0000
Subject: [PATCH] [James Newton] osx port for Gajim. a GREAT thanks!!!

---
 Makefile.am                                   |  12 +-
 README.osx                                    |  99 +++
 TODO.osx                                      |  38 +
 autogen.sh                                    |  14 +-
 configure.ac                                  |  77 ++
 data/nibs/Gajim.nib/classes.nib               |   4 +
 data/nibs/Gajim.nib/info.nib                  |  21 +
 data/nibs/Gajim.nib/keyedobjects.nib          | Bin 0 -> 6413 bytes
 data/pixmaps/gajim.icns                       | Bin 0 -> 42918 bytes
 launch.sh                                     |   9 +-
 setup_osx.py                                  | 362 +++++++++
 src/Makefile.am                               |   3 +-
 src/common/config.py                          |  19 +-
 src/common/dbus_support.py                    |   9 +-
 src/common/helpers.py                         |   8 +-
 src/common/proxy65_manager.py                 |   2 +-
 src/common/sleepy.py                          |   4 +-
 src/config.py                                 |  53 +-
 src/conversation_textview.py                  |   4 +
 src/dialogs.py                                |   5 +
 src/features_window.py                        |   7 +
 src/gajim-remote.py                           |   3 +
 src/gajim.py                                  |  30 +-
 src/groupchat_control.py                      |   2 +-
 src/network_manager_listener.py               |  38 +-
 src/notify.py                                 |  13 +
 src/osx/.deps/idle_la-idle.Plo                |   1 +
 src/osx/.deps/nsapp.Plo                       |   1 +
 src/osx/Makefile                              | 761 ++++++++++++++++++
 src/osx/Makefile.am                           |  45 ++
 src/osx/Makefile.in                           | 761 ++++++++++++++++++
 src/osx/__init__.py                           |  45 ++
 src/osx/__init__.pyo                          | Bin 0 -> 1367 bytes
 src/osx/dbus.py                               | 131 +++
 src/osx/growl/.deps/_growlImage.Plo           |   1 +
 src/osx/growl/.deps/_growl_la-_growl.Plo      |   1 +
 src/osx/growl/Growl.py                        | 247 ++++++
 src/osx/growl/Makefile                        | 651 +++++++++++++++
 src/osx/growl/Makefile.am                     |  41 +
 src/osx/growl/Makefile.in                     | 651 +++++++++++++++
 src/osx/growl/_growl.c                        | 239 ++++++
 src/osx/growl/_growlImage.m                   | 274 +++++++
 src/osx/growl/setup.py                        |  25 +
 src/osx/growler.py                            |  63 ++
 src/osx/idle.c                                | 174 ++++
 src/osx/nsapp.h                               |  19 +
 src/osx/nsapp.m                               | 239 ++++++
 src/osx/setup.py                              |  20 +
 .../syncmenu/.deps/syncmenu_la-pysyncmenu.Plo |   1 +
 .../syncmenu/.deps/syncmenu_la-sync-menu.Plo  |   1 +
 src/osx/syncmenu/Makefile                     | 575 +++++++++++++
 src/osx/syncmenu/Makefile.am                  |  21 +
 src/osx/syncmenu/Makefile.in                  | 575 +++++++++++++
 src/osx/syncmenu/pysyncmenu.c                 |  55 ++
 src/osx/syncmenu/setup.py                     |  27 +
 src/osx/syncmenu/sync-menu.c                  | 722 +++++++++++++++++
 src/osx/syncmenu/sync-menu.h                  |  27 +
 src/osx/syncmenu/test-menu.c                  | 107 +++
 src/osx/syncmenu/test-menu.py                 |  78 ++
 src/roster_window.py                          |  84 +-
 src/statusicon.py                             |  18 +-
 61 files changed, 7448 insertions(+), 69 deletions(-)
 create mode 100644 README.osx
 create mode 100644 TODO.osx
 create mode 100644 data/nibs/Gajim.nib/classes.nib
 create mode 100644 data/nibs/Gajim.nib/info.nib
 create mode 100644 data/nibs/Gajim.nib/keyedobjects.nib
 create mode 100644 data/pixmaps/gajim.icns
 create mode 100644 setup_osx.py
 create mode 100644 src/osx/.deps/idle_la-idle.Plo
 create mode 100644 src/osx/.deps/nsapp.Plo
 create mode 100644 src/osx/Makefile
 create mode 100644 src/osx/Makefile.am
 create mode 100644 src/osx/Makefile.in
 create mode 100644 src/osx/__init__.py
 create mode 100644 src/osx/__init__.pyo
 create mode 100644 src/osx/dbus.py
 create mode 100644 src/osx/growl/.deps/_growlImage.Plo
 create mode 100644 src/osx/growl/.deps/_growl_la-_growl.Plo
 create mode 100644 src/osx/growl/Growl.py
 create mode 100644 src/osx/growl/Makefile
 create mode 100644 src/osx/growl/Makefile.am
 create mode 100644 src/osx/growl/Makefile.in
 create mode 100644 src/osx/growl/_growl.c
 create mode 100644 src/osx/growl/_growlImage.m
 create mode 100644 src/osx/growl/setup.py
 create mode 100644 src/osx/growler.py
 create mode 100644 src/osx/idle.c
 create mode 100644 src/osx/nsapp.h
 create mode 100644 src/osx/nsapp.m
 create mode 100644 src/osx/setup.py
 create mode 100644 src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo
 create mode 100644 src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo
 create mode 100644 src/osx/syncmenu/Makefile
 create mode 100644 src/osx/syncmenu/Makefile.am
 create mode 100644 src/osx/syncmenu/Makefile.in
 create mode 100644 src/osx/syncmenu/pysyncmenu.c
 create mode 100644 src/osx/syncmenu/setup.py
 create mode 100644 src/osx/syncmenu/sync-menu.c
 create mode 100644 src/osx/syncmenu/sync-menu.h
 create mode 100644 src/osx/syncmenu/test-menu.c
 create mode 100644 src/osx/syncmenu/test-menu.py

diff --git a/Makefile.am b/Makefile.am
index 50329095c..59a6d995d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -48,6 +48,16 @@ MAINTAINERCLEANFILES = \
 	compile \
 	depcomp \
 	config.guess \
+	config.log \
 	config.sub \
+	config.status \
 	aclocal.m4 \
-	libtool
+	libtool \
+	po/POTFILES.in \
+	src/trayicon_la-eggtrayicon.loT \
+	m4/intltool.m4
+
+MAINTAINERCLEANDIRS = \
+	autom4te.cache \
+	build \
+	dist
diff --git a/README.osx b/README.osx
new file mode 100644
index 000000000..64c45ad85
--- /dev/null
+++ b/README.osx
@@ -0,0 +1,99 @@
+Introduction
+------------
+
+This is an alpha release of Gajim for OS/X using native GTK+. It is not finished
+nor is it relatively stable. The native port of GTK+ is alpha and not stable
+yet, though it has proven to be usable for Gajim. Having said that it is usable,
+basic functionality works. See the TODO file for a list of what is and is not
+working.
+
+
+
+Installing
+----------
+
+Install the GTK+ framework into your /Library/Frameworks directory. It can be
+found at http://codepunks.org/misc/gtk/osx.
+
+Copy the Gajim.app into the /Applications directory or any other directory.
+
+
+Installing language dictionaries
+--------------------------------
+
+The codepunks.org build of the GTK+ framework comes with the US English
+dictionary pre-installed. If you wish to install a different dictionary download
+the appropriate dictionary from here:
+
+http://ftp.gnu.org/gnu/aspell/dict/
+
+Then follow these instructions:
+
+source /Library/Frameworks/GTK+.framework/Versions/Current/bin/env
+tar -jxf aspell-<lang>-<version>.tbz2
+cd aspell-<lang>-<version>
+./configure
+make
+make install
+
+
+Compiling Requirements
+----------------------
+These instructions were gathered for building a universal binary on a PPC. The
+steps for building on an i386 should be essentially the same.
+
+Requirements:
+- OS/X 10.4, i386 or ppc
+- Universal MacPython 2.5
+    http://www.pythonmac.org/packages/py25-fat/index.html
+- Latest XCode (2.4.0 or greater)
+- py2app
+    http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html
+
+Install all of the requirements. Make sure that the universal MacPython is
+installed before py2app. Then ensure that this is the first python in your
+PATH.
+
+    export PATH=/Library/Frameworks/Python.framework/Versions/2.5/bin:$PATH
+
+Then install py2app.
+
+
+Compiling
+---------
+
+In the top level run the configure script. If this is source is from subversion
+then run the autogen.sh script. Follow it up with a make:
+
+    ./configure
+        or
+    ./autogen.sh
+    make
+
+Once that is done Gajim can be run from the source tree. You may also create an
+app bundle suitable for use or distribution. To do that run:
+
+    python setup_osx.py build
+
+The Gajim.app bundle is created in the dist directory. This bundle is ready
+for use as is. Copy it to your /Applications directory and you're good to go.
+
+You now have a self contained (almost, requires GTK+.framework still) universal
+native build of Gajim.
+
+Optionally to create a distribution of the Gajim app bundle do:
+
+    python setup_osx.py dist
+
+
+
+Development
+-----------
+
+It is possible to run Gajim correctly from the app bundle but still use the 
+python code in the source tree. This line must be added to the _run() function 
+in the Gajim.app/Resources/__boot__.py file. It needs to be located just after
+the sys module is imported. Font forget to fix the path to match your
+environment.
+
+sys.path = ["/Users/user/Source/gajim/src"] + sys.path
diff --git a/TODO.osx b/TODO.osx
new file mode 100644
index 000000000..7216d3aea
--- /dev/null
+++ b/TODO.osx
@@ -0,0 +1,38 @@
+The bits that work
+------------------
+
+-idle checking
+-dbus and gajim-remote, using dbus from GTK+.framework.
+-systray icon
+-app bundle with universal binaries. Depends on the GTK+.framework.
+-notifications through growl, internal fallback works fine as well
+-spell checking
+-running apps and opening files/urls
+-playing sounds
+-Network monitoring
+-Mostly everything else except for whats below.
+
+
+
+The bits that dont work
+-----------------------
+
+-Application start/stop/doc/DnD handling
+-finish the .app bundle
+   - setup gajim-remote, maybe install it to /usr/local
+   - fix user session management
+-integrate the Gajim and gajim-remote scripts with autoconf and add GTK
+ framework detection
+-Pass icons to OS/X menu
+-set the LSEnvironment in Info.plist for gtk paths instead of hard coding in
+ gajim.py
+-Maybe setup the pasteboard  services for an OS/X alternative to the
+ gajim_remote
+-CFBundleDocumentTypes.NSDocument
+
+
+Native GTK bugs
+----------------
+
+-cut and paste blows up Finder and the os/x GUI server. very very nasty.
+-with mutiple displays, popup menus show up on the wrong display
diff --git a/autogen.sh b/autogen.sh
index dbf2cc812..76c221430 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -8,11 +8,19 @@
 	echo "See README.html for build requirements."
 	exit 1
   fi
-  set -x
+  AM_ARGS="--add-missing --gnu --copy"
+  CONF_ARGS=""
+  if test x`uname -s 2>/dev/null` = 'xDarwin';then
+    . /Library/Frameworks/GTK+.framework/Versions/Current/env
+    #export PATH=/Library/Frameworks/GTK+.framework/Versions/Current/bin/:$PATH
+    #export PKG_CONFIG_PATH=/Library/Frameworks/GTK+.framework/Versions/Current/lib/pkgconfig
+    AM_ARGS="${AM_ARGS} --ignore-deps"
+    CONF_ARGS="${CONF_ARGS} --disable-idle --without-x"
+  fi
   intltoolize --force --automake \
   && aclocal -I ./m4 \
   && libtoolize --copy --force --automake \
   && autoheader \
   && autoconf  \
-  && automake --add-missing --gnu --copy \
-  && ./configure $@
+  && automake ${AM_ARGS} \
+  && ./configure ${CONF_ARGS} $@
diff --git a/configure.ac b/configure.ac
index f859ad970..0087842f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,9 @@ AC_CONFIG_HEADER(config.h)
 AC_CONFIG_MACRO_DIR([m4])
 AM_MAINTAINER_MODE
 
+dnl Make Objective-C work with automake
+AM_CONDITIONAL([am__fastdepOBJC], false)
+
 IT_PROG_INTLTOOL([0.35.0])
 PKG_PROG_PKG_CONFIG([0.19])
 
@@ -128,6 +131,75 @@ AC_ARG_ENABLE(trayicon,
 test "x$enable_trayicon" = "xyes" && have_trayicon=true || have_trayicon=false
 AM_CONDITIONAL(BUILD_TRAYICON, $have_trayicon)
 
+dnl ****
+dnl Cocoa
+dnl ****
+AC_ARG_ENABLE([cocoa],
+  [  --disable-cocoa         build cocoa integration [default auto]],
+  enable_cocoa=$enableval, enable_cocoa=yes)
+
+if test "x$enable_cocoa" = "xyes";then 
+  dnl There is no pkgconfig for cocoa; lets do a header check
+  temp_save_cflags="$CFLAGS"
+  CFLAGS="$CFLAGS -ObjC"
+  AC_CHECK_HEADER(Cocoa/Cocoa.h, [have_cocoa=true], [have_cocoa=false])
+  AC_CHECK_HEADER(AppKit/AppKit.h, [have_appkit=true], [have_appkit=false])
+  CFLAGS="$temp_save_cflags"
+
+  if test "x$have_cocoa" = "xtrue";then
+     COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker Cocoa"
+  fi
+  if test "x$have_appkit" = "xtrue";then
+     COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker AppKit"
+  fi
+  if test "x$COCOA_LIBS" != "x";then
+	 AC_SUBST(COCOA_LIBS)
+     true
+  fi
+fi
+AM_CONDITIONAL(BUILD_COCOA, $have_cocoa)
+
+dnl ****
+dnl Carbon
+dnl ****
+AC_ARG_ENABLE([carbon],
+  [  --disable-carbon        build with carbon [default auto]],
+  enable_carbon=$enableval, enable_carbon=yes)
+
+if test "x$enable_carbon" = "xyes";then 
+  dnl There is no pkgconfig for carbon; lets do a header check
+  AC_CHECK_HEADER(Carbon/Carbon.h, [have_carbon=true], [have_carbon=false])
+  AC_CHECK_HEADER(IOKit/IOKitLib.h, [have_iokit=true], [have_iokit=false])
+
+  if test "x$have_carbon" = "xtrue";then
+     CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker Carbon"
+  fi
+  if test "x$have_iokit" = "xtrue";then
+     CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker IOKit"
+  fi
+  if test "x$CARBON_LIBS" != "x";then
+	 AC_SUBST(CARBON_LIBS)
+     have_idle_osx=true
+     dnl Disable X11 idle
+     have_idle=false
+     AM_CONDITIONAL(BUILD_IDLE, false)
+     dnl Disable custom trayicon
+     have_trayicon=gtk+
+     AM_CONDITIONAL(BUILD_TRAYICON, false)
+     dnl Hack to work around failure in gettext package detection on OS/X
+     if test "x$GMSGFMT" = "x";then
+        AC_SUBST(GMSGFMT, msgfmt)
+        AC_SUBST(MSGFMT, msgfmt)
+        AC_SUBST(XGETTEXT, xgettext)
+     fi
+  else
+	 have_carbon=false
+     have_idle_osx=false
+  fi
+fi
+AM_CONDITIONAL(BUILD_IDLE_OSX, $have_carbon)
+AM_CONDITIONAL(BUILD_CARBON, $have_carbon)
+
 ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}"
 AC_SUBST(ACLOCAL_AMFLAGS)
 
@@ -159,6 +231,9 @@ AC_CONFIG_FILES([
 	data/defs.py
 	src/Makefile
 	src/common/Makefile
+    src/osx/Makefile
+    src/osx/growl/Makefile
+    src/osx/syncmenu/Makefile
 	scripts/gajim
 	scripts/gajim-remote
 	po/Makefile.in
@@ -171,4 +246,6 @@ echo "
     idle module ...... ${have_idle}
     remote control ... ${have_remote}
     trayicon ......... ${have_trayicon}
+    idle module OSX .. ${have_idle_osx}
+    cocoa ............ ${have_cocoa}
 *****************************"
diff --git a/data/nibs/Gajim.nib/classes.nib b/data/nibs/Gajim.nib/classes.nib
new file mode 100644
index 000000000..b9b4b09f6
--- /dev/null
+++ b/data/nibs/Gajim.nib/classes.nib
@@ -0,0 +1,4 @@
+{
+    IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); 
+    IBVersion = 1; 
+}
\ No newline at end of file
diff --git a/data/nibs/Gajim.nib/info.nib b/data/nibs/Gajim.nib/info.nib
new file mode 100644
index 000000000..90bdefffb
--- /dev/null
+++ b/data/nibs/Gajim.nib/info.nib
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>69 10 356 240 0 0 1280 832 </string>
+	<key>IBEditorPositions</key>
+	<dict>
+		<key>29</key>
+		<string>245 312 185 44 0 0 1280 832 </string>
+	</dict>
+	<key>IBFramework Version</key>
+	<string>446.1</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>29</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>8R218</string>
+</dict>
+</plist>
diff --git a/data/nibs/Gajim.nib/keyedobjects.nib b/data/nibs/Gajim.nib/keyedobjects.nib
new file mode 100644
index 0000000000000000000000000000000000000000..bc313d484ed50e29c78da3564417e80d2ac9b29b
GIT binary patch
literal 6413
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
Q5AWFQ?YH(e{#{S`7pMXXC;$Ke

literal 0
HcmV?d00001

diff --git a/data/pixmaps/gajim.icns b/data/pixmaps/gajim.icns
new file mode 100644
index 0000000000000000000000000000000000000000..37516d5e80152b50a41bbf8885ac9ee0960585eb
GIT binary patch
literal 42918
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

literal 0
HcmV?d00001

diff --git a/launch.sh b/launch.sh
index 08b9110a0..1b23c5c4d 100755
--- a/launch.sh
+++ b/launch.sh
@@ -1,3 +1,10 @@
 #!/bin/bash
-cd `dirname $0`/src
+BASE=`pwd`/`dirname $0`
+OS=`uname -s`
+
+if [ "x${OS}" == "xDarwin" ]; then
+    export RESOURCEPATH="${BASE}/dist/Gajim.app/Contents/Resources"
+fi
+
+cd ${BASE}/src
 exec -a gajim python -OOt gajim.py $@
diff --git a/setup_osx.py b/setup_osx.py
new file mode 100644
index 000000000..960686597
--- /dev/null
+++ b/setup_osx.py
@@ -0,0 +1,362 @@
+"""
+Usage:
+    python setup_osx.py [build | dist]
+"""
+
+from setuptools import setup
+import sys, glob, os, commands, types
+from os import system, unlink, symlink, getcwd, mkdir, utime
+from shutil import move, copy, copytree, rmtree
+
+###
+### Globals
+###
+
+GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current"
+NAME = 'Gajim'
+VERSION = '0.11'
+DESCRIPTION = 'A full featured Jabber client'
+AUTHOR = 'Gajim Development Team'
+URL = 'http://www.gajim.org/'
+DOWNLOAD_URL = 'http://www.gajim.org/downloads.php'
+LICENSE = 'GPL'
+PWD = getcwd()
+APP_RS = "dist/Gajim.app/Contents/Resources"
+
+GAJIM_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+export PATH=%s/bin:$PATH \n\
+exec ${0}.bin \n\
+' % (GTK_DIR, GTK_DIR)
+
+GAJIM_REMOTE_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+TOPDIR=${0%%/MacOS/gajim-remote} \n\
+echo "${TOPDIR}" | grep -e "^/" \n\
+[ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\
+export RESOURCEPATH=${TOPDIR}/Resources \n\
+export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\
+export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\
+cd ${RESOURCEPATH} \n\
+exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\
+' % GTK_DIR
+
+###
+### Functions
+###
+
+def check(ret):
+	if type(ret) == types.ListType:
+		if ret[0] != 0:
+			raise Exception("Command failed: " + ret[1])
+	elif type(ret) == types.IntType:
+		if ret != 0:
+			raise Exception("Command failed")
+	return
+
+
+def force(func):
+	try:
+		func()
+	except:
+		pass
+	return
+
+
+def writeScript(filename, contents):
+	script = file(filename, "w+")
+	script.write(contents)
+	script.close()
+	system("chmod +x %s" % filename)
+	return
+
+
+def cleanup():
+	force(lambda:rmtree("build"))
+	force(lambda:rmtree("dist"))
+
+def stageInstall():
+	check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD)))
+	force(lambda:unlink("src/osx/growl/_growl.so"))
+	force(lambda:unlink("src/osx/growl/_growlImage.so"))
+	force(lambda:unlink("src/osx/idle.so"))
+	force(lambda:unlink("src/osx/nsapp.so"))
+	force(lambda:unlink("src/osx/syncmenu.so"))
+	force(lambda:unlink("src/gtkspell.so"))
+	symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so")
+	symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD,
+		 "src/osx/growl/_growlImage.so")
+	symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so")
+	symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so")
+	symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so")
+	if os.path.isfile("build/inst/lib/gajim/gtkspell.so"):
+		symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so")
+	return
+
+
+def buildApp():
+	sys.path.append('src')
+	sys.path.append(GTK_DIR + "/lib/python2.5/site-packages")
+	sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0")
+	OPTIONS = {'argv_emulation':True,
+			   'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo',
+			   'iconfile':'data/pixmaps/gajim.icns',
+			   'includes':'osx,ConfigParser,compiler,UserString,history_manager',
+			   'plist':{'LSMinimumSystemVersion':'10.4.0',
+						'NSHumanReadableCopyright':'GNU General Public License',
+						'CFBundleIdentifier':'org.gajim',
+						'NSMainNibFile':'Gajim',
+						},
+			   }
+	setup(
+		name = NAME, version = VERSION, description = DESCRIPTION,
+		author = AUTHOR, url = URL, download_url = DOWNLOAD_URL,
+		license = LICENSE,
+		app=['src/gajim.py'],
+		data_files=['data/nibs/Gajim.nib'],
+		options={'py2app': OPTIONS},
+		setup_requires=['py2app'],
+		)
+	return
+
+
+def finishApp():
+	# setup gajim dirs
+	copytree("build/inst/share/gajim/data", APP_RS + "/data")
+	copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps")
+	copytree("build/inst/locale", APP_RS + "/locale")
+	copytree("build/inst/share/man", APP_RS + "/man")
+	force(lambda:unlink("dist/Gajim.app/Contents/data"))
+	symlink("Resources/data", "dist/Gajim.app/Contents/data")
+	copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources")
+	# Nuke libs that are in the framework
+	move("dist/Gajim.app/Contents/Frameworks/Python.framework",
+		 "dist/Gajim.app/Contents/Python.framework")
+	rmtree("dist/Gajim.app/Contents/Frameworks")
+	mkdir("dist/Gajim.app/Contents/Frameworks")
+	move("dist/Gajim.app/Contents/Python.framework",
+		 "dist/Gajim.app/Contents/Frameworks/Python.framework")
+	# Adjust the running of the app
+	move("dist/Gajim.app/Contents/MacOS/Gajim",
+		 "dist/Gajim.app/Contents/MacOS/Gajim.bin")
+	writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT)
+	# Setup the gajim-remote script
+	writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote",
+				GAJIM_REMOTE_SCRIPT)
+	# Touch the top dir so Finder knows to update its idea of this bundle
+	utime("dist/Gajim.app", None)
+	return
+
+
+def distApp():
+	force(lambda:rmtree("dist/Gajim"))
+	force(lambda:rmtree("dist/Gajim.tar.bz2"))
+	mkdir("dist/Gajim")
+	check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim"))
+	copy("README.osx", "dist/Gajim/README")
+	copy("TODO.osx", "dist/Gajim/TODO")
+	check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim"))
+	rmtree("dist/Gajim")
+	return
+
+
+
+###
+### Start
+###
+if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and
+	(sys.argv[1] != "dist"))):
+	print "usage: python setup_osx.py [build]"
+	print "   or: python setup_osx.py [dist]"
+	sys.exit(1)
+elif sys.argv[1] == "build":
+	sys.argv[1] = "py2app"
+	cleanup()
+	stageInstall()
+	buildApp()
+	finishApp()
+elif sys.argv[1] == "dist":
+	distApp()
+"""
+Usage:
+    python setup_osx.py [build | dist]
+"""
+
+from setuptools import setup
+import sys, glob, os, commands, types
+from os import system, unlink, symlink, getcwd, mkdir, utime
+from shutil import move, copy, copytree, rmtree
+
+###
+### Globals
+###
+
+GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current"
+NAME = 'Gajim'
+VERSION = '0.11'
+DESCRIPTION = 'A full featured Jabber client'
+AUTHOR = 'Gajim Development Team'
+URL = 'http://www.gajim.org/'
+DOWNLOAD_URL = 'http://www.gajim.org/downloads.php'
+LICENSE = 'GPL'
+PWD = getcwd()
+APP_RS = "dist/Gajim.app/Contents/Resources"
+
+GAJIM_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+export PATH=%s/bin:$PATH \n\
+exec ${0}.bin \n\
+' % (GTK_DIR, GTK_DIR)
+
+GAJIM_REMOTE_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+TOPDIR=${0%%/MacOS/gajim-remote} \n\
+echo "${TOPDIR}" | grep -e "^/" \n\
+[ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\
+export RESOURCEPATH=${TOPDIR}/Resources \n\
+export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\
+export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\
+cd ${RESOURCEPATH} \n\
+exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\
+' % GTK_DIR
+
+###
+### Functions
+###
+
+def check(ret):
+	if type(ret) == types.ListType:
+		if ret[0] != 0:
+			raise Exception("Command failed: " + ret[1])
+	elif type(ret) == types.IntType:
+		if ret != 0:
+			raise Exception("Command failed")
+	return
+
+
+def force(func):
+	try:
+		func()
+	except:
+		pass
+	return
+
+
+def writeScript(filename, contents):
+	script = file(filename, "w+")
+	script.write(contents)
+	script.close()
+	system("chmod +x %s" % filename)
+	return
+
+
+def cleanup():
+	force(lambda:rmtree("build"))
+	force(lambda:rmtree("dist"))
+
+def stageInstall():
+	check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD)))
+	force(lambda:unlink("src/osx/growl/_growl.so"))
+	force(lambda:unlink("src/osx/growl/_growlImage.so"))
+	force(lambda:unlink("src/osx/idle.so"))
+	force(lambda:unlink("src/osx/nsapp.so"))
+	force(lambda:unlink("src/osx/syncmenu.so"))
+	force(lambda:unlink("src/gtkspell.so"))
+	symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so")
+	symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD,
+		 "src/osx/growl/_growlImage.so")
+	symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so")
+	symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so")
+	symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so")
+	if os.path.isfile("build/inst/lib/gajim/gtkspell.so"):
+		symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so")
+	return
+
+
+def buildApp():
+	sys.path.append('src')
+	sys.path.append(GTK_DIR + "/lib/python2.5/site-packages")
+	sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0")
+	OPTIONS = {'argv_emulation':True,
+			   'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo',
+			   'iconfile':'data/pixmaps/gajim.icns',
+			   'includes':'osx,ConfigParser,compiler,UserString,history_manager',
+			   'plist':{'LSMinimumSystemVersion':'10.4.0',
+						'NSHumanReadableCopyright':'GNU General Public License',
+						'CFBundleIdentifier':'org.gajim',
+						'NSMainNibFile':'Gajim',
+						},
+			   }
+	setup(
+		name = NAME, version = VERSION, description = DESCRIPTION,
+		author = AUTHOR, url = URL, download_url = DOWNLOAD_URL,
+		license = LICENSE,
+		app=['src/gajim.py'],
+		data_files=['data/nibs/Gajim.nib'],
+		options={'py2app': OPTIONS},
+		setup_requires=['py2app'],
+		)
+	return
+
+
+def finishApp():
+	# setup gajim dirs
+	copytree("build/inst/share/gajim/data", APP_RS + "/data")
+	copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps")
+	copytree("build/inst/locale", APP_RS + "/locale")
+	copytree("build/inst/share/man", APP_RS + "/man")
+	force(lambda:unlink("dist/Gajim.app/Contents/data"))
+	symlink("Resources/data", "dist/Gajim.app/Contents/data")
+	copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources")
+	# Nuke libs that are in the framework
+	move("dist/Gajim.app/Contents/Frameworks/Python.framework",
+		 "dist/Gajim.app/Contents/Python.framework")
+	rmtree("dist/Gajim.app/Contents/Frameworks")
+	mkdir("dist/Gajim.app/Contents/Frameworks")
+	move("dist/Gajim.app/Contents/Python.framework",
+		 "dist/Gajim.app/Contents/Frameworks/Python.framework")
+	# Adjust the running of the app
+	move("dist/Gajim.app/Contents/MacOS/Gajim",
+		 "dist/Gajim.app/Contents/MacOS/Gajim.bin")
+	writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT)
+	# Setup the gajim-remote script
+	writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote",
+				GAJIM_REMOTE_SCRIPT)
+	# Touch the top dir so Finder knows to update its idea of this bundle
+	utime("dist/Gajim.app", None)
+	return
+
+
+def distApp():
+	force(lambda:rmtree("dist/Gajim"))
+	force(lambda:rmtree("dist/Gajim.tar.bz2"))
+	mkdir("dist/Gajim")
+	check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim"))
+	copy("README.osx", "dist/Gajim/README")
+	copy("TODO.osx", "dist/Gajim/TODO")
+	check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim"))
+	rmtree("dist/Gajim")
+	return
+
+
+
+###
+### Start
+###
+if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and
+	(sys.argv[1] != "dist"))):
+	print "usage: python setup_osx.py [build]"
+	print "   or: python setup_osx.py [dist]"
+	sys.exit(1)
+elif sys.argv[1] == "build":
+	sys.argv[1] = "py2app"
+	cleanup()
+	stageInstall()
+	buildApp()
+	finishApp()
+elif sys.argv[1] == "dist":
+	distApp()
diff --git a/src/Makefile.am b/src/Makefile.am
index 30eb995a9..27a734196 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,9 +1,10 @@
-SUBDIRS = common
+SUBDIRS = common osx
 
 CLEANFILES = \
 	trayicon.c
 INCLUDES = \
 	$(PYTHON_INCLUDES) 
+export MACOSX_DEPLOYMENT_TARGET=10.4
 
 if BUILD_GTKSPELL
 gtkspelllib_LTLIBRARIES = gtkspell.la
diff --git a/src/common/config.py b/src/common/config.py
index 5408fe14e..878fa58e1 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -26,6 +26,7 @@
 ##
 
 
+import sys
 import re
 import copy
 import defs
@@ -50,6 +51,16 @@ opt_treat_incoming_messages = ['', 'chat', 'normal']
 class Config:
 
 	DEFAULT_ICONSET = 'dcraven'
+	if sys.platform == 'darwin':
+		DEFAULT_OPENWITH = 'open'
+		DEFAULT_BROWSER = 'open -a firefox'
+		DEFAULT_MAILAPP = 'open -a thunderbird'
+		DEFAULT_FILE_MANAGER = 'open'
+	else:
+		DEFAULT_OPENWITH = 'gnome-open'
+		DEFAULT_BROWSER = 'firefox'
+		DEFAULT_MAILAPP = 'mozilla-thunderbird -compose'
+		DEFAULT_FILE_MANAGER = 'xffm'
 
 	__options = {
 		# name: [ type, default_value, help_string ]
@@ -108,10 +119,10 @@ class Config:
 		'sounds_on': [ opt_bool, True ],
 		# 'aplay', 'play', 'esdplay', 'artsplay' detected first time only
 		'soundplayer': [ opt_str, '' ],
-		'openwith': [ opt_str, 'gnome-open' ],
-		'custombrowser': [ opt_str, 'firefox' ],
-		'custommailapp': [ opt_str, 'mozilla-thunderbird -compose' ],
-		'custom_file_manager': [ opt_str, 'xffm' ],
+		'openwith': [ opt_str, DEFAULT_OPENWITH ],
+		'custombrowser': [ opt_str, DEFAULT_BROWSER ],
+		'custommailapp': [ opt_str, DEFAULT_MAILAPP ],
+		'custom_file_manager': [ opt_str, DEFAULT_FILE_MANAGER ],
 		'gc-hpaned-position': [opt_int, 430],
 		'gc_refer_to_nick_char': [opt_str, ',', _('Character to add after nickname when using nick completion (tab) in group chat.')],
 		'gc_proposed_nick_char': [opt_str, '_', _('Character to propose to add after desired nickname when desired nickname is used by someone else in group chat.')],
diff --git a/src/common/dbus_support.py b/src/common/dbus_support.py
index d91a727bd..71695036a 100644
--- a/src/common/dbus_support.py
+++ b/src/common/dbus_support.py
@@ -20,7 +20,7 @@
 ## along with Gajim.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
-import os
+import os, sys
 
 from common import gajim
 from common import exceptions
@@ -28,10 +28,13 @@ from common import exceptions
 _GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error'
 
 try:
+	if sys.platform == 'darwin':
+		import osx.dbus
+		osx.dbus.load(True)
 	import dbus
 	import dbus.service
 	import dbus.glib
-	supported = True # does use have D-Bus bindings?
+	supported = True # does user have D-Bus bindings?
 except ImportError:
 	supported = False
 	if not os.name == 'nt': # only say that to non Windows users
@@ -103,7 +106,7 @@ class SessionBus:
 session_bus = SessionBus()
 
 def get_interface(interface, path):
-	'''Returns an interface on the current SessionBus. If the interface isn't 
+	'''Returns an interface on the current SessionBus. If the interface isn\'t 
 	running, it tries to start it first.'''
 	if not supported:
 		return None
diff --git a/src/common/helpers.py b/src/common/helpers.py
index 623ab522f..7cc5658a2 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -30,6 +30,7 @@ import urllib
 import errno
 import select
 import sha
+import sys
 from encodings.punycode import punycode_encode
 from encodings import idna
 
@@ -39,6 +40,9 @@ from i18n import ngettext
 from xmpp_stringprep import nodeprep, resourceprep, nameprep
 
 
+if sys.platform == 'darwin':
+	from osx import nsapp
+
 try:
 	import winsound # windows-only built-in module for playing wav
 	import win32api
@@ -474,7 +478,9 @@ def play_sound_file(path_to_soundfile):
 		return
 	if path_to_soundfile is None or not os.path.exists(path_to_soundfile):
 		return
-	if os.name == 'nt':
+	if sys.platform == 'darwin':
+		nsapp.playFile(path_to_soundfile)
+	elif os.name == 'nt':
 		try:
 			winsound.PlaySound(path_to_soundfile,
 				winsound.SND_FILENAME|winsound.SND_ASYNC)
diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py
index 542119a7a..29627478f 100644
--- a/src/common/proxy65_manager.py
+++ b/src/common/proxy65_manager.py
@@ -258,7 +258,7 @@ class HostTester(Socks5, IdleObject):
 		except Exception, ee:
 			(errnum, errstr) = ee
 			# 56 is for freebsd
-			if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK, 56):
+			if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK):
 				# still trying to connect
 				return
 			# win32 needs this
diff --git a/src/common/sleepy.py b/src/common/sleepy.py
index b515b9821..bcc5f73c3 100644
--- a/src/common/sleepy.py
+++ b/src/common/sleepy.py
@@ -25,7 +25,7 @@
 ##
 
 from common import gajim
-import os
+import os, sys
 
 
 STATE_UNKNOWN  = 'OS probably not supported'
@@ -47,6 +47,8 @@ try:
 			lastInputInfo = LASTINPUTINFO()
 			lastInputInfo.cbSize = ctypes.sizeof(lastInputInfo)
 
+		elif sys.platform == 'darwin':
+			import osx.idle as idle
 		else: # unix
 			import idle
 except:
diff --git a/src/config.py b/src/config.py
index 61ba66aa1..4112ba67d 100644
--- a/src/config.py
+++ b/src/config.py
@@ -24,7 +24,7 @@
 
 import gtk
 import gobject
-import os
+import os, sys
 import common.config
 import common.sleepy
 from common.i18n import Q_
@@ -259,7 +259,7 @@ class PreferencesWindow:
 		self.auto_popup_away_checkbutton.set_active(st)
 
 		# sounds
-		if os.name == 'nt':
+		if ((os.name == 'nt') or (sys.platform == 'darwin')):
 			# if windows, player must not become visible on show_all
 			soundplayer_hbox = self.xml.get_widget('soundplayer_hbox')
 			soundplayer_hbox.set_no_show_all(True)
@@ -397,6 +397,12 @@ class PreferencesWindow:
 				'applications_combobox')
 			self.xml.get_widget('custom_apps_frame').hide()
 			self.xml.get_widget('custom_apps_frame').set_no_show_all(True)
+
+			if sys.platform == 'darwin':
+				self.applications_combobox.remove_text(3)
+				self.applications_combobox.remove_text(2)
+				self.applications_combobox.remove_text(1)
+
 			if gajim.config.get('autodetect_browser_mailer'):
 				self.applications_combobox.set_active(0)
 			# else autodetect_browser_mailer is False.
@@ -408,7 +414,10 @@ class PreferencesWindow:
 			elif gajim.config.get('openwith') == 'exo-open':
 				self.applications_combobox.set_active(3)				
 			elif gajim.config.get('openwith') == 'custom':
-				self.applications_combobox.set_active(4)
+				if sys.platform == 'darwin':
+					self.applications_combobox.set_active(1)
+				else:
+					self.applications_combobox.set_active(4)
 				self.xml.get_widget('custom_apps_frame').show()
 				
 			self.xml.get_widget('custom_browser_entry').set_text(
@@ -898,19 +907,27 @@ class PreferencesWindow:
 
 	def on_applications_combobox_changed(self, widget):
 		gajim.config.set('autodetect_browser_mailer', False)
-		if widget.get_active() == 4:
-			self.xml.get_widget('custom_apps_frame').show()
-			gajim.config.set('openwith', 'custom')
-		else:
+		if sys.platform == 'darwin':
 			if widget.get_active() == 0:
 				gajim.config.set('autodetect_browser_mailer', True)
+				self.xml.get_widget('custom_apps_frame').hide()
 			elif widget.get_active() == 1:
-				gajim.config.set('openwith', 'gnome-open')
-			elif widget.get_active() == 2:
-				gajim.config.set('openwith', 'kfmclient exec')
-			elif widget.get_active() == 3:
-				gajim.config.set('openwith', 'exo-open')
-			self.xml.get_widget('custom_apps_frame').hide()
+				self.xml.get_widget('custom_apps_frame').show()
+				gajim.config.set('openwith', 'custom')
+		else:
+			if widget.get_active() == 4:
+				self.xml.get_widget('custom_apps_frame').show()
+				gajim.config.set('openwith', 'custom')
+			else:
+				if widget.get_active() == 0:
+					gajim.config.set('autodetect_browser_mailer', True)
+				elif widget.get_active() == 1:
+					gajim.config.set('openwith', 'gnome-open')
+				elif widget.get_active() == 2:
+					gajim.config.set('openwith', 'kfmclient exec')
+				elif widget.get_active() == 3:
+					gajim.config.set('openwith', 'exo-open')
+				self.xml.get_widget('custom_apps_frame').hide()
 		gajim.interface.save_config()
 
 	def on_custom_browser_entry_changed(self, widget):
@@ -2105,7 +2122,7 @@ class AccountsWindow:
 			else: 
 				gajim.interface.roster.regroup = False
 			gajim.interface.roster.draw_roster()
-			gajim.interface.roster.actions_menu_needs_rebuild = True
+			gajim.interface.roster.set_actions_menu_needs_rebuild()
 
 		elif not gajim.config.get('enable_zeroconf') and widget.get_active():
 			self.xml.get_widget('zeroconf_notebook').set_sensitive(True)
@@ -2137,7 +2154,7 @@ class AccountsWindow:
 			else: 
 				gajim.interface.roster.regroup = False
 			gajim.interface.roster.draw_roster()
-			gajim.interface.roster.actions_menu_needs_rebuild = True
+			gajim.interface.roster.set_actions_menu_needs_rebuild()
 			gajim.interface.save_config()
 
 		self.on_checkbutton_toggled(widget, 'enable_zeroconf')
@@ -2564,7 +2581,7 @@ class RemoveAccountWindow:
 		else: 
 			gajim.interface.roster.regroup = False
 		gajim.interface.roster.draw_roster()
-		gajim.interface.roster.actions_menu_needs_rebuild = True
+		gajim.interface.roster.set_actions_menu_needs_rebuild()
 		if gajim.interface.instances.has_key('accounts'):
 			gajim.interface.instances['accounts'].init_accounts()
 		self.window.destroy()
@@ -2760,7 +2777,7 @@ class ManageBookmarksWindow:
 				gajim.connections[account_unicode].bookmarks.append(bmdict)
 
 			gajim.connections[account_unicode].store_bookmarks()
-		gajim.interface.roster.actions_menu_needs_rebuild = True
+		gajim.interface.roster.set_actions_menu_needs_rebuild()
 		self.window.destroy()
 
 	def on_cancel_button_clicked(self, widget):
@@ -3347,5 +3364,5 @@ class AccountCreationWizardWindow:
 		else: 
 			gajim.interface.roster.regroup = False
 		gajim.interface.roster.draw_roster()
-		gajim.interface.roster.actions_menu_needs_rebuild = True
+		gajim.interface.roster.set_actions_menu_needs_rebuild()
 		gajim.interface.save_config()
diff --git a/src/conversation_textview.py b/src/conversation_textview.py
index c14336067..53b3a68b1 100644
--- a/src/conversation_textview.py
+++ b/src/conversation_textview.py
@@ -318,6 +318,10 @@ class ConversationTextview:
 		return True		   
 
 	def smooth_scroll_timeout(self):
+		gobject.idle_add(self.do_smooth_scroll_timeout)
+		return
+
+	def do_smooth_scroll_timeout(self):
 		if not self.smooth_id:
 			# we finished scrolling
 			return
diff --git a/src/dialogs.py b/src/dialogs.py
index 2635f82a5..821562bc6 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -881,7 +881,9 @@ class AboutDialog:
 		artists = ['Anders Ström', 'Christophe Got', 'Dennis Craven',
 			'Guillaume Morin', 'Josef Vybíral', 'Membris Khan']
 		dlg.set_artists(artists)
+		gobject.idle_add(self.dorun, dlg)
 
+	def dorun(self, dlg):
 		rep = dlg.run()
 		dlg.destroy()
 
@@ -1932,6 +1934,7 @@ class SingleMessageWindow:
 			self.message_tv_buffer.place_cursor(end_iter)
 
 	def save_pos(self):
+		print 'save_pos'
 		if gajim.config.get('saveposition'):
 			# save the window size and position
 			x, y = self.window.get_position()
@@ -1943,6 +1946,7 @@ class SingleMessageWindow:
 			gajim.interface.save_config()
 
 	def on_single_message_window_delete_event(self, window, ev):
+		print 'delete_event'
 		self.save_pos()
 
 	def prepare_widgets_for(self, action):
@@ -2019,6 +2023,7 @@ class SingleMessageWindow:
 		self.window.destroy()
 
 	def on_close_button_clicked(self, widget):
+		print 'close'
 		self.save_pos()
 		self.window.destroy()
 
diff --git a/src/features_window.py b/src/features_window.py
index be22f2433..a20083297 100644
--- a/src/features_window.py
+++ b/src/features_window.py
@@ -19,6 +19,7 @@
 ##
 
 import os
+import sys
 import gtk
 import gobject
 import gtkgui_helpers
@@ -219,6 +220,12 @@ class FeaturesWindow:
 	def notification_available(self):
 		if os.name == 'nt':
 			return False
+		elif sys.platform == 'darwin':
+			try:
+				import osx.growler
+			except:
+				return False
+			return True
 		from common import dbus_support
 		if self.dbus_available() and dbus_support.get_notifications_interface():
 			return True
diff --git a/src/gajim-remote.py b/src/gajim-remote.py
index abbaa0090..892375a39 100755
--- a/src/gajim-remote.py
+++ b/src/gajim-remote.py
@@ -40,6 +40,9 @@ def send_error(error_message):
 	sys.exit(1)
 
 try:
+	if sys.platform == 'darwin':
+		import osx.dbus
+		osx.dbus.load(False)
 	import dbus
 	import dbus.service
 	import dbus.glib
diff --git a/src/gajim.py b/src/gajim.py
index b5d1f7c7f..51d616106 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -25,10 +25,17 @@
 ## along with Gajim.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
+
 import sys
 import os
 import urllib
 
+if sys.platform == 'darwin':
+	OSX_FRAMEWORK='/Library/Frameworks/GTK+.framework/Versions/Current'
+	sys.path.append('%s/lib/python2.5/site-packages' % OSX_FRAMEWORK)
+	sys.path.append('%s/lib/python2.5/site-packages/gtk-2.0' % OSX_FRAMEWORK)
+	os.environ['PATH'] = '%s/bin:' % OSX_FRAMEWORK + os.environ['PATH']
+
 import logging
 consoleloghandler = logging.StreamHandler()
 consoleloghandler.setLevel(1)
@@ -294,6 +301,9 @@ def pid_alive():
 		if get_p(pid) in ('python.exe', 'gajim.exe'):
 			return True
 		return False
+	elif sys.platform == 'darwin':
+		from osx import checkPID
+		return checkPID(pid, 'gajim')
 	try:
 		if not os.path.exists('/proc'):
 			return True # no /proc, assume Gajim is running
@@ -356,6 +366,9 @@ def on_exit():
 	# delete pid file on normal exit
 	if os.path.exists(pid_filename):
 		os.remove(pid_filename)
+	if sys.platform == 'darwin':
+		import osx
+		osx.shutdown()
 
 import atexit
 atexit.register(on_exit)
@@ -1430,7 +1443,7 @@ class Interface:
 		# We received a bookmark item from the server (JEP48)
 		# Auto join GC windows if neccessary
 		
-		self.roster.actions_menu_needs_rebuild = True
+		self.roster.set_actions_menu_needs_rebuild()
 		invisible_show = gajim.SHOW_LIST.index('invisible')
 		# do not autojoin if we are invisible
 		if gajim.connections[account].connected == invisible_show:
@@ -1793,7 +1806,7 @@ class Interface:
 		'''SIGNED_IN event is emitted when we sign in, so handle it'''
 		# block signed in notifications for 30 seconds
 		gajim.block_signed_in_notifications[account] = True
-		self.roster.actions_menu_needs_rebuild = True
+		self.roster.set_actions_menu_needs_rebuild()
 		if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \
 		gajim.connections[account].connected in (2, 3):
 			# we go online or free for chat, so we activate auto status
@@ -2736,9 +2749,10 @@ class Interface:
 
 		self.systray_enabled = False
 		self.systray_capabilities = False
-		
-		if os.name == 'nt' and gtk.pygtk_version >= (2, 10, 0) and\
-		gtk.gtk_version >= (2, 10, 0):
+
+		if (((os.name == 'nt') or (sys.platform == 'darwin')) and
+			(gtk.pygtk_version >= (2, 10, 0)) and
+			(gtk.gtk_version >= (2, 10, 0))):
 			import statusicon 
 			self.systray = statusicon.StatusIcon() 
 			self.systray_capabilities = True
@@ -2792,7 +2806,7 @@ if __name__ == '__main__':
 		print >> sys.stderr, "Encodings: d:%s, fs:%s, p:%s" % \
 		(sys.getdefaultencoding(), sys.getfilesystemencoding(), locale.getpreferredencoding())
 
-	if os.name != 'nt':
+	if ((os.name != 'nt') and (sys.platform != 'darwin')):
 		# Session Management support
 		try:
 			import gnome.ui
@@ -2820,5 +2834,9 @@ if __name__ == '__main__':
 		
 	check_paths.check_and_possibly_create_paths()
 
+	if sys.platform == 'darwin':
+		import osx
+		osx.init()
+
 	Interface()
 	gtk.main()
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 65ad1fc00..6d0259006 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1709,7 +1709,7 @@ class GroupchatControl(ChatControlBase):
 		gajim.connections[self.account].bookmarks.append(bm)
 		gajim.connections[self.account].store_bookmarks()
 
-		gajim.interface.roster.actions_menu_needs_rebuild = True
+		gajim.interface.roster.set_actions_menu_needs_rebuild()
 
 		dialogs.InformationDialog(
 				_('Bookmark has been added successfully'),
diff --git a/src/network_manager_listener.py b/src/network_manager_listener.py
index 15d07ad66..e6d42fee1 100644
--- a/src/network_manager_listener.py
+++ b/src/network_manager_listener.py
@@ -18,6 +18,7 @@
 ## along with Gajim.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
+import sys
 from common import gajim
 
 def device_now_active(self, *args):
@@ -34,23 +35,26 @@ def device_no_longer_active(self, *args):
 
 supported = False
 
-try:
-	from common.dbus_support import system_bus
+if sys.platform == 'darwin':
+	supported = True
+else:
+	try:
+		from common.dbus_support import system_bus
 
-	bus = system_bus.SystemBus()
+		bus = system_bus.SystemBus()
 
-	if 'org.freedesktop.NetworkManager' in bus.list_names():
-		supported = True
-		bus.add_signal_receiver(device_no_longer_active,
-			'DeviceNoLongerActive',
-			'org.freedesktop.NetworkManager',
-			'org.freedesktop.NetworkManager',
-			'/org/freedesktop/NetworkManager')
+		if 'org.freedesktop.NetworkManager' in bus.list_names():
+			supported = True
+			bus.add_signal_receiver(device_no_longer_active,
+									'DeviceNoLongerActive',
+									'org.freedesktop.NetworkManager',
+									'org.freedesktop.NetworkManager',
+									'/org/freedesktop/NetworkManager')
 
-		bus.add_signal_receiver(device_now_active,
-			'DeviceNowActive',
-			'org.freedesktop.NetworkManager',
-			'org.freedesktop.NetworkManager',
-			'/org/freedesktop/NetworkManager')
-except:
-	pass
+			bus.add_signal_receiver(device_now_active,
+									'DeviceNowActive',
+									'org.freedesktop.NetworkManager',
+									'org.freedesktop.NetworkManager',
+									'/org/freedesktop/NetworkManager')
+	except:
+		pass
diff --git a/src/notify.py b/src/notify.py
index 8cdc25de1..aae559a9c 100644
--- a/src/notify.py
+++ b/src/notify.py
@@ -46,6 +46,14 @@ try:
 except ImportError:
 	USER_HAS_PYNOTIFY = False
 
+USER_HAS_GROWL = True
+try:
+	import osx.growler
+	osx.growler.init()
+except:
+	USER_HAS_GROWL = False
+
+
 def get_show_in_roster(event, account, contact):
 	'''Return True if this event must be shown in roster, else False'''
 	if event == 'gc_message_received':
@@ -344,6 +352,11 @@ def popup(event_type, jid, account, msg_type = '', path_to_image = None,
 		except gobject.GError, e:
 			# Connection to notification-daemon failed, see #2893
 			gajim.log.debug(str(e))
+	# try os/x growl
+	if USER_HAS_GROWL:
+		osx.growler.notify(event_type, jid, account, msg_type, path_to_image,
+			title, text)
+		return
 
 	# go old style
 	instance = dialogs.PopupNotificationWindow(event_type, jid, account,
diff --git a/src/osx/.deps/idle_la-idle.Plo b/src/osx/.deps/idle_la-idle.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/.deps/idle_la-idle.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/.deps/nsapp.Plo b/src/osx/.deps/nsapp.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/.deps/nsapp.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/Makefile b/src/osx/Makefile
new file mode 100644
index 000000000..d92ee6843
--- /dev/null
+++ b/src/osx/Makefile
@@ -0,0 +1,761 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/gajim
+pkglibdir = $(libdir)/gajim
+pkgincludedir = $(includedir)/gajim
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = src/osx
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"
+idlelibLTLIBRARIES_INSTALL = $(INSTALL)
+nsapplibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(idlelib_LTLIBRARIES) $(nsapplib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+#idle_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__idle_la_SOURCES_DIST = idle.c
+#am_idle_la_OBJECTS = idle_la-idle.lo
+idle_la_OBJECTS = $(am_idle_la_OBJECTS)
+#am_idle_la_rpath = -rpath $(idlelibdir)
+#nsapp_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__nsapp_la_SOURCES_DIST = nsapp.m
+#am_nsapp_la_OBJECTS = nsapp.lo
+nsapp_la_OBJECTS = $(am_nsapp_la_OBJECTS)
+#am_nsapp_la_rpath = -rpath $(nsapplibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+	$(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(idle_la_SOURCES) $(nsapp_la_SOURCES)
+DIST_SOURCES = $(am__idle_la_SOURCES_DIST) \
+	$(am__nsapp_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/asterix/gajim/missing --run aclocal-1.9
+ACLOCAL_AMFLAGS = -I ../m4
+ALL_LINGUAS = 
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/asterix/gajim/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/asterix/gajim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/asterix/gajim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/asterix/gajim/missing --run automake-1.9
+AWK = gawk
+BUILD_CARBON_FALSE = 
+BUILD_CARBON_TRUE = #
+BUILD_COCOA_FALSE = 
+BUILD_COCOA_TRUE = #
+BUILD_GTKSPELL_FALSE = #
+BUILD_GTKSPELL_TRUE = 
+BUILD_IDLE_FALSE = #
+BUILD_IDLE_OSX_FALSE = 
+BUILD_IDLE_OSX_TRUE = #
+BUILD_IDLE_TRUE = 
+BUILD_REMOTE_CONTROL_FALSE = #
+BUILD_REMOTE_CONTROL_TRUE = 
+BUILD_TRAYICON_FALSE = #
+BUILD_TRAYICON_TRUE = 
+CARBON_LIBS = 
+CATALOGS = 
+CATOBJEXT = .gmo
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+COCOA_LIBS = 
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DATADIR = /usr/local/share
+DATADIRNAME = share
+DBUS_CFLAGS = -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include  
+DBUS_LIBS = -ldbus-1  
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DOCDIR = /usr/local/share/doc/gajim
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GETTEXT_PACKAGE = gajim
+GMOFILES = 
+GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+GTKSPELL_CFLAGS = -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  
+GTKSPELL_LIBS = -lgtkspell -laspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0  
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INSTOBJEXT = .mo
+INTLLIBS = 
+INTLTOOL_CAVES_RULE = %.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DESKTOP_RULE = %.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract
+INTLTOOL_KBD_RULE = %.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_KEYS_RULE = %.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_MERGE = $(top_builddir)/intltool-merge
+INTLTOOL_OAF_RULE = %.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
+INTLTOOL_PERL = /usr/bin/perl
+INTLTOOL_POLICY_RULE = %.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PONG_RULE = %.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PROP_RULE = %.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SCHEMAS_RULE = %.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVER_RULE = %.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVICE_RULE = %.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SHEET_RULE = %.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_THEME_RULE = %.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UI_RULE = %.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UPDATE = $(top_builddir)/intltool-update
+INTLTOOL_XAM_RULE = %.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_XML_NOMERGE_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
+INTLTOOL_XML_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+LDFLAGS = 
+LIBDIR = /usr/local/lib
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/asterix/gajim/missing --run makeinfo
+MKINSTALLDIRS = ./mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_OPTS = -c
+OBJEXT = o
+PACKAGE = gajim
+PACKAGE_BUGREPORT = http://trac.gajim.org/
+PACKAGE_NAME = Gajim - A Jabber Instant Messager
+PACKAGE_STRING = Gajim - A Jabber Instant Messager 0.11.2.2-svn
+PACKAGE_TARNAME = gajim
+PACKAGE_VERSION = 0.11.2.2-svn
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+POFILES = 
+POSUB = po
+PO_IN_DATADIR_FALSE = 
+PO_IN_DATADIR_TRUE = 
+PYGTK_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pygtk-2.0  
+PYGTK_DEFS = /usr/share/pygtk/2.0/defs
+PYGTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgmodule-2.0 -ldl -lffi -lgobject-2.0 -lglib-2.0  
+PYTHON = /usr/bin/python
+PYTHON_EXEC_PREFIX = ${exec_prefix}
+PYTHON_INCLUDES = -I/usr/include/python2.4
+PYTHON_PLATFORM = linux2
+PYTHON_PREFIX = ${prefix}
+PYTHON_VERSION = 2.4
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = strip
+USE_NLS = yes
+VERSION = 0.11.2.2-svn
+XGETTEXT = /usr/bin/xgettext
+XMKMF = 
+XSCRNSAVER_CFLAGS =  
+XSCRNSAVER_LIBS = -lXss  
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__fastdepOBJC_FALSE = 
+am__fastdepOBJC_TRUE = #
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/asterix/gajim/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+pkgpyexecdir = ${pyexecdir}/gajim
+pkgpythondir = ${pythondir}/gajim
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = ${exec_prefix}/lib/python2.4/site-packages
+pythondir = ${prefix}/lib/python2.4/site-packages
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+SUBDIRS = growl syncmenu
+OBJC = gcc
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+#idlelib_LTLIBRARIES = idle.la
+#idlelibdir = $(libdir)/gajim
+#idle_la_LIBADD = $(CARBON_LIBS) 
+#idle_la_SOURCES = idle.c
+#idle_la_LDFLAGS = \
+#	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#nsapplib_LTLIBRARIES = nsapp.la
+#nsapplibdir = $(libdir)/gajim
+#nsapp_la_LIBADD = $(COCOA_LIBS) 
+#nsapp_la_SOURCES = nsapp.m
+#nsapp_la_LDFLAGS = \
+#	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#AM_OBJCFLAGS = $(nsapp_la_CFLAGS)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-idlelibLTLIBRARIES: $(idlelib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(idlelibdir)" || $(mkdir_p) "$(DESTDIR)$(idlelibdir)"
+	@list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idlelibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idlelibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-idlelibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(idlelibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(idlelibdir)/$$p"; \
+	done
+
+clean-idlelibLTLIBRARIES:
+	-test -z "$(idlelib_LTLIBRARIES)" || rm -f $(idlelib_LTLIBRARIES)
+	@list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+install-nsapplibLTLIBRARIES: $(nsapplib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(nsapplibdir)" || $(mkdir_p) "$(DESTDIR)$(nsapplibdir)"
+	@list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(nsapplibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nsapplibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-nsapplibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nsapplibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nsapplibdir)/$$p"; \
+	done
+
+clean-nsapplibLTLIBRARIES:
+	-test -z "$(nsapplib_LTLIBRARIES)" || rm -f $(nsapplib_LTLIBRARIES)
+	@list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES) 
+	$(LINK) $(am_idle_la_rpath) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS)
+nsapp.la: $(nsapp_la_OBJECTS) $(nsapp_la_DEPENDENCIES) 
+	$(OBJCLINK) $(am_nsapp_la_rpath) $(nsapp_la_LDFLAGS) $(nsapp_la_OBJECTS) $(nsapp_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/idle_la-idle.Plo
+include ./$(DEPDIR)/nsapp.Plo
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LTCOMPILE) -c -o $@ $<
+
+idle_la-idle.lo: idle.c
+	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -MT idle_la-idle.lo -MD -MP -MF "$(DEPDIR)/idle_la-idle.Tpo" -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c; \
+	then mv -f "$(DEPDIR)/idle_la-idle.Tpo" "$(DEPDIR)/idle_la-idle.Plo"; else rm -f "$(DEPDIR)/idle_la-idle.Tpo"; exit 1; fi
+#	source='idle.c' object='idle_la-idle.lo' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c
+
+.m.o:
+#	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=no \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+#	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=no \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+#	if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=yes \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+	clean-nsapplibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-idlelibLTLIBRARIES \
+	install-nsapplibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-idlelibLTLIBRARIES uninstall-info-am \
+	uninstall-nsapplibLTLIBRARIES
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+	clean-nsapplibLTLIBRARIES clean-recursive ctags \
+	ctags-recursive distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-exec install-exec-am \
+	install-idlelibLTLIBRARIES install-info install-info-am \
+	install-man install-nsapplibLTLIBRARIES install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-idlelibLTLIBRARIES uninstall-info-am \
+	uninstall-nsapplibLTLIBRARIES
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/Makefile.am b/src/osx/Makefile.am
new file mode 100644
index 000000000..1ccc8309a
--- /dev/null
+++ b/src/osx/Makefile.am
@@ -0,0 +1,45 @@
+SUBDIRS = growl syncmenu
+
+ACLOCAL_AMFLAGS = -I ../m4
+
+OBJC = gcc
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+if BUILD_IDLE_OSX
+idlelib_LTLIBRARIES = idle.la
+idlelibdir = $(libdir)/gajim
+
+idle_la_LIBADD = $(CARBON_LIBS) 
+
+idle_la_SOURCES = idle.c
+
+idle_la_LDFLAGS = \
+	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+endif
+
+if BUILD_COCOA
+nsapplib_LTLIBRARIES = nsapp.la
+nsapplibdir = $(libdir)/gajim
+
+nsapp_la_LIBADD = $(COCOA_LIBS) 
+
+nsapp_la_SOURCES = nsapp.m
+
+nsapp_la_LDFLAGS = \
+	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+
+AM_OBJCFLAGS = $(nsapp_la_CFLAGS)
+endif
+
+DISTCLEANFILES = 
+
+EXTRA_DIST = 
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/Makefile.in b/src/osx/Makefile.in
new file mode 100644
index 000000000..93d4919d6
--- /dev/null
+++ b/src/osx/Makefile.in
@@ -0,0 +1,761 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/osx
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"
+idlelibLTLIBRARIES_INSTALL = $(INSTALL)
+nsapplibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(idlelib_LTLIBRARIES) $(nsapplib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_IDLE_OSX_TRUE@idle_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__idle_la_SOURCES_DIST = idle.c
+@BUILD_IDLE_OSX_TRUE@am_idle_la_OBJECTS = idle_la-idle.lo
+idle_la_OBJECTS = $(am_idle_la_OBJECTS)
+@BUILD_IDLE_OSX_TRUE@am_idle_la_rpath = -rpath $(idlelibdir)
+@BUILD_COCOA_TRUE@nsapp_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__nsapp_la_SOURCES_DIST = nsapp.m
+@BUILD_COCOA_TRUE@am_nsapp_la_OBJECTS = nsapp.lo
+nsapp_la_OBJECTS = $(am_nsapp_la_OBJECTS)
+@BUILD_COCOA_TRUE@am_nsapp_la_rpath = -rpath $(nsapplibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+	$(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(idle_la_SOURCES) $(nsapp_la_SOURCES)
+DIST_SOURCES = $(am__idle_la_SOURCES_DIST) \
+	$(am__nsapp_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I ../m4
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CARBON_FALSE = @BUILD_CARBON_FALSE@
+BUILD_CARBON_TRUE = @BUILD_CARBON_TRUE@
+BUILD_COCOA_FALSE = @BUILD_COCOA_FALSE@
+BUILD_COCOA_TRUE = @BUILD_COCOA_TRUE@
+BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@
+BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@
+BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@
+BUILD_IDLE_OSX_FALSE = @BUILD_IDLE_OSX_FALSE@
+BUILD_IDLE_OSX_TRUE = @BUILD_IDLE_OSX_TRUE@
+BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@
+BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@
+BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@
+BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@
+BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@
+CARBON_LIBS = @CARBON_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COCOA_LIBS = @COCOA_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCDIR = @DOCDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
+GTKSPELL_LIBS = @GTKSPELL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBDIR = @LIBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_DEFS = @PYGTK_DEFS@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMKMF = @XMKMF@
+XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@
+XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__fastdepOBJC_FALSE = @am__fastdepOBJC_FALSE@
+am__fastdepOBJC_TRUE = @am__fastdepOBJC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = growl syncmenu
+OBJC = gcc
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+@BUILD_IDLE_OSX_TRUE@idlelib_LTLIBRARIES = idle.la
+@BUILD_IDLE_OSX_TRUE@idlelibdir = $(libdir)/gajim
+@BUILD_IDLE_OSX_TRUE@idle_la_LIBADD = $(CARBON_LIBS) 
+@BUILD_IDLE_OSX_TRUE@idle_la_SOURCES = idle.c
+@BUILD_IDLE_OSX_TRUE@idle_la_LDFLAGS = \
+@BUILD_IDLE_OSX_TRUE@	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_IDLE_OSX_TRUE@idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@nsapplib_LTLIBRARIES = nsapp.la
+@BUILD_COCOA_TRUE@nsapplibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@nsapp_la_LIBADD = $(COCOA_LIBS) 
+@BUILD_COCOA_TRUE@nsapp_la_SOURCES = nsapp.m
+@BUILD_COCOA_TRUE@nsapp_la_LDFLAGS = \
+@BUILD_COCOA_TRUE@	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_COCOA_TRUE@nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@AM_OBJCFLAGS = $(nsapp_la_CFLAGS)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-idlelibLTLIBRARIES: $(idlelib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(idlelibdir)" || $(mkdir_p) "$(DESTDIR)$(idlelibdir)"
+	@list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idlelibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idlelibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-idlelibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(idlelibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(idlelibdir)/$$p"; \
+	done
+
+clean-idlelibLTLIBRARIES:
+	-test -z "$(idlelib_LTLIBRARIES)" || rm -f $(idlelib_LTLIBRARIES)
+	@list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+install-nsapplibLTLIBRARIES: $(nsapplib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(nsapplibdir)" || $(mkdir_p) "$(DESTDIR)$(nsapplibdir)"
+	@list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(nsapplibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nsapplibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-nsapplibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nsapplibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nsapplibdir)/$$p"; \
+	done
+
+clean-nsapplibLTLIBRARIES:
+	-test -z "$(nsapplib_LTLIBRARIES)" || rm -f $(nsapplib_LTLIBRARIES)
+	@list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES) 
+	$(LINK) $(am_idle_la_rpath) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS)
+nsapp.la: $(nsapp_la_OBJECTS) $(nsapp_la_DEPENDENCIES) 
+	$(OBJCLINK) $(am_nsapp_la_rpath) $(nsapp_la_LDFLAGS) $(nsapp_la_OBJECTS) $(nsapp_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idle_la-idle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsapp.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+idle_la-idle.lo: idle.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -MT idle_la-idle.lo -MD -MP -MF "$(DEPDIR)/idle_la-idle.Tpo" -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/idle_la-idle.Tpo" "$(DEPDIR)/idle_la-idle.Plo"; else rm -f "$(DEPDIR)/idle_la-idle.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='idle.c' object='idle_la-idle.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c
+
+.m.o:
+@am__fastdepOBJC_TRUE@	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+@am__fastdepOBJC_TRUE@	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+@am__fastdepOBJC_TRUE@	if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+	clean-nsapplibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-idlelibLTLIBRARIES \
+	install-nsapplibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-idlelibLTLIBRARIES uninstall-info-am \
+	uninstall-nsapplibLTLIBRARIES
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+	clean-nsapplibLTLIBRARIES clean-recursive ctags \
+	ctags-recursive distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-exec install-exec-am \
+	install-idlelibLTLIBRARIES install-info install-info-am \
+	install-man install-nsapplibLTLIBRARIES install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-idlelibLTLIBRARIES uninstall-info-am \
+	uninstall-nsapplibLTLIBRARIES
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/__init__.py b/src/osx/__init__.py
new file mode 100644
index 000000000..ee21386cb
--- /dev/null
+++ b/src/osx/__init__.py
@@ -0,0 +1,45 @@
+import sys, commands
+from network_manager_listener import device_now_active, device_no_longer_active
+import nsapp
+
+
+if sys.platform != "darwin":
+	raise ImportError("System platform is not OS/X")
+
+
+net_device_active = True
+
+
+###
+### Utility functions
+###
+
+def checkPID(pid, procname):
+	out = commands.getstatusoutput("ps -wwp %d" % pid)
+	arr = out[1].split("\n")
+	if ((len(arr) == 2) and (arr[1].find(procname) >= 0)):
+		return True
+	return False
+
+
+def init():
+	nsapp.init()
+	nsapp.setNetworkCB(netDeviceChanged)
+	return
+
+
+def shutdown():
+	import dbus
+	dbus.shutdown()
+	return
+
+
+def netDeviceChanged():
+	global net_device_active
+	if net_device_active:
+		net_device_active = False
+		device_no_longer_active(None)
+	else:
+		net_device_active = True
+		device_now_active(None)
+	return
diff --git a/src/osx/__init__.pyo b/src/osx/__init__.pyo
new file mode 100644
index 0000000000000000000000000000000000000000..af16f9e9ac981327f99fc035ac2bb3416b31fa57
GIT binary patch
literal 1367
zcmaJ=OK;Oa5T1=4Cr+D^K6q3dh>#Gz6#oDYAX-2@5Rk(G<zg9o+iYTcE$^mjrSwAi
z#ay{CGfqh)Bpl6TclI&g_swkatKa+m>Gj7H)?W+%-=dinx(r|rFlhz?CIT`6^A_X|
zOdQBvn7ANlQyV62kO0bqtOYX%^Z<nHK<2=mfFA-%f%7gTK4dQZ#5;SCwRx}una6`&
z$T~deQ{HjVMF69K@R)tVBCk{`<5Dl<B(>^Fn#bGGIM?N+tk-MSqqU@7s?t2g;rPZ_
zSq!T@u@|~7hRO^}ZHJ%7;kT4BxM&XADVmAVS>(cOQHDoI;nsnbL)?y)yJmIU0!*`N
z5yQ-dSqt=Y5IE;u9asroX~V1yx(mYkFeVvn56Ka}k?EnY%<yEntcEW#Oo-XZ^%Q|p
zXb|k6v!q3;iy|pAV;|t;Qd(mZyD)lTtA(`$zET<gW5~8~ZmL{0D@k4RN-j%FR4-JS
z@tswz(=sU}N59q!$p=3qxsd^FjOgCTCr5}QiUnwmvoCQJPIV!}1of@eb$FS~R1umw
z4Yj!r<5-o-#__A_rlByE>HN$28P$`?gE++BiRg-yZl#Zya~Y^^O&RV0RYN^caPB8+
zxp6>3jTj|^E=^KZ%!6{;U0gNNj-*}cdVc!O4lqzkd&X^aI!&-!vJDj;MRX`4d5`Hd
zF$U2S{RSN6BV%yfd;B_X0kB7~c7$>Z81Y~@+4qHE_GY@UnO>HRJUYPjP5vhJA;zAe
ztyBA$JjE%0e{~6QifZU16h%OS6Kpx4UK8a$#$1lI?_*n#h>#`iQHOZ_o|?B5ahLt?
zLAiKrq)Qo5&+;YzJje~3Ej20K3pBHb4)qfq;fcMLhtvWJabKDn6Opv`2|5HvC5y4y
z6ME6P!rm%n9TB|fAvr$S#nJtPwuJw@sB~@L*R`%0WpqS)`{bym5vdyyo`4&gr<AqX
pLaCd5w57?z87bL@8W#$62Y5ryP#F)fhka)t29DS9yT0dpe*oQ|>%IU0

literal 0
HcmV?d00001

diff --git a/src/osx/dbus.py b/src/osx/dbus.py
new file mode 100644
index 000000000..41f1e83c5
--- /dev/null
+++ b/src/osx/dbus.py
@@ -0,0 +1,131 @@
+###
+### Internal dbus management. This can go away once native gtk+ is in fink or
+### macports and we can require their dbus.
+###
+
+
+
+import os, sys, commands, signal
+
+if sys.platform != "darwin":
+	raise ImportError("System platform is not OS/X")
+
+import osx, osx.nsapp
+from common.configpaths import gajimpaths
+
+
+_GTK_BASE = "/Library/Frameworks/GTK+.framework/Versions/Current"
+
+
+def readEnv():
+	gajimpaths.add_from_root(u'dbus.env', u'dbus.env')
+	try:
+		dbus_env = file(gajimpaths[u'dbus.env'], "r")
+	except:
+		return False
+	try:
+		line1 = dbus_env.readline()
+		line2 = dbus_env.readline()
+		dbus_env.close()
+	except:
+		print "Invalid dbus.env file"
+		return False
+	return parseEnv(line1, line2)
+
+
+def parseEnv(line1, line2):
+	try:
+		if not line1 or not line2:
+			return False
+		if (not line1.startswith("DBUS_SESSION_BUS_ADDRESS=") or
+		not line2.startswith("DBUS_SESSION_BUS_PID=")):
+			return False
+		arr = line2.split("=")
+		pid = arr[1].strip().strip('"')
+		if not osx.checkPID(int(pid), "dbus-daemon"):
+			return False
+		line1 = line1.strip()
+		loc = line1.find("=")
+		address = line1[loc + 1:]
+		address = address.strip().strip('"')
+		return [address, pid]
+	except Exception, e:
+		print "Invalid dbus.env file", e
+		return False
+	return None
+
+
+def setEnv(env):
+	os.environ['DBUS_SESSION_BUS_ADDRESS'] = env[0]
+	os.environ['DBUS_SESSION_BUS_PID'] = env[1]
+	return
+
+
+def writeEnv(env):
+	gajimpaths.add_from_root(u'dbus.env', u'dbus.env')
+	try:
+		dbus_env = file(gajimpaths[u'dbus.env'], "w+")
+		dbus_env.write("DBUS_SESSION_BUS_ADDRESS=\"" + env[0] + "\"\n")
+		dbus_env.write("DBUS_SESSION_BUS_PID=\"" + env[1] + "\"\n")
+		dbus_env.close()
+	except Exception, e:
+		print "Failed to write file: %s" % gajimpaths[u'dbus.env']
+		print str(e)
+	return
+
+
+def checkUUID():
+	if os.path.exists(_GTK_BASE + "/var/lib/dbus/machine-id"):
+		return
+	ret = commands.getstatusoutput(_GTK_BASE + "/bin/dbus-uuidgen --ensure")
+	if ret[0] != 0:
+		print "Failed to initialize dbus machine UUID:", ret[1]
+	return
+
+
+def load(start):
+	# Look for existing external session and just use it if it exists
+	if (('DBUS_SESSION_BUS_ADDRESS' in os.environ) and
+		('DBUS_SESSION_BUS_PID' in os.environ) and
+		osx.checkPID(int(os.environ['DBUS_SESSION_BUS_PID']), 'dbus-daemon')):
+		return True
+
+	# Look for our own internal session
+	env = readEnv()
+	if env:
+		# We have a valid existing dbus session, yay
+		setEnv(env)
+		return True
+
+	# Initialize the machine's UUID if not done yet
+	checkUUID()
+
+	if start:
+		# None found, start a new session
+		print "Starting new dbus session"
+		#cmd = os.path.join(osx.nsapp.getBundlePath(),
+		#		  "Contents/Resources/bin/dbus-launch --exit-with-session")
+		cmd = _GTK_BASE + "/bin/dbus-launch --exit-with-session"
+		ret = commands.getstatusoutput(cmd)
+		arr = ret[1].split("\n")
+		if len(arr) != 2:
+			print "Failed to start internal dbus session:"
+			print ret[1]
+			return
+		env = parseEnv(arr[0].strip(), arr[1].strip())
+		if not env:
+			print "Failed to start internal dbus session:"
+			print ret[1]
+			return
+		setEnv(env)
+		writeEnv(env)
+		return True
+	return False
+
+
+def shutdown():
+	env = readEnv()
+	if not env:
+		return
+	os.kill(int(env[1]), signal.SIGINT)
+	return
diff --git a/src/osx/growl/.deps/_growlImage.Plo b/src/osx/growl/.deps/_growlImage.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/growl/.deps/_growlImage.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/growl/.deps/_growl_la-_growl.Plo b/src/osx/growl/.deps/_growl_la-_growl.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/growl/.deps/_growl_la-_growl.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/growl/Growl.py b/src/osx/growl/Growl.py
new file mode 100644
index 000000000..15e037673
--- /dev/null
+++ b/src/osx/growl/Growl.py
@@ -0,0 +1,247 @@
+"""
+A Python module that enables posting notifications to the Growl daemon.
+See <http://growl.info/> for more information.
+"""
+__version__ = "0.7" 
+__author__ = "Mark Rowe <bdash@users.sourceforge.net>"
+__copyright__ = "(C) 2003 Mark Rowe <bdash@users.sourceforge.net>. Released under the BSD license."
+__contributors__ = ["Ingmar J Stein (Growl Team)", 
+                    "Rui Carmo (http://the.taoofmac.com)",
+                    "Jeremy Rossi <jeremy@jeremyrossi.com>"
+                   ]
+
+try:
+    import _growl
+except:
+    _growl = False
+import types
+import struct
+import md5
+import socket
+
+GROWL_UDP_PORT=9887
+GROWL_PROTOCOL_VERSION=1
+GROWL_TYPE_REGISTRATION=0
+GROWL_TYPE_NOTIFICATION=1
+
+GROWL_APP_NAME="ApplicationName"
+GROWL_APP_ICON="ApplicationIcon"
+GROWL_NOTIFICATIONS_DEFAULT="DefaultNotifications"
+GROWL_NOTIFICATIONS_ALL="AllNotifications"
+GROWL_NOTIFICATIONS_USER_SET="AllowedUserNotifications"
+
+GROWL_NOTIFICATION_NAME="NotificationName"
+GROWL_NOTIFICATION_TITLE="NotificationTitle"
+GROWL_NOTIFICATION_DESCRIPTION="NotificationDescription"
+GROWL_NOTIFICATION_ICON="NotificationIcon"
+GROWL_NOTIFICATION_APP_ICON="NotificationAppIcon"
+GROWL_NOTIFICATION_PRIORITY="NotificationPriority"
+        
+GROWL_NOTIFICATION_STICKY="NotificationSticky"
+GROWL_NOTIFICATION_CLICK_CONTEXT="NotificationClickContext"
+
+GROWL_APP_REGISTRATION="GrowlApplicationRegistrationNotification"
+GROWL_APP_REGISTRATION_CONF="GrowlApplicationRegistrationConfirmationNotification"
+GROWL_NOTIFICATION="GrowlNotification"
+GROWL_SHUTDOWN="GrowlShutdown"
+GROWL_PING="Honey, Mind Taking Out The Trash"
+GROWL_PONG="What Do You Want From Me, Woman"
+GROWL_IS_READY="Lend Me Some Sugar; I Am Your Neighbor!"
+
+GROWL_NOTIFICATION_CLICKED="GrowlClicked!"
+GROWL_NOTIFICATION_TIMED_OUT="GrowlTimedOut!"
+GROWL_KEY_CLICKED_CONTEXT="ClickedContext"
+
+    
+growlPriority = {"Very Low":-2,"Moderate":-1,"Normal":0,"High":1,"Emergency":2}
+
+class netgrowl:
+    """Builds a Growl Network Registration packet.
+       Defaults to emulating the command-line growlnotify utility."""
+
+    __notAllowed__ = [GROWL_APP_ICON, GROWL_NOTIFICATION_ICON, GROWL_NOTIFICATION_APP_ICON]
+
+    def __init__(self, hostname, password ):
+        self.hostname = hostname
+        self.password = password
+        self.socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
+
+    def send(self, data):
+        self.socket.sendto(data, (self.hostname, GROWL_UDP_PORT))
+        
+    def PostNotification(self, userInfo):
+        if userInfo.has_key(GROWL_NOTIFICATION_PRIORITY):
+            priority = userInfo[GROWL_NOTIFICATION_PRIORITY]
+        else:
+            priority = 0
+        if userInfo.has_key(GROWL_NOTIFICATION_STICKY):
+            sticky = userInfo[GROWL_NOTIFICATION_STICKY]
+        else:
+            priority = False
+        data = self.encodeNotify(userInfo[GROWL_APP_NAME],
+                                 userInfo[GROWL_NOTIFICATION_NAME],
+                                 userInfo[GROWL_NOTIFICATION_TITLE],
+                                 userInfo[GROWL_NOTIFICATION_DESCRIPTION],
+                                 priority,
+                                 sticky)
+        return self.send(data)
+
+    def PostRegistration(self, userInfo):
+        data = self.encodeRegistration(userInfo[GROWL_APP_NAME],
+                                       userInfo[GROWL_NOTIFICATIONS_ALL],
+                                       userInfo[GROWL_NOTIFICATIONS_DEFAULT])
+        return self.send(data)
+
+    def encodeRegistration(self, application, notifications, defaultNotifications):
+        data = struct.pack("!BBH",
+                           GROWL_PROTOCOL_VERSION,
+                           GROWL_TYPE_REGISTRATION,
+                           len(application) )
+        data += struct.pack("BB",
+                            len(notifications),
+                            len(defaultNotifications) )
+        data += application
+        for i in notifications:
+            encoded = i.encode("utf-8")
+            data += struct.pack("!H", len(encoded))
+            data += encoded
+        for i in defaultNotifications:
+            data += struct.pack("B", i)
+        return self.encodePassword(data)
+
+    def encodeNotify(self, application, notification, title, description,
+                     priority = 0, sticky = False):
+
+        application  = application.encode("utf-8")
+        notification = notification.encode("utf-8")
+        title        = title.encode("utf-8")
+        description  = description.encode("utf-8")
+        flags = (priority & 0x07) * 2
+        if priority < 0: 
+            flags |= 0x08
+        if sticky: 
+            flags = flags | 0x0001
+        data = struct.pack("!BBHHHHH",
+                           GROWL_PROTOCOL_VERSION,
+                           GROWL_TYPE_NOTIFICATION,
+                           flags,
+                           len(notification),
+                           len(title),
+                           len(description),
+                           len(application) )
+        data += notification
+        data += title
+        data += description
+        data += application
+        return self.encodePassword(data)
+
+    def encodePassword(self, data):
+        checksum = md5.new()
+        checksum.update(data)
+        if self.password:
+           checksum.update(self.password)
+        data += checksum.digest()
+        return data
+
+class _ImageHook(type):
+    def __getattribute__(self, attr):
+        global Image
+        if Image is self:
+            from _growlImage import Image
+
+        return getattr(Image, attr)
+
+class Image(object):
+    __metaclass__ = _ImageHook
+
+class _RawImage(object):
+    def __init__(self, data):  self.rawImageData = data
+
+class GrowlNotifier(object):
+    """
+    A class that abstracts the process of registering and posting
+    notifications to the Growl daemon.
+
+    You can either pass `applicationName', `notifications',
+    `defaultNotifications' and `applicationIcon' to the constructor
+    or you may define them as class-level variables in a sub-class.
+
+    `defaultNotifications' is optional, and defaults to the value of
+    `notifications'.  `applicationIcon' is also optional but defaults
+    to a pointless icon so is better to be specified.
+    """
+
+    applicationName = 'GrowlNotifier'
+    notifications = []
+    defaultNotifications = []
+    applicationIcon = None
+    _notifyMethod = _growl
+    _notify_cb = None
+
+    def __init__(self, applicationName=None, notifications=None, defaultNotifications=None, applicationIcon=None, hostname=None, password=None, notify_cb=None):
+        assert(applicationName is not None, 'an application name is required')
+        self.applicationName = applicationName
+
+        assert(notifications, 'a sequence of one or more notification names is required')
+        self.notifications = list(notifications)
+        if defaultNotifications is not None:
+            self.defaultNotifications = list(defaultNotifications)
+        else:
+            self.defaultNotifications = list(self.notifications)
+
+        if applicationIcon is not None:
+            self.applicationIcon = self._checkIcon(applicationIcon)
+
+        if hostname is not None and password is not None:
+            self._notifyMethod = netgrowl(hostname, password)
+        elif hostname is not None or password is not None:
+            raise KeyError, "Hostname and Password are both required for a network notification"
+
+        if notify_cb is not None:
+            self._notify_cb = notify_cb
+        else:
+            self._notify_cb = self.notifyCB
+
+        if hostname is None and password is None:
+            self._notifyMethod.Init(applicationName, self._notify_cb)
+
+    def _checkIcon(self, data):
+        if isinstance(data, str):
+            return _RawImage(data)
+        else:
+            return data
+
+    def register(self):
+        if self.applicationIcon is not None:
+            self.applicationIcon = self._checkIcon(self.applicationIcon)
+
+        regInfo = {GROWL_APP_NAME: self.applicationName,
+                   GROWL_NOTIFICATIONS_ALL: self.notifications,
+                   GROWL_NOTIFICATIONS_DEFAULT: self.defaultNotifications,
+                   GROWL_APP_ICON:self.applicationIcon,
+                  }
+        self._notifyMethod.PostRegistration(regInfo)
+
+    def notify(self, noteType, title, description, icon=None, sticky=False, priority=None, context=None):
+        assert noteType in self.notifications
+        notifyInfo = {GROWL_NOTIFICATION_NAME: noteType,
+                      GROWL_APP_NAME: self.applicationName,
+                      GROWL_NOTIFICATION_TITLE: title,
+                      GROWL_NOTIFICATION_DESCRIPTION: description,
+                     }
+        if sticky:
+            notifyInfo[GROWL_NOTIFICATION_STICKY] = 1
+
+        if priority is not None:
+            notifyInfo[GROWL_NOTIFICATION_PRIORITY] = priority
+
+        if icon:
+            notifyInfo[GROWL_NOTIFICATION_ICON] = self._checkIcon(icon)
+
+        if context:
+            notifyInfo[GROWL_NOTIFICATION_CLICK_CONTEXT] = context
+
+        self._notifyMethod.PostNotification(notifyInfo)
+
+    def notifyCB(self, userdata):
+        print "Got notify in pyland", userdata
diff --git a/src/osx/growl/Makefile b/src/osx/growl/Makefile
new file mode 100644
index 000000000..66866c8b4
--- /dev/null
+++ b/src/osx/growl/Makefile
@@ -0,0 +1,651 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/growl/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../../..
+
+pkgdatadir = $(datadir)/gajim
+pkglibdir = $(libdir)/gajim
+pkgincludedir = $(includedir)/gajim
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = src/osx/growl
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(_growlImagelibdir)" \
+	"$(DESTDIR)$(_growllibdir)"
+_growlImagelibLTLIBRARIES_INSTALL = $(INSTALL)
+_growllibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(_growlImagelib_LTLIBRARIES) $(_growllib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+#_growl_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growl_la_SOURCES_DIST = _growl.c
+#am__growl_la_OBJECTS = _growl_la-_growl.lo
+_growl_la_OBJECTS = $(am__growl_la_OBJECTS)
+#am__growl_la_rpath = -rpath $(_growllibdir)
+#_growlImage_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growlImage_la_SOURCES_DIST = _growlImage.m
+#am__growlImage_la_OBJECTS = _growlImage.lo
+_growlImage_la_OBJECTS = $(am__growlImage_la_OBJECTS)
+#am__growlImage_la_rpath = -rpath \
+#	$(_growlImagelibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+	$(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(_growl_la_SOURCES) $(_growlImage_la_SOURCES)
+DIST_SOURCES = $(am___growl_la_SOURCES_DIST) \
+	$(am___growlImage_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/asterix/gajim/missing --run aclocal-1.9
+ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
+ALL_LINGUAS = 
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/asterix/gajim/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/asterix/gajim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/asterix/gajim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/asterix/gajim/missing --run automake-1.9
+AWK = gawk
+BUILD_CARBON_FALSE = 
+BUILD_CARBON_TRUE = #
+BUILD_COCOA_FALSE = 
+BUILD_COCOA_TRUE = #
+BUILD_GTKSPELL_FALSE = #
+BUILD_GTKSPELL_TRUE = 
+BUILD_IDLE_FALSE = #
+BUILD_IDLE_OSX_FALSE = 
+BUILD_IDLE_OSX_TRUE = #
+BUILD_IDLE_TRUE = 
+BUILD_REMOTE_CONTROL_FALSE = #
+BUILD_REMOTE_CONTROL_TRUE = 
+BUILD_TRAYICON_FALSE = #
+BUILD_TRAYICON_TRUE = 
+CARBON_LIBS = 
+CATALOGS = 
+CATOBJEXT = .gmo
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+COCOA_LIBS = 
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DATADIR = /usr/local/share
+DATADIRNAME = share
+DBUS_CFLAGS = -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include  
+DBUS_LIBS = -ldbus-1  
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DOCDIR = /usr/local/share/doc/gajim
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GETTEXT_PACKAGE = gajim
+GMOFILES = 
+GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+GTKSPELL_CFLAGS = -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  
+GTKSPELL_LIBS = -lgtkspell -laspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0  
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INSTOBJEXT = .mo
+INTLLIBS = 
+INTLTOOL_CAVES_RULE = %.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DESKTOP_RULE = %.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract
+INTLTOOL_KBD_RULE = %.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_KEYS_RULE = %.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_MERGE = $(top_builddir)/intltool-merge
+INTLTOOL_OAF_RULE = %.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
+INTLTOOL_PERL = /usr/bin/perl
+INTLTOOL_POLICY_RULE = %.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PONG_RULE = %.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PROP_RULE = %.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SCHEMAS_RULE = %.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVER_RULE = %.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVICE_RULE = %.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SHEET_RULE = %.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_THEME_RULE = %.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UI_RULE = %.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UPDATE = $(top_builddir)/intltool-update
+INTLTOOL_XAM_RULE = %.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_XML_NOMERGE_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
+INTLTOOL_XML_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+LDFLAGS = 
+LIBDIR = /usr/local/lib
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/asterix/gajim/missing --run makeinfo
+MKINSTALLDIRS = ./mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_OPTS = -c
+OBJEXT = o
+PACKAGE = gajim
+PACKAGE_BUGREPORT = http://trac.gajim.org/
+PACKAGE_NAME = Gajim - A Jabber Instant Messager
+PACKAGE_STRING = Gajim - A Jabber Instant Messager 0.11.2.2-svn
+PACKAGE_TARNAME = gajim
+PACKAGE_VERSION = 0.11.2.2-svn
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+POFILES = 
+POSUB = po
+PO_IN_DATADIR_FALSE = 
+PO_IN_DATADIR_TRUE = 
+PYGTK_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pygtk-2.0  
+PYGTK_DEFS = /usr/share/pygtk/2.0/defs
+PYGTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgmodule-2.0 -ldl -lffi -lgobject-2.0 -lglib-2.0  
+PYTHON = /usr/bin/python
+PYTHON_EXEC_PREFIX = ${exec_prefix}
+PYTHON_INCLUDES = -I/usr/include/python2.4
+PYTHON_PLATFORM = linux2
+PYTHON_PREFIX = ${prefix}
+PYTHON_VERSION = 2.4
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = strip
+USE_NLS = yes
+VERSION = 0.11.2.2-svn
+XGETTEXT = /usr/bin/xgettext
+XMKMF = 
+XSCRNSAVER_CFLAGS =  
+XSCRNSAVER_LIBS = -lXss  
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__fastdepOBJC_FALSE = 
+am__fastdepOBJC_TRUE = #
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/asterix/gajim/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+pkgpyexecdir = ${pyexecdir}/gajim
+pkgpythondir = ${pythondir}/gajim
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = ${exec_prefix}/lib/python2.4/site-packages
+pythondir = ${prefix}/lib/python2.4/site-packages
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+OBJC = gcc
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+#_growllib_LTLIBRARIES = _growl.la
+#_growllibdir = $(libdir)/gajim
+#_growl_la_LIBADD = $(CARBON_LIBS) 
+#_growl_la_SOURCES = _growl.c
+#_growl_la_LDFLAGS = \
+#	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#_growlImagelib_LTLIBRARIES = _growlImage.la
+#_growlImagelibdir = $(libdir)/gajim
+#_growlImage_la_LIBADD = $(COCOA_LIBS) 
+#_growlImage_la_SOURCES = _growlImage.m
+#_growlImage_la_LDFLAGS = \
+#	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/growl/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/growl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-_growlImagelibLTLIBRARIES: $(_growlImagelib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(_growlImagelibdir)" || $(mkdir_p) "$(DESTDIR)$(_growlImagelibdir)"
+	@list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growlImagelibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growlImagelibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-_growlImagelibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growlImagelibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growlImagelibdir)/$$p"; \
+	done
+
+clean-_growlImagelibLTLIBRARIES:
+	-test -z "$(_growlImagelib_LTLIBRARIES)" || rm -f $(_growlImagelib_LTLIBRARIES)
+	@list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+install-_growllibLTLIBRARIES: $(_growllib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(_growllibdir)" || $(mkdir_p) "$(DESTDIR)$(_growllibdir)"
+	@list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growllibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growllibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-_growllibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growllibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growllibdir)/$$p"; \
+	done
+
+clean-_growllibLTLIBRARIES:
+	-test -z "$(_growllib_LTLIBRARIES)" || rm -f $(_growllib_LTLIBRARIES)
+	@list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+_growl.la: $(_growl_la_OBJECTS) $(_growl_la_DEPENDENCIES) 
+	$(LINK) $(am__growl_la_rpath) $(_growl_la_LDFLAGS) $(_growl_la_OBJECTS) $(_growl_la_LIBADD) $(LIBS)
+_growlImage.la: $(_growlImage_la_OBJECTS) $(_growlImage_la_DEPENDENCIES) 
+	$(OBJCLINK) $(am__growlImage_la_rpath) $(_growlImage_la_LDFLAGS) $(_growlImage_la_OBJECTS) $(_growlImage_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/_growlImage.Plo
+include ./$(DEPDIR)/_growl_la-_growl.Plo
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LTCOMPILE) -c -o $@ $<
+
+_growl_la-_growl.lo: _growl.c
+	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -MT _growl_la-_growl.lo -MD -MP -MF "$(DEPDIR)/_growl_la-_growl.Tpo" -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c; \
+	then mv -f "$(DEPDIR)/_growl_la-_growl.Tpo" "$(DEPDIR)/_growl_la-_growl.Plo"; else rm -f "$(DEPDIR)/_growl_la-_growl.Tpo"; exit 1; fi
+#	source='_growl.c' object='_growl_la-_growl.lo' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c
+
+.m.o:
+#	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=no \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+#	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=no \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+#	if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+#	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+	source='$<' object='$@' libtool=yes \
+	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+	$(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(_growlImagelibdir)" "$(DESTDIR)$(_growllibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+	clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-_growlImagelibLTLIBRARIES \
+	install-_growllibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-_growlImagelibLTLIBRARIES \
+	uninstall-_growllibLTLIBRARIES uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+	clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install \
+	install-_growlImagelibLTLIBRARIES install-_growllibLTLIBRARIES \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall \
+	uninstall-_growlImagelibLTLIBRARIES \
+	uninstall-_growllibLTLIBRARIES uninstall-am uninstall-info-am
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/growl/Makefile.am b/src/osx/growl/Makefile.am
new file mode 100644
index 000000000..df48b58d8
--- /dev/null
+++ b/src/osx/growl/Makefile.am
@@ -0,0 +1,41 @@
+OBJC = gcc
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+if BUILD_CARBON
+_growllib_LTLIBRARIES = _growl.la
+_growllibdir = $(libdir)/gajim
+
+_growl_la_LIBADD = $(CARBON_LIBS) 
+
+_growl_la_SOURCES = _growl.c
+
+_growl_la_LDFLAGS = \
+	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+endif
+
+if BUILD_COCOA
+_growlImagelib_LTLIBRARIES = _growlImage.la
+_growlImagelibdir = $(libdir)/gajim
+
+_growlImage_la_LIBADD = $(COCOA_LIBS) 
+
+_growlImage_la_SOURCES = _growlImage.m
+
+_growlImage_la_LDFLAGS = \
+	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+
+AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+endif
+
+DISTCLEANFILES = 
+
+EXTRA_DIST = 
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/growl/Makefile.in b/src/osx/growl/Makefile.in
new file mode 100644
index 000000000..44222f33e
--- /dev/null
+++ b/src/osx/growl/Makefile.in
@@ -0,0 +1,651 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/osx/growl
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(_growlImagelibdir)" \
+	"$(DESTDIR)$(_growllibdir)"
+_growlImagelibLTLIBRARIES_INSTALL = $(INSTALL)
+_growllibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(_growlImagelib_LTLIBRARIES) $(_growllib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_CARBON_TRUE@_growl_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growl_la_SOURCES_DIST = _growl.c
+@BUILD_CARBON_TRUE@am__growl_la_OBJECTS = _growl_la-_growl.lo
+_growl_la_OBJECTS = $(am__growl_la_OBJECTS)
+@BUILD_CARBON_TRUE@am__growl_la_rpath = -rpath $(_growllibdir)
+@BUILD_COCOA_TRUE@_growlImage_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growlImage_la_SOURCES_DIST = _growlImage.m
+@BUILD_COCOA_TRUE@am__growlImage_la_OBJECTS = _growlImage.lo
+_growlImage_la_OBJECTS = $(am__growlImage_la_OBJECTS)
+@BUILD_COCOA_TRUE@am__growlImage_la_rpath = -rpath \
+@BUILD_COCOA_TRUE@	$(_growlImagelibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+	$(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(_growl_la_SOURCES) $(_growlImage_la_SOURCES)
+DIST_SOURCES = $(am___growl_la_SOURCES_DIST) \
+	$(am___growlImage_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CARBON_FALSE = @BUILD_CARBON_FALSE@
+BUILD_CARBON_TRUE = @BUILD_CARBON_TRUE@
+BUILD_COCOA_FALSE = @BUILD_COCOA_FALSE@
+BUILD_COCOA_TRUE = @BUILD_COCOA_TRUE@
+BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@
+BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@
+BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@
+BUILD_IDLE_OSX_FALSE = @BUILD_IDLE_OSX_FALSE@
+BUILD_IDLE_OSX_TRUE = @BUILD_IDLE_OSX_TRUE@
+BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@
+BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@
+BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@
+BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@
+BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@
+CARBON_LIBS = @CARBON_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COCOA_LIBS = @COCOA_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCDIR = @DOCDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
+GTKSPELL_LIBS = @GTKSPELL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBDIR = @LIBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_DEFS = @PYGTK_DEFS@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMKMF = @XMKMF@
+XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@
+XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__fastdepOBJC_FALSE = @am__fastdepOBJC_FALSE@
+am__fastdepOBJC_TRUE = @am__fastdepOBJC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+OBJC = gcc
+INCLUDES = \
+	$(PYTHON_INCLUDES) 
+
+@BUILD_CARBON_TRUE@_growllib_LTLIBRARIES = _growl.la
+@BUILD_CARBON_TRUE@_growllibdir = $(libdir)/gajim
+@BUILD_CARBON_TRUE@_growl_la_LIBADD = $(CARBON_LIBS) 
+@BUILD_CARBON_TRUE@_growl_la_SOURCES = _growl.c
+@BUILD_CARBON_TRUE@_growl_la_LDFLAGS = \
+@BUILD_CARBON_TRUE@	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_CARBON_TRUE@_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@_growlImagelib_LTLIBRARIES = _growlImage.la
+@BUILD_COCOA_TRUE@_growlImagelibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@_growlImage_la_LIBADD = $(COCOA_LIBS) 
+@BUILD_COCOA_TRUE@_growlImage_la_SOURCES = _growlImage.m
+@BUILD_COCOA_TRUE@_growlImage_la_LDFLAGS = \
+@BUILD_COCOA_TRUE@	-module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_COCOA_TRUE@_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/growl/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/growl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-_growlImagelibLTLIBRARIES: $(_growlImagelib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(_growlImagelibdir)" || $(mkdir_p) "$(DESTDIR)$(_growlImagelibdir)"
+	@list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growlImagelibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growlImagelibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-_growlImagelibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growlImagelibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growlImagelibdir)/$$p"; \
+	done
+
+clean-_growlImagelibLTLIBRARIES:
+	-test -z "$(_growlImagelib_LTLIBRARIES)" || rm -f $(_growlImagelib_LTLIBRARIES)
+	@list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+install-_growllibLTLIBRARIES: $(_growllib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(_growllibdir)" || $(mkdir_p) "$(DESTDIR)$(_growllibdir)"
+	@list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growllibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growllibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-_growllibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growllibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growllibdir)/$$p"; \
+	done
+
+clean-_growllibLTLIBRARIES:
+	-test -z "$(_growllib_LTLIBRARIES)" || rm -f $(_growllib_LTLIBRARIES)
+	@list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+_growl.la: $(_growl_la_OBJECTS) $(_growl_la_DEPENDENCIES) 
+	$(LINK) $(am__growl_la_rpath) $(_growl_la_LDFLAGS) $(_growl_la_OBJECTS) $(_growl_la_LIBADD) $(LIBS)
+_growlImage.la: $(_growlImage_la_OBJECTS) $(_growlImage_la_DEPENDENCIES) 
+	$(OBJCLINK) $(am__growlImage_la_rpath) $(_growlImage_la_LDFLAGS) $(_growlImage_la_OBJECTS) $(_growlImage_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_growlImage.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_growl_la-_growl.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+_growl_la-_growl.lo: _growl.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -MT _growl_la-_growl.lo -MD -MP -MF "$(DEPDIR)/_growl_la-_growl.Tpo" -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/_growl_la-_growl.Tpo" "$(DEPDIR)/_growl_la-_growl.Plo"; else rm -f "$(DEPDIR)/_growl_la-_growl.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='_growl.c' object='_growl_la-_growl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c
+
+.m.o:
+@am__fastdepOBJC_TRUE@	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+@am__fastdepOBJC_TRUE@	if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+@am__fastdepOBJC_TRUE@	if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@	$(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(_growlImagelibdir)" "$(DESTDIR)$(_growllibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+	clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-_growlImagelibLTLIBRARIES \
+	install-_growllibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-_growlImagelibLTLIBRARIES \
+	uninstall-_growllibLTLIBRARIES uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+	clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install \
+	install-_growlImagelibLTLIBRARIES install-_growllibLTLIBRARIES \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall \
+	uninstall-_growlImagelibLTLIBRARIES \
+	uninstall-_growllibLTLIBRARIES uninstall-am uninstall-info-am
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/growl/_growl.c b/src/osx/growl/_growl.c
new file mode 100644
index 000000000..11ac07e93
--- /dev/null
+++ b/src/osx/growl/_growl.c
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2004-2005 The Growl Project.
+ * Created by Jeremy Rossi <jeremy@jeremyrossi.com>
+ * Released under the BSD license.
+ */
+
+#include <Python.h>
+#include <CoreFoundation/CoreFoundation.h>
+
+#define str(cfstr) CFStringGetCStringPtr(cfstr, kCFStringEncodingMacRoman)
+#define cfstr(str) CFStringCreateWithCString(kCFAllocatorDefault, str, kCFStringEncodingMacRoman)
+
+static PyObject * _notify_cb = NULL;
+
+
+static PyObject * growl_PostDictionary(CFStringRef name, PyObject *self, PyObject *args) {
+	int i, j;
+
+	PyObject *inputDict;
+	PyObject *pKeys = NULL;
+	PyObject *pKey, *pValue;
+
+	CFMutableDictionaryRef note = CFDictionaryCreateMutable(kCFAllocatorDefault,
+															/*capacity*/ 0,
+															&kCFTypeDictionaryKeyCallBacks,
+															&kCFTypeDictionaryValueCallBacks);
+
+	if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &inputDict))
+		goto error;
+
+	pKeys = PyDict_Keys(inputDict);
+	for (i = 0; i < PyList_Size(pKeys); ++i) {
+		CFStringRef convertedKey;
+
+		/* Converting the PyDict key to NSString and used for key in note */
+		pKey = PyList_GetItem(pKeys, i);
+		if (!pKey)
+			// Exception already set
+			goto error;
+		pValue = PyDict_GetItem(inputDict, pKey);
+		if (!pValue) {
+			// XXX Neeed a real Error message here.
+			PyErr_SetString(PyExc_TypeError," ");
+			goto error;
+		}
+		if (PyUnicode_Check(pKey)) {
+			convertedKey = CFStringCreateWithBytes(kCFAllocatorDefault,
+												   (const UInt8 *)PyUnicode_AS_DATA(pKey),
+												   PyUnicode_GET_DATA_SIZE(pKey),
+												   kCFStringEncodingUnicode,
+												   false);
+		} else if (PyString_Check(pKey)) {
+			convertedKey = CFStringCreateWithCString(kCFAllocatorDefault,
+													 PyString_AsString(pKey),
+													 kCFStringEncodingUTF8);
+		} else {
+			PyErr_SetString(PyExc_TypeError,"The Dict keys must be strings/unicode");
+			goto error;
+		}
+
+		/* Converting the PyDict value to NSString or NSData based on class  */
+		if (PyString_Check(pValue)) {
+			CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault,
+																   PyString_AS_STRING(pValue),
+																   kCFStringEncodingUTF8);
+			CFDictionarySetValue(note, convertedKey, convertedValue);
+			CFRelease(convertedValue);
+		} else if (PyUnicode_Check(pValue)) {
+			CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault,
+																 (const UInt8 *)PyUnicode_AS_DATA(pValue),
+																 PyUnicode_GET_DATA_SIZE(pValue),
+																 kCFStringEncodingUnicode,
+																 false);
+			CFDictionarySetValue(note, convertedKey, convertedValue);
+			CFRelease(convertedValue);
+		} else if (PyInt_Check(pValue)) {
+			long v = PyInt_AS_LONG(pValue);
+			CFNumberRef convertedValue = CFNumberCreate(kCFAllocatorDefault,
+														kCFNumberLongType,
+														&v);
+			CFDictionarySetValue(note, convertedKey, convertedValue);
+			CFRelease(convertedValue);
+		} else if (pValue == Py_None) {
+			CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault, NULL, 0);
+			CFDictionarySetValue(note, convertedKey, convertedValue);
+			CFRelease(convertedValue);
+		} else if (PyList_Check(pValue)) {
+			int size = PyList_Size(pValue);
+			CFMutableArrayRef listHolder = CFArrayCreateMutable(kCFAllocatorDefault,
+																size,
+																&kCFTypeArrayCallBacks);
+			for (j = 0; j < size; ++j) {
+				PyObject *lValue = PyList_GetItem(pValue, j);
+				if (PyString_Check(lValue)) {
+					CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault,
+																		   PyString_AS_STRING(lValue),
+																		   kCFStringEncodingUTF8);
+					CFArrayAppendValue(listHolder, convertedValue);
+					CFRelease(convertedValue);
+				} else if (PyUnicode_Check(lValue)) {
+					CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault,
+																		 (const UInt8 *)PyUnicode_AS_DATA(lValue),
+																		 PyUnicode_GET_DATA_SIZE(lValue),
+																		 kCFStringEncodingUnicode,
+																		 false);
+					CFArrayAppendValue(listHolder, convertedValue);
+					CFRelease(convertedValue);
+				} else {
+					CFRelease(convertedKey);
+					PyErr_SetString(PyExc_TypeError,"The lists must only contain strings");
+					goto error;
+				}
+			}
+			CFDictionarySetValue(note, convertedKey, listHolder);
+			CFRelease(listHolder);
+		} else if (PyObject_HasAttrString(pValue, "rawImageData")) {
+			PyObject *lValue = PyObject_GetAttrString(pValue, "rawImageData");
+			if (!lValue) {
+				goto error;
+			} else if (PyString_Check(lValue)) {
+				CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault,
+														(const UInt8 *)PyString_AsString(lValue),
+														PyString_Size(lValue));
+				CFDictionarySetValue(note, convertedKey, convertedValue);
+				CFRelease(convertedValue);
+			} else {
+				CFRelease(convertedKey);
+				PyErr_SetString(PyExc_TypeError, "Icon with rawImageData attribute present must ensure it is a string.");
+				goto error;
+			}
+		} else {
+			CFRelease(convertedKey);
+			PyErr_SetString(PyExc_TypeError, "Value is not of Str/List");
+			goto error;
+		}
+		CFRelease(convertedKey);
+	}
+
+	Py_BEGIN_ALLOW_THREADS
+	CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(),
+										 /*name*/ name,
+										 /*object*/ NULL,
+										 /*userInfo*/ note,
+										 /*deliverImmediately*/ false);
+	CFRelease(note);
+	Py_END_ALLOW_THREADS
+
+	Py_DECREF(pKeys);
+
+	Py_INCREF(Py_None);
+	return Py_None;
+
+error:
+	CFRelease(note);
+
+	Py_XDECREF(pKeys);
+
+	return NULL;
+}
+
+static void growl_NotifyCB(CFNotificationCenterRef center, void *observer,
+                           CFStringRef name, const void *object,
+                           CFDictionaryRef userInfo)
+{
+    CFIndex size, len;
+    const void * keys[1];
+    const void * values[1];
+    CFArrayRef arr;
+    CFStringRef cfstr;
+    CFRange cfrange;
+    UInt8 *buff;
+    int i;
+    PyObject * pylist;
+
+    cfrange.location = 0;
+    CFDictionaryGetKeysAndValues(userInfo, keys, values);
+    arr = (CFArrayRef)values[0];
+    size = CFArrayGetCount(arr);
+    pylist = PyList_New(size);
+    for (i=0; i < size; ++i)
+    {
+        cfstr = (CFStringRef)CFArrayGetValueAtIndex(arr, i);
+        cfrange.length = CFStringGetLength(cfstr);
+        CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false,
+                         NULL, 0, &len);
+        buff = (UInt8*)malloc(len);
+        CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false,
+                         buff, len, &len);
+        PyList_SetItem(pylist, i,
+                       PyUnicode_DecodeUTF16((char*)buff, len, NULL, NULL));
+        free(buff);
+    }
+
+    PyObject_CallObject(_notify_cb, Py_BuildValue("(O)", pylist));
+    Py_DECREF(pylist);
+}
+
+static PyObject * growl_Init(PyObject *self, PyObject *args)
+{
+    char* name = NULL;
+
+	if (!PyArg_ParseTuple(args, "sO", &name, &_notify_cb))
+        return NULL;
+
+	Py_INCREF(_notify_cb);
+
+    char* buff = (char*)malloc(strlen(name) + 14);
+    strcpy(buff, name);
+    strcat(buff, "GrowlClicked!");
+    CFStringRef cfbuff = cfstr(buff);
+    CFNotificationCenterAddObserver(
+        CFNotificationCenterGetDistributedCenter(), NULL, &growl_NotifyCB,
+        cfbuff, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
+    free(buff);
+    CFRelease(cfbuff);
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+static PyObject * growl_PostRegistration(PyObject *self, PyObject *args) {
+	return growl_PostDictionary(CFSTR("GrowlApplicationRegistrationNotification"), self, args);
+}
+
+static PyObject * growl_PostNotification(PyObject *self, PyObject *args) {
+	return growl_PostDictionary(CFSTR("GrowlNotification"), self, args);
+}
+
+static PyMethodDef GrowlMethods[] = {
+	{"Init", growl_Init, METH_VARARGS, "Initialize notifications with GrowlHelperApp"},
+	{"PostNotification", growl_PostNotification, METH_VARARGS, "Send a notification to GrowlHelperApp"},
+	{"PostRegistration", growl_PostRegistration, METH_VARARGS, "Send a registration to GrowlHelperApp"},
+	{NULL, NULL, 0, NULL}		/* Sentinel */
+};
+
+
+PyMODINIT_FUNC init_growl(void) {
+	Py_InitModule("_growl", GrowlMethods);
+}
diff --git a/src/osx/growl/_growlImage.m b/src/osx/growl/_growlImage.m
new file mode 100644
index 000000000..d4b2b72f9
--- /dev/null
+++ b/src/osx/growl/_growlImage.m
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2004 Mark Rowe <bdash@users.sourceforge.net>
+ * Released under the BSD license.
+ */
+
+#include "Python.h"
+#import <Cocoa/Cocoa.h>
+
+typedef struct
+{
+  PyObject_HEAD
+  NSImage *theImage;
+} ImageObject;
+
+
+static PyTypeObject ImageObject_Type;
+
+#define ImageObject_Check(v)  ((v)->ob_type == &ImageObject_Type)
+
+static ImageObject *
+newImageObject(NSImage *img)
+{
+    ImageObject *self;
+    if (! img)
+    {
+        PyErr_SetString(PyExc_TypeError, "Invalid image.");
+        return NULL;
+    }
+        
+    self = PyObject_New(ImageObject, &ImageObject_Type);
+    if (! self)
+        return NULL;
+    
+    self->theImage = [img retain];
+    return self;
+}
+
+static void
+ImageObject_dealloc(ImageObject *self)
+{
+    PyObject_Del(self);
+}
+
+static PyObject *
+ImageObject_getAttr(PyObject *self, PyObject *attr)
+{
+    char *theAttr = PyString_AsString(attr);
+    NSAutoreleasePool *pool = nil;
+    
+    if (strcmp(theAttr, "rawImageData") == 0)
+    {
+        pool = [[NSAutoreleasePool alloc] init];
+        NSData *imageData = [((ImageObject *) self)->theImage TIFFRepresentation];
+        PyObject *pyImageData = PyString_FromStringAndSize([imageData bytes], [imageData length]);
+        [pool release];
+        return pyImageData;
+    }
+    else
+        return PyObject_GenericGetAttr(self, attr);
+}
+
+
+static PyObject *
+ImageObject_imageFromPath(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    char *fileName_ = NULL;
+    NSString *fileName = nil;
+    NSImage *theImage = nil;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, "et:imageFromPath",
+                           Py_FileSystemDefaultEncoding, &fileName_))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+    fileName = [NSString stringWithUTF8String:fileName_];
+    theImage = [[[NSImage alloc] initWithContentsOfFile:fileName] autorelease];
+    self = newImageObject(theImage);
+    
+    [pool release];
+    return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithData(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    char *imageData = NULL;
+    int imageDataSize = 0;
+    NSImage *theImage = nil;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, "s#:imageWithData",
+                           &imageData, &imageDataSize))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+
+    theImage = [[[NSImage alloc] initWithData:[NSData dataWithBytes:imageData
+                                                             length:imageDataSize]] autorelease];
+    self = newImageObject(theImage);
+    
+    [pool release];
+    return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForFile(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    char *fileName_ = NULL;
+    NSString *fileName = nil;
+    NSImage *theImage = nil;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, "et:imageWithIconForFile",
+                           Py_FileSystemDefaultEncoding, &fileName_))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+    fileName = [NSString stringWithUTF8String:fileName_];
+    theImage = [[NSWorkspace sharedWorkspace] iconForFile:fileName];
+    self = newImageObject(theImage);
+    
+    [pool release];
+    return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForFileType(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    char *fileType = NULL;
+    NSImage *theImage = nil;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, "s:imageWithIconForFileType",
+                           &fileType))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+    theImage = [[NSWorkspace sharedWorkspace] iconForFileType:[NSString stringWithUTF8String:fileType]];
+    self = newImageObject(theImage);
+    
+    [pool release];
+    return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForCurrentApplication(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, ":imageWithIconForCurrentApplication"))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+    self = newImageObject([NSApp applicationIconImage]);
+    
+    [pool release];
+    return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForApplication(PyTypeObject *cls, PyObject *args)
+{
+    ImageObject *self;
+    char *appName_ = NULL;
+    NSString *appName = nil;
+    NSString *appPath = nil;
+    NSImage *theImage = nil;
+    NSAutoreleasePool *pool = nil;
+    
+    if (! PyArg_ParseTuple(args, "et:imageWithIconForApplication",
+                           Py_FileSystemDefaultEncoding, &appName_))
+        return NULL;
+        
+    pool = [[NSAutoreleasePool alloc] init];
+    
+    appName = [NSString stringWithUTF8String:appName_];
+    appPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:appName];
+    if (! appPath)
+    {
+        PyErr_Format(PyExc_RuntimeError, "Application named '%s' not found", appName_);
+        self = NULL;
+        goto done;
+    }
+    theImage = [[NSWorkspace sharedWorkspace] iconForFile:appPath];
+    self = newImageObject(theImage);
+
+done:
+    [pool release];
+    return (PyObject *) self;
+}
+
+
+static PyMethodDef ImageObject_methods[] = {
+    {"imageFromPath", (PyCFunction)ImageObject_imageFromPath, METH_VARARGS | METH_CLASS},
+    {"imageWithData", (PyCFunction)ImageObject_imageWithData, METH_VARARGS | METH_CLASS},
+    {"imageWithIconForFile", (PyCFunction)ImageObject_imageWithIconForFile, METH_VARARGS | METH_CLASS},
+    {"imageWithIconForFileType", (PyCFunction)ImageObject_imageWithIconForFileType, METH_VARARGS | METH_CLASS},
+    {"imageWithIconForCurrentApplication", (PyCFunction)ImageObject_imageWithIconForCurrentApplication, METH_VARARGS | METH_CLASS},
+    {"imageWithIconForApplication", (PyCFunction)ImageObject_imageWithIconForApplication, METH_VARARGS | METH_CLASS},
+    {NULL, NULL} /* sentinel */
+};
+
+static PyTypeObject ImageObject_Type = {
+        PyObject_HEAD_INIT(NULL)
+        0,                      /*ob_size*/
+        "_growlImage.Image",    /*tp_name*/
+        sizeof(ImageObject),    /*tp_basicsize*/
+        0,                      /*tp_itemsize*/
+        /* methods */
+        (destructor)ImageObject_dealloc, /*tp_dealloc*/
+        0,                      /*tp_print*/
+        0,                      /*tp_getattr*/
+        0,                      /*tp_setattr*/
+        0,                      /*tp_compare*/
+        0,                      /*tp_repr*/
+        0,                      /*tp_as_number*/
+        0,                      /*tp_as_sequence*/
+        0,                      /*tp_as_mapping*/
+        0,                      /*tp_hash*/
+        0,                      /*tp_call*/
+        0,                      /*tp_str*/
+        ImageObject_getAttr,    /*tp_getattro*/
+        0,                      /*tp_setattro*/
+        0,                      /*tp_as_buffer*/
+        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_CLASS,     /*tp_flags*/
+        0,                      /*tp_doc*/
+        0,                      /*tp_traverse*/
+        0,                      /*tp_clear*/
+        0,                      /*tp_richcompare*/
+        0,                      /*tp_weaklistoffset*/
+        0,                      /*tp_iter*/
+        0,                      /*tp_iternext*/
+        ImageObject_methods,    /*tp_methods*/
+        0,                      /*tp_members*/
+        0,                      /*tp_getset*/
+        0,                      /*tp_base*/
+        0,                      /*tp_dict*/
+        0,                      /*tp_descr_get*/
+        0,                      /*tp_descr_set*/
+        0,                      /*tp_dictoffset*/
+        0,                      /*tp_init*/
+        PyType_GenericAlloc,    /*tp_alloc*/
+        0,                      /*tp_new*/
+        0,                      /*tp_free*/
+        0,                      /*tp_is_gc*/
+};
+
+static PyMethodDef _growlImage_methods[] = {
+    {NULL, NULL}
+};
+
+PyMODINIT_FUNC
+init_growlImage(void)
+{
+    PyObject *m;
+    
+    if (PyType_Ready(&ImageObject_Type) < 0)
+        return;
+    
+    m = Py_InitModule("_growlImage", _growlImage_methods);
+    
+    PyModule_AddObject(m, "Image", (PyObject *)&ImageObject_Type);
+}
diff --git a/src/osx/growl/setup.py b/src/osx/growl/setup.py
new file mode 100644
index 000000000..5a7235dee
--- /dev/null
+++ b/src/osx/growl/setup.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+from distutils.core import setup, Extension
+import sys
+
+_growl = Extension('_growl',
+                    extra_link_args = ["-framework","CoreFoundation"],
+                    sources = ['libgrowl.c'])
+_growlImage = Extension('_growlImage',
+                        extra_link_args = ["-framework","Cocoa"],
+                        sources = ['growlImage.m'])
+
+if sys.platform.startswith("darwin"):
+    modules = [_growl, _growlImage]
+else:
+    modules = []
+
+setup(name="py-Growl",
+      version="0.0.7",
+      description="Python bindings for posting notifications to the Growl daemon",
+      author="Mark Rowe",
+      author_email="bdash@users.sourceforge.net",
+      url="http://growl.info",
+      py_modules=["Growl"],
+      ext_modules = modules )
+
diff --git a/src/osx/growler.py b/src/osx/growler.py
new file mode 100644
index 000000000..c3ea320cf
--- /dev/null
+++ b/src/osx/growler.py
@@ -0,0 +1,63 @@
+import sys, os
+from growl.Growl import GrowlNotifier
+from common import gajim, helpers
+
+
+if sys.platform != "darwin":
+	raise ImportError("System platform is not OS/X")
+
+
+GENERIC_NOTIF = _('Generic')
+notifications = [
+	_('Contact Signed In'), _('Contact Signed Out'), _('New Message'),
+	_('New Single Message'), _('New Private Message'), _('New E-mail'),
+	_('File Transfer Request'), _('File Transfer Error'),
+	_('File Transfer Completed'), _('File Transfer Stopped'),
+	_('Groupchat Invitation'), _('Contact Changed Status'),
+	_('Connection Failed'), GENERIC_NOTIF
+	]
+
+growler = None
+
+
+
+def init():
+	global growler, notifications
+	icon = file(os.path.join(gajim.DATA_DIR, "pixmaps", "gajim.icns"), "r")
+	growler = GrowlNotifier(applicationName = "Gajim",
+							notifications = notifications,
+							applicationIcon = icon.read(),
+							notify_cb = notifyCB)
+	growler.register()
+	return
+
+
+def notify(event_type, jid, account, msg_type, path_to_image, title, text):
+	global notifications
+	if not event_type in notifications:
+		event_type = GENERIC_NOTIF
+	if not text:
+		text = gajim.get_name_from_jid(account, jid) # default value of text
+	text = filterString(text)
+	if not title:
+		title = event_type
+	title = filterString(title)
+	if not path_to_image:
+		path_to_image = os.path.abspath(
+			os.path.join(gajim.DATA_DIR, 'pixmaps', 'events',
+						 'chat_msg_recv.png')) # img to display
+	icon = file(path_to_image, "r")
+	context = [account, jid, msg_type]
+	growler.notify(event_type, title, text, icon.read(), False, None,
+				   context)
+	return
+
+
+def notifyCB(data):
+	gajim.interface.handle_event(data[0], data[1], data[2])
+
+
+def filterString(string):
+	string = string.replace("&quot;", "'")
+	return string
+
diff --git a/src/osx/idle.c b/src/osx/idle.c
new file mode 100644
index 000000000..c24c30438
--- /dev/null
+++ b/src/osx/idle.c
@@ -0,0 +1,174 @@
+/*****
+    This is a modified form of idler.c. The original copyright notice follows.
+ **/
+
+/*****************************************
+  * idler.c
+  *
+  * Uses IOKit to figure out the idle time of the system. The idle time
+  * is stored as a property of the IOHIDSystem class; the name is
+  * HIDIdleTime. Stored as a 64-bit int, measured in ns.
+  *
+  * The program itself just prints to stdout the time that the computer
+has
+  * been idle in seconds.
+  *
+  * Compile with gcc -Wall -framework IOKit -framework Carbon idler.c -o
+  * idler
+  *
+  * Copyright (c) 2003, Stanford University
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+are
+  * met:
+  * Redistributions of source code must retain the above copyright
+notice,
+  * this list of conditions and the following disclaimer.
+  *
+  * Redistributions in binary form must reproduce the above copyright
+notice,
+  * this list of conditions and the following disclaimer in the
+documentation
+  * and/or other materials provided with the distribution.
+  *
+  * Neither the name of Stanford University nor the names of its
+contributors
+  * may be used to endorse or promote products derived from this software
+  * without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS
+  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO,
+  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR
+  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <IOKit/IOKitLib.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <Python.h>
+
+/* 10^9 --  number of ns in a second */
+#define NS_SECONDS 1000000000
+
+
+static mach_port_t __idle_osx_master_port;
+io_registry_entry_t __idle_osx_service;
+
+
+static PyObject * idle_init(PyObject *self, PyObject *args)
+{
+    io_iterator_t iter;
+    CFMutableDictionaryRef hid_match;
+
+    IOMasterPort(MACH_PORT_NULL, &__idle_osx_master_port);
+
+    /* Get IOHIDSystem */
+    hid_match = IOServiceMatching("IOHIDSystem");
+    IOServiceGetMatchingServices(__idle_osx_master_port, hid_match, &iter);
+    if (iter == 0) {
+        printf("Error accessing IOHIDSystem\n");
+    }
+
+    __idle_osx_service = IOIteratorNext(iter);
+    if (__idle_osx_service == 0) {
+        printf("Iterator's empty!\n");
+    }
+
+    IOObjectRelease(iter);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject * idle_getIdleSec(PyObject *self, PyObject *args)
+{
+    CFMutableDictionaryRef properties = 0;
+    CFTypeRef obj = NULL;
+    uint64_t tHandle = 0;
+
+    if (IORegistryEntryCreateCFProperties(__idle_osx_service, &properties,
+                                          kCFAllocatorDefault, 0) ==
+        KERN_SUCCESS && properties != NULL)
+    {
+        obj = CFDictionaryGetValue(properties, CFSTR("HIDIdleTime"));
+        CFRetain(obj);
+    }
+    else
+    {
+        printf("Couldn't grab properties of system\n");
+    }
+
+    if (obj)
+    {
+        CFTypeID type = CFGetTypeID(obj);
+
+        if (type == CFDataGetTypeID())
+        {
+            CFDataGetBytes((CFDataRef) obj,
+                           CFRangeMake(0, sizeof(tHandle)),
+                           (UInt8*) &tHandle);
+        }
+        else if (type == CFNumberGetTypeID())
+        {
+            CFNumberGetValue((CFNumberRef)obj,
+                             kCFNumberSInt64Type,
+                             &tHandle);
+        }
+        else
+        {
+            printf("%d: unsupported type\n", (int)type);
+        }
+
+        CFRelease(obj);
+
+        // essentially divides by 10^9
+        tHandle >>= 30;
+    }
+    else
+    {
+        printf("Can't find idle time\n");
+    }
+
+    CFRelease((CFTypeRef)properties);
+    return Py_BuildValue("L", tHandle);
+}
+
+static PyObject * idle_close(PyObject *self, PyObject *args)
+{
+    /* Release our resources */
+    IOObjectRelease(__idle_osx_service);
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+static PyMethodDef idleMethods[] =
+{
+	{"init",  idle_init, METH_VARARGS, "init idle"},
+	{"getIdleSec",  idle_getIdleSec, METH_VARARGS, "Get idle time in seconds"},
+	{"close",  idle_close, METH_VARARGS, "close idle"},
+	{NULL, NULL, 0, NULL}
+};
+
+PyMODINIT_FUNC initidle(void)
+{
+    (void) Py_InitModule("idle", idleMethods);
+}
diff --git a/src/osx/nsapp.h b/src/osx/nsapp.h
new file mode 100644
index 000000000..dd86960c2
--- /dev/null
+++ b/src/osx/nsapp.h
@@ -0,0 +1,19 @@
+#import <Cocoa/Cocoa.h>
+
+
+@interface NSApplication (Gajim)
+
+- (void) initGajim;
+- (void) initGUI;
+- (BOOL) initNetNotify;
+- (void) orderFrontStandardAboutPanel: (id)sender;
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
+- (BOOL) application:(NSApplication *)theApplication 
+             openFile:(NSString *)filename;
+- (void) application:(NSApplication *)sender openFiles:(NSArray *)filenames;
+- (BOOL) applicationOpenUntitledFile:(NSApplication *)theApplication;
+- (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender;
+
++ (void) netNotifyCB: (NSNotification*)notif;
+
+@end
diff --git a/src/osx/nsapp.m b/src/osx/nsapp.m
new file mode 100644
index 000000000..4e7b6bde4
--- /dev/null
+++ b/src/osx/nsapp.m
@@ -0,0 +1,239 @@
+#import "nsapp.h"
+#include <notify.h>
+
+#include <AppKit/NSSound.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <Python.h>
+
+
+#define GAJIM_POOL_ALLOC \
+     NSAutoreleasePool *gajim_pool = [[NSAutoreleasePool alloc] init];
+#define GAJIM_POOL_FREE [gajim_pool release];
+
+
+static PyObject *netChangedCB = NULL;
+static NSFileHandle* netNotifyFH = nil;
+static int netNotifyToken = -1;
+
+
+@implementation NSApplication (Gajim)
+
+- (void) initGUI
+{
+    [NSBundle loadNibNamed:@"Gajim" owner:NSApp];
+}
+
++ (void) netNotifyCB: (NSNotification*) notif
+{
+    NSLog(@"Network changed notification");
+
+    if (netChangedCB)
+    {
+        PyObject_CallObject(netChangedCB, NULL);
+    }
+
+	[[notif object] readInBackgroundAndNotify];		
+}
+
+- (BOOL) initNetNotify
+{
+    int fd = 0;
+
+    if (notify_register_file_descriptor(
+                "com.apple.system.config.network_change", &fd, 0,
+                &netNotifyToken) != NOTIFY_STATUS_OK)
+    {
+        return FALSE;
+    }
+
+    netNotifyFH = [[NSFileHandle alloc] initWithFileDescriptor: fd];
+    [[NSNotificationCenter defaultCenter] addObserver: [self class] 
+           selector: @selector(netNotifyCB:) 
+           name: NSFileHandleReadCompletionNotification 
+           object: netNotifyFH];
+    [netNotifyFH readInBackgroundAndNotify];	
+
+    return TRUE;
+}
+
+- (void) initGajim
+{
+    GAJIM_POOL_ALLOC
+
+    [self initGUI];
+    [self initNetNotify];
+
+    [NSApp setDelegate:self];
+    [NSApp finishLaunching];
+
+    GAJIM_POOL_FREE
+}
+
+- (void) orderFrontStandardAboutPanel: (id)sender
+{
+    PyRun_SimpleString("\n\
+import gobject\n\
+import dialogs\n\
+def doAbout():\n\
+	dialogs.AboutDialog()\n\
+	return None\n\
+gobject.idle_add(doAbout)\n\
+");
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
+{
+/*
+    PyRun_SimpleString("\n\
+import gajim\n\
+import gobject\n\
+def doQuit():\n\
+	gajim.interface.roster.on_quit_menuitem_activate(None)\n\
+	return None\n\
+gobject.idle_add(doQuit)\n\
+");
+*/
+    return NSTerminateNow;
+}
+
+- (BOOL) application:(NSApplication *)theApplication 
+            openFile:(NSString *)filename
+{
+    NSLog(@"openFile");
+    NSLog(filename);
+    return YES;
+}
+
+- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames
+{
+    NSLog(@"openFiles");
+
+    NSEnumerator* iter = [filenames objectEnumerator];
+    NSString* str;
+    while ((str = [iter nextObject]))
+    {
+        NSLog(str);
+    }
+    return;
+}
+
+- (BOOL)applicationOpenUntitledFile:(NSApplication *)theApplication
+{
+    NSLog(@"openUntitledFile");
+    return YES;
+}
+
+- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
+{
+    NSLog(@"shouldOpenUntitledFile");
+    return YES;
+}
+
+@end
+
+
+static PyObject * nsapp_init(PyObject *self, PyObject *args)
+{
+    [NSApp initGajim];
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+static PyObject * nsapp_setNetworkCB(PyObject *self, PyObject *args)
+{
+    PyArg_UnpackTuple(args, "netcb", 1, 1, &netChangedCB);
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+static PyObject * nsapp_requestUserAttention(PyObject *self, PyObject *args)
+{
+    GAJIM_POOL_ALLOC
+    [NSApp requestUserAttention:NSInformationalRequest];
+    GAJIM_POOL_FREE
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+static PyObject * nsapp_playFile(PyObject *self, PyObject *args)
+{
+    GAJIM_POOL_ALLOC
+
+    const char* cstr = NULL;
+
+    if (!PyArg_ParseTuple(args, "s", &cstr))
+    {
+        return NULL;
+    }
+
+    NSSound* snd = [[NSSound alloc] initWithContentsOfFile:
+                                      [[NSString alloc] initWithUTF8String: cstr]
+                                    byReference: YES];
+    if (!snd)
+    {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    if (![snd play])
+    {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    GAJIM_POOL_FREE
+
+	return Py_BuildValue("b", 1);
+}
+
+static PyObject * nsapp_getBundlePath(PyObject *self, PyObject *args)
+{
+    GAJIM_POOL_ALLOC
+
+    NSBundle* bundle = [NSBundle mainBundle];
+    if (!bundle)
+    {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    NSString* nspath = [bundle bundlePath];
+    if (!nspath)
+    {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    const char* path = [nspath UTF8String];
+    PyObject* pypath = Py_BuildValue("s", path);
+
+    GAJIM_POOL_FREE
+
+    return pypath;
+}
+
+static PyMethodDef nsappMethods[] =
+{
+	{"init", nsapp_init, METH_VARARGS, "init nsapp"},
+    {"setNetworkCB", nsapp_setNetworkCB, METH_VARARGS,
+     "Callback to call when the network state changes"},
+    {"getBundlePath", nsapp_getBundlePath, METH_VARARGS,
+     "Get the path to the bundle we were run from"},
+    {"playFile", nsapp_playFile, METH_VARARGS,
+     "Play a sound file"},
+    {"requestUserAttention", nsapp_requestUserAttention, METH_VARARGS,
+     "Sends a request for the users attention to the window manager"},
+	{NULL, NULL, 0, NULL}
+};
+
+PyMODINIT_FUNC initnsapp(void)
+{
+    (void) Py_InitModule("nsapp", nsappMethods);
+}
diff --git a/src/osx/setup.py b/src/osx/setup.py
new file mode 100644
index 000000000..2eaeb1bb9
--- /dev/null
+++ b/src/osx/setup.py
@@ -0,0 +1,20 @@
+from distutils.core import setup, Extension
+
+setup(
+	name = 'Gajim',
+	version = '0.11',
+	description = 'A full featured Jabber client',
+	author = 'Gajim Development Team',
+	url = 'http://www.gajim.org/',
+	download_url = 'http://www.gajim.org/downloads.php',
+	license = 'GPL',
+	
+	ext_modules=[
+	Extension('idle', ['idle.c'],
+			  extra_compile_args=['-Wall'],
+			  extra_link_args=['-framework', 'IOKit', '-framework', 'Carbon']),
+	Extension('nsapp', ['nsapp.m'],
+			  extra_compile_args=['-Wall'],
+			  extra_link_args=['-framework', 'AppKit', '-framework', 'Cocoa']),
+	]
+)
diff --git a/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/syncmenu/Makefile b/src/osx/syncmenu/Makefile
new file mode 100644
index 000000000..82364336a
--- /dev/null
+++ b/src/osx/syncmenu/Makefile
@@ -0,0 +1,575 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/syncmenu/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../../..
+
+pkgdatadir = $(datadir)/gajim
+pkglibdir = $(libdir)/gajim
+pkgincludedir = $(includedir)/gajim
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = src/osx/syncmenu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(syncmenulibdir)"
+syncmenulibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(syncmenulib_LTLIBRARIES)
+syncmenu_la_LIBADD =
+am__syncmenu_la_SOURCES_DIST = sync-menu.c pysyncmenu.c
+#am_syncmenu_la_OBJECTS = syncmenu_la-sync-menu.lo \
+#	syncmenu_la-pysyncmenu.lo
+syncmenu_la_OBJECTS = $(am_syncmenu_la_OBJECTS)
+#am_syncmenu_la_rpath = -rpath $(syncmenulibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(syncmenu_la_SOURCES)
+DIST_SOURCES = $(am__syncmenu_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/asterix/gajim/missing --run aclocal-1.9
+ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
+ALL_LINGUAS = 
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/asterix/gajim/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/asterix/gajim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/asterix/gajim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/asterix/gajim/missing --run automake-1.9
+AWK = gawk
+BUILD_CARBON_FALSE = 
+BUILD_CARBON_TRUE = #
+BUILD_COCOA_FALSE = 
+BUILD_COCOA_TRUE = #
+BUILD_GTKSPELL_FALSE = #
+BUILD_GTKSPELL_TRUE = 
+BUILD_IDLE_FALSE = #
+BUILD_IDLE_OSX_FALSE = 
+BUILD_IDLE_OSX_TRUE = #
+BUILD_IDLE_TRUE = 
+BUILD_REMOTE_CONTROL_FALSE = #
+BUILD_REMOTE_CONTROL_TRUE = 
+BUILD_TRAYICON_FALSE = #
+BUILD_TRAYICON_TRUE = 
+CARBON_LIBS = 
+CATALOGS = 
+CATOBJEXT = .gmo
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+COCOA_LIBS = 
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DATADIR = /usr/local/share
+DATADIRNAME = share
+DBUS_CFLAGS = -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include  
+DBUS_LIBS = -ldbus-1  
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DOCDIR = /usr/local/share/doc/gajim
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GETTEXT_PACKAGE = gajim
+GMOFILES = 
+GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+GTKSPELL_CFLAGS = -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  
+GTKSPELL_LIBS = -lgtkspell -laspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0  
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INSTOBJEXT = .mo
+INTLLIBS = 
+INTLTOOL_CAVES_RULE = %.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DESKTOP_RULE = %.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract
+INTLTOOL_KBD_RULE = %.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_KEYS_RULE = %.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_MERGE = $(top_builddir)/intltool-merge
+INTLTOOL_OAF_RULE = %.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
+INTLTOOL_PERL = /usr/bin/perl
+INTLTOOL_POLICY_RULE = %.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PONG_RULE = %.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PROP_RULE = %.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SCHEMAS_RULE = %.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVER_RULE = %.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVICE_RULE = %.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SHEET_RULE = %.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_THEME_RULE = %.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UI_RULE = %.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UPDATE = $(top_builddir)/intltool-update
+INTLTOOL_XAM_RULE = %.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_XML_NOMERGE_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
+INTLTOOL_XML_RULE = %.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+LDFLAGS = 
+LIBDIR = /usr/local/lib
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/asterix/gajim/missing --run makeinfo
+MKINSTALLDIRS = ./mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_OPTS = -c
+OBJEXT = o
+PACKAGE = gajim
+PACKAGE_BUGREPORT = http://trac.gajim.org/
+PACKAGE_NAME = Gajim - A Jabber Instant Messager
+PACKAGE_STRING = Gajim - A Jabber Instant Messager 0.11.2.2-svn
+PACKAGE_TARNAME = gajim
+PACKAGE_VERSION = 0.11.2.2-svn
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+POFILES = 
+POSUB = po
+PO_IN_DATADIR_FALSE = 
+PO_IN_DATADIR_TRUE = 
+PYGTK_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pygtk-2.0  
+PYGTK_DEFS = /usr/share/pygtk/2.0/defs
+PYGTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgmodule-2.0 -ldl -lffi -lgobject-2.0 -lglib-2.0  
+PYTHON = /usr/bin/python
+PYTHON_EXEC_PREFIX = ${exec_prefix}
+PYTHON_INCLUDES = -I/usr/include/python2.4
+PYTHON_PLATFORM = linux2
+PYTHON_PREFIX = ${prefix}
+PYTHON_VERSION = 2.4
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = strip
+USE_NLS = yes
+VERSION = 0.11.2.2-svn
+XGETTEXT = /usr/bin/xgettext
+XMKMF = 
+XSCRNSAVER_CFLAGS =  
+XSCRNSAVER_LIBS = -lXss  
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__fastdepOBJC_FALSE = 
+am__fastdepOBJC_TRUE = #
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/asterix/gajim/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+pkgpyexecdir = ${pyexecdir}/gajim
+pkgpythondir = ${pythondir}/gajim
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = ${exec_prefix}/lib/python2.4/site-packages
+pythondir = ${prefix}/lib/python2.4/site-packages
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+GTKPATH = "/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+INCLUDES = $(PYTHON_INCLUDES)
+GTKLDFLAGS = `$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0` 
+GTKCFLAGS = `$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+#syncmenulib_LTLIBRARIES = syncmenu.la
+#syncmenulibdir = $(libdir)/gajim
+#syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+#syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+#syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/syncmenu/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/syncmenu/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-syncmenulibLTLIBRARIES: $(syncmenulib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(syncmenulibdir)" || $(mkdir_p) "$(DESTDIR)$(syncmenulibdir)"
+	@list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(syncmenulibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(syncmenulibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-syncmenulibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(syncmenulibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(syncmenulibdir)/$$p"; \
+	done
+
+clean-syncmenulibLTLIBRARIES:
+	-test -z "$(syncmenulib_LTLIBRARIES)" || rm -f $(syncmenulib_LTLIBRARIES)
+	@list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+syncmenu.la: $(syncmenu_la_OBJECTS) $(syncmenu_la_DEPENDENCIES) 
+	$(LINK) $(am_syncmenu_la_rpath) $(syncmenu_la_LDFLAGS) $(syncmenu_la_OBJECTS) $(syncmenu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/syncmenu_la-pysyncmenu.Plo
+include ./$(DEPDIR)/syncmenu_la-sync-menu.Plo
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LTCOMPILE) -c -o $@ $<
+
+syncmenu_la-sync-menu.lo: sync-menu.c
+	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-sync-menu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c; \
+	then mv -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" "$(DEPDIR)/syncmenu_la-sync-menu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo"; exit 1; fi
+#	source='sync-menu.c' object='syncmenu_la-sync-menu.lo' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c
+
+syncmenu_la-pysyncmenu.lo: pysyncmenu.c
+	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-pysyncmenu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c; \
+	then mv -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" "$(DEPDIR)/syncmenu_la-pysyncmenu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo"; exit 1; fi
+#	source='pysyncmenu.c' object='syncmenu_la-pysyncmenu.lo' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(syncmenulibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-syncmenulibLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-syncmenulibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-syncmenulibLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-syncmenulibLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip install-syncmenulibLTLIBRARIES installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-syncmenulibLTLIBRARIES
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/syncmenu/Makefile.am b/src/osx/syncmenu/Makefile.am
new file mode 100644
index 000000000..797476559
--- /dev/null
+++ b/src/osx/syncmenu/Makefile.am
@@ -0,0 +1,21 @@
+GTKPATH="/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = $(PYTHON_INCLUDES)
+
+GTKLDFLAGS=`$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0` 
+GTKCFLAGS=`$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+
+if BUILD_COCOA
+syncmenulib_LTLIBRARIES = syncmenu.la
+syncmenulibdir = $(libdir)/gajim
+syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+endif
+
+DISTCLEANFILES = 
+
+EXTRA_DIST = 
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/syncmenu/Makefile.in b/src/osx/syncmenu/Makefile.in
new file mode 100644
index 000000000..bae1c97d9
--- /dev/null
+++ b/src/osx/syncmenu/Makefile.in
@@ -0,0 +1,575 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/osx/syncmenu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+	$(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(syncmenulibdir)"
+syncmenulibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(syncmenulib_LTLIBRARIES)
+syncmenu_la_LIBADD =
+am__syncmenu_la_SOURCES_DIST = sync-menu.c pysyncmenu.c
+@BUILD_COCOA_TRUE@am_syncmenu_la_OBJECTS = syncmenu_la-sync-menu.lo \
+@BUILD_COCOA_TRUE@	syncmenu_la-pysyncmenu.lo
+syncmenu_la_OBJECTS = $(am_syncmenu_la_OBJECTS)
+@BUILD_COCOA_TRUE@am_syncmenu_la_rpath = -rpath $(syncmenulibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(syncmenu_la_SOURCES)
+DIST_SOURCES = $(am__syncmenu_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CARBON_FALSE = @BUILD_CARBON_FALSE@
+BUILD_CARBON_TRUE = @BUILD_CARBON_TRUE@
+BUILD_COCOA_FALSE = @BUILD_COCOA_FALSE@
+BUILD_COCOA_TRUE = @BUILD_COCOA_TRUE@
+BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@
+BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@
+BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@
+BUILD_IDLE_OSX_FALSE = @BUILD_IDLE_OSX_FALSE@
+BUILD_IDLE_OSX_TRUE = @BUILD_IDLE_OSX_TRUE@
+BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@
+BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@
+BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@
+BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@
+BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@
+CARBON_LIBS = @CARBON_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COCOA_LIBS = @COCOA_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCDIR = @DOCDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
+GTKSPELL_LIBS = @GTKSPELL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBDIR = @LIBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_DEFS = @PYGTK_DEFS@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMKMF = @XMKMF@
+XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@
+XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__fastdepOBJC_FALSE = @am__fastdepOBJC_FALSE@
+am__fastdepOBJC_TRUE = @am__fastdepOBJC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+GTKPATH = "/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+INCLUDES = $(PYTHON_INCLUDES)
+GTKLDFLAGS = `$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0` 
+GTKCFLAGS = `$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+@BUILD_COCOA_TRUE@syncmenulib_LTLIBRARIES = syncmenu.la
+@BUILD_COCOA_TRUE@syncmenulibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+@BUILD_COCOA_TRUE@syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+@BUILD_COCOA_TRUE@syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+DISTCLEANFILES = 
+EXTRA_DIST = 
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/osx/syncmenu/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/osx/syncmenu/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-syncmenulibLTLIBRARIES: $(syncmenulib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(syncmenulibdir)" || $(mkdir_p) "$(DESTDIR)$(syncmenulibdir)"
+	@list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(syncmenulibdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(syncmenulibdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-syncmenulibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(syncmenulibdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(syncmenulibdir)/$$p"; \
+	done
+
+clean-syncmenulibLTLIBRARIES:
+	-test -z "$(syncmenulib_LTLIBRARIES)" || rm -f $(syncmenulib_LTLIBRARIES)
+	@list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+syncmenu.la: $(syncmenu_la_OBJECTS) $(syncmenu_la_DEPENDENCIES) 
+	$(LINK) $(am_syncmenu_la_rpath) $(syncmenu_la_LDFLAGS) $(syncmenu_la_OBJECTS) $(syncmenu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syncmenu_la-pysyncmenu.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syncmenu_la-sync-menu.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+syncmenu_la-sync-menu.lo: sync-menu.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-sync-menu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" "$(DEPDIR)/syncmenu_la-sync-menu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sync-menu.c' object='syncmenu_la-sync-menu.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c
+
+syncmenu_la-pysyncmenu.lo: pysyncmenu.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-pysyncmenu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" "$(DEPDIR)/syncmenu_la-pysyncmenu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pysyncmenu.c' object='syncmenu_la-pysyncmenu.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(syncmenulibdir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-syncmenulibLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-syncmenulibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-syncmenulibLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-syncmenulibLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip install-syncmenulibLTLIBRARIES installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-syncmenulibLTLIBRARIES
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/syncmenu/pysyncmenu.c b/src/osx/syncmenu/pysyncmenu.c
new file mode 100644
index 000000000..d2e304f9f
--- /dev/null
+++ b/src/osx/syncmenu/pysyncmenu.c
@@ -0,0 +1,55 @@
+#include <errno.h>
+#include <string.h>
+#include <Python.h>
+#include <pygobject.h>
+#include "sync-menu.h"
+
+
+PyDoc_STRVAR(pysync_menu_takeover_menu__doc__,
+"Receives: a GtkMenuShell\n"
+"Returns:\n");
+
+static PyObject *pysync_menu_takeover_menu(PyObject *s, PyObject *args)
+{
+    PyObject *obj = NULL;
+
+    if (!PyArg_ParseTuple(args, "O:GtkMenuShell", &obj))
+    {
+        PyErr_SetString(PyExc_TypeError, "Failed to process parameter1");
+        return NULL;
+    }
+
+    Py_INCREF(obj);
+
+    GtkMenuShell* menu = pyg_boxed_get(obj, GtkMenuShell);
+    if (!menu)
+    {
+        PyErr_SetString(PyExc_TypeError, "Failed to process parameter2");
+        return NULL;
+    }
+
+    sync_menu_takeover_menu(menu);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyMethodDef syncmenuModuleMethods[] =
+{
+    {"takeover_menu", (PyCFunction)pysync_menu_takeover_menu,
+     METH_VARARGS, pysync_menu_takeover_menu__doc__},
+    {NULL}
+};
+
+PyDoc_STRVAR(modsyncmenu__doc__,
+             "GTK+ Integration for the Mac OS X Menubar.\n");
+
+void initsyncmenu(void)
+{
+  if (!Py_InitModule3("syncmenu", syncmenuModuleMethods, modsyncmenu__doc__))
+  {
+      PyErr_SetString(PyExc_ImportError,
+                      "Py_InitModule3(\"syncmenu\") failed");
+      return;
+  }
+}
diff --git a/src/osx/syncmenu/setup.py b/src/osx/syncmenu/setup.py
new file mode 100644
index 000000000..7b20709f9
--- /dev/null
+++ b/src/osx/syncmenu/setup.py
@@ -0,0 +1,27 @@
+from distutils.core import setup, Extension
+import commands
+
+
+retval, output = commands.getstatusoutput("pkg-config --cflags gtk+-2.0 pygtk-2.0")
+if retval != 0:
+	print "Failed to find package details for gtk+-2.0"
+	print
+	print output
+	sys.exit(1)
+cflags = output.strip().split()
+retval, output = commands.getstatusoutput("pkg-config --libs gtk+-2.0 pygtk-2.0")
+if retval != 0:
+	print "Failed to find package details for gtk+-2.0"
+	print
+	print output
+	sys.exit(1)
+libs = output.strip().split()
+
+
+setup(name='syncmenu', version='0.2',
+      author='James Newton', author_email='baron@codepunks.org',
+      ext_modules=[
+      	Extension('syncmenu', ['pysyncmenu.c', 'sync-menu.c'],
+				  extra_link_args=libs + ['-framework', 'Carbon'],
+				  extra_compile_args=['-Wall'] + cflags)
+      ])
diff --git a/src/osx/syncmenu/sync-menu.c b/src/osx/syncmenu/sync-menu.c
new file mode 100644
index 000000000..dde97d7f1
--- /dev/null
+++ b/src/osx/syncmenu/sync-menu.c
@@ -0,0 +1,722 @@
+/* GTK+ Integration for the Mac OS X Menubar.
+ *
+ * Copyright (C) 2007 Pioneer Research Center USA, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <Carbon/Carbon.h>
+
+#include "sync-menu.h"
+
+
+/* TODO
+ *
+ * - Setup shortcuts, possibly transforming ctrl->cmd
+ * - Sync menus
+ * - Create on demand? (can this be done with gtk+? ie fill in menu items when the menu is opened)
+ * - Figure out what to do per app/window...
+ * - Toggle/radio items
+ *
+ */
+
+#define GTK_QUARTZ_MENU_CREATOR 'GTKC'
+#define GTK_QUARTZ_ITEM_WIDGET  'GWID'
+
+
+static void   sync_menu_shell (GtkMenuShell *menu_shell,
+			       MenuRef       carbon_menu,
+			       gboolean      toplevel);
+
+
+/*
+ * utility functions
+ */
+
+static GtkWidget *
+find_menu_label (GtkWidget *widget)
+{
+  GtkWidget *label = NULL;
+  
+  if (GTK_IS_LABEL (widget))
+    return widget;
+
+  if (GTK_IS_CONTAINER (widget))
+    {
+      GList *children;
+      GList *l;
+
+      children = gtk_container_get_children (GTK_CONTAINER (widget));
+
+      for (l = children; l; l = l->next)
+	{
+	  label = find_menu_label (l->data);
+	  if (label)
+	    break;
+	}
+      
+      g_list_free (children);
+    }
+
+  return label;
+}
+
+static const gchar *
+get_menu_label_text (GtkWidget  *menu_item,
+		     GtkWidget **label)
+{
+  *label = find_menu_label (menu_item);
+  if (!*label)
+    return NULL;
+
+  return gtk_label_get_text (GTK_LABEL (*label));
+}
+
+static gboolean
+accel_find_func (GtkAccelKey *key,
+		 GClosure    *closure,
+		 gpointer     data)
+{
+  return (GClosure *) data == closure;
+}
+
+
+/*
+ * CarbonMenu functions
+ */
+
+typedef struct
+{
+  MenuRef menu;
+} CarbonMenu;
+
+static GQuark carbon_menu_quark = 0;
+
+static CarbonMenu *
+carbon_menu_new (void)
+{
+  return g_slice_new0 (CarbonMenu);
+}
+
+static void
+carbon_menu_free (CarbonMenu *menu)
+{
+  g_slice_free (CarbonMenu, menu);
+}
+
+static CarbonMenu *
+carbon_menu_get (GtkWidget *widget)
+{
+  return g_object_get_qdata (G_OBJECT (widget), carbon_menu_quark);
+}
+
+static void
+carbon_menu_connect (GtkWidget *menu,
+		     MenuRef    menuRef)
+{
+  CarbonMenu *carbon_menu = carbon_menu_get (menu);
+
+  if (!carbon_menu)
+    {
+      carbon_menu = carbon_menu_new ();
+
+      g_object_set_qdata_full (G_OBJECT (menu), carbon_menu_quark,
+			       carbon_menu,
+			       (GDestroyNotify) carbon_menu_free);
+    }
+
+  carbon_menu->menu = menuRef;
+}
+
+
+/*
+ * CarbonMenuItem functions
+ */
+
+typedef struct
+{
+  MenuRef        menu;
+  MenuItemIndex  index;
+  MenuRef        submenu;
+  GClosure      *accel_closure;
+} CarbonMenuItem;
+
+static GQuark carbon_menu_item_quark = 0;
+
+static CarbonMenuItem * 
+carbon_menu_item_new (void)
+{
+  return g_slice_new0 (CarbonMenuItem);
+}
+
+static void
+carbon_menu_item_free (CarbonMenuItem *menu_item)
+{
+  if (menu_item->accel_closure)
+    g_closure_unref (menu_item->accel_closure);
+
+  g_slice_free (CarbonMenuItem, menu_item);
+}
+
+static CarbonMenuItem *
+carbon_menu_item_get (GtkWidget *widget)
+{
+  return g_object_get_qdata (G_OBJECT (widget), carbon_menu_item_quark);
+}
+
+static void
+carbon_menu_item_update_state (CarbonMenuItem *carbon_item,
+			       GtkWidget      *widget)
+{
+  gboolean sensitive;
+  gboolean visible;
+  UInt32   set_attrs = 0;
+  UInt32   clear_attrs = 0;
+
+  g_object_get (widget,
+                "sensitive", &sensitive,
+                "visible",   &visible,
+                NULL);
+
+  if (!sensitive)
+    set_attrs |= kMenuItemAttrDisabled;
+  else
+    clear_attrs |= kMenuItemAttrDisabled;
+
+  if (!visible)
+    set_attrs |= kMenuItemAttrHidden;
+  else
+    clear_attrs |= kMenuItemAttrHidden;
+
+  ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index,
+                            set_attrs, clear_attrs);
+}
+
+static void
+carbon_menu_item_update_active (CarbonMenuItem *carbon_item,
+				GtkWidget      *widget)
+{
+  gboolean active;
+
+  g_object_get (widget,
+                "active", &active,
+                NULL);
+
+  CheckMenuItem (carbon_item->menu, carbon_item->index,
+		 active);
+}
+
+static void
+carbon_menu_item_update_submenu (CarbonMenuItem *carbon_item,
+                                 GtkWidget      *widget)
+{
+    GtkWidget *submenu;
+
+    submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
+
+    if (submenu)
+    {
+        GtkWidget   *label = NULL;
+
+        carbon_item->submenu = NULL;
+        GetMenuItemHierarchicalMenu(carbon_item->menu, carbon_item->index,
+                                    &carbon_item->submenu);
+        if (!carbon_item->submenu)
+        {
+            const gchar *label_text;
+            CFStringRef  cfstr = NULL;
+
+            label_text = get_menu_label_text (widget, &label);
+            if (label_text)
+                cfstr = CFStringCreateWithCString (NULL, label_text,
+                                                   kCFStringEncodingUTF8);
+            CreateNewMenu (0, 0, &carbon_item->submenu);
+            SetMenuTitleWithCFString (carbon_item->submenu, cfstr);
+            SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index,
+                                         carbon_item->submenu);
+            if (cfstr)
+                CFRelease (cfstr);
+        }
+
+        sync_menu_shell (GTK_MENU_SHELL (submenu), carbon_item->submenu, FALSE);
+    }
+    else
+    {
+        SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index,
+                                     NULL);
+        carbon_item->submenu = NULL;
+    }
+}
+
+static void
+carbon_menu_item_update_label (CarbonMenuItem *carbon_item,
+			       GtkWidget      *widget)
+{
+  GtkWidget   *label;
+  const gchar *label_text;
+  CFStringRef  cfstr = NULL;
+
+  label_text = get_menu_label_text (widget, &label);
+  if (label_text)
+    cfstr = CFStringCreateWithCString (NULL, label_text,
+				       kCFStringEncodingUTF8);
+
+  SetMenuItemTextWithCFString (carbon_item->menu, carbon_item->index,
+			       cfstr);
+
+  if (cfstr)
+    CFRelease (cfstr);
+}
+
+static void
+carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item,
+				     GtkWidget      *widget)
+{
+  GtkWidget *label;
+
+  get_menu_label_text (widget, &label);
+
+  if (GTK_IS_ACCEL_LABEL (label) &&
+      GTK_ACCEL_LABEL (label)->accel_closure)
+    {
+      GtkAccelKey *key;
+
+      key = gtk_accel_group_find (GTK_ACCEL_LABEL (label)->accel_group,
+				  accel_find_func,
+				  GTK_ACCEL_LABEL (label)->accel_closure);
+
+      if (key            &&
+	  key->accel_key &&
+	  key->accel_flags & GTK_ACCEL_VISIBLE)
+	{
+	  GdkDisplay      *display = gtk_widget_get_display (widget);
+	  GdkKeymap       *keymap  = gdk_keymap_get_for_display (display);
+	  GdkKeymapKey    *keys;
+	  gint             n_keys;
+
+	  if (gdk_keymap_get_entries_for_keyval (keymap, key->accel_key,
+						 &keys, &n_keys))
+	    {
+	      UInt8 modifiers = 0;
+
+	      SetMenuItemCommandKey (carbon_item->menu, carbon_item->index,
+				     true, keys[0].keycode);
+
+	      g_free (keys);
+
+	      if (key->accel_mods)
+		{
+		  if (key->accel_mods & GDK_SHIFT_MASK)
+		    modifiers |= kMenuShiftModifier;
+
+		  if (key->accel_mods & GDK_MOD1_MASK)
+		    modifiers |= kMenuOptionModifier;
+		}
+
+	      if (!(key->accel_mods & GDK_CONTROL_MASK))
+		{
+		  modifiers |= kMenuNoCommandModifier;
+		}
+
+	      SetMenuItemModifiers (carbon_item->menu, carbon_item->index,
+				    modifiers);
+
+	      return;
+	    }
+	}
+    }
+
+  /*  otherwise, clear the menu shortcut  */
+  SetMenuItemModifiers (carbon_item->menu, carbon_item->index,
+			kMenuNoModifiers | kMenuNoCommandModifier);
+  ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index,
+			    0, kMenuItemAttrUseVirtualKey);
+  SetMenuItemCommandKey (carbon_item->menu, carbon_item->index,
+			 false, 0);
+}
+
+static void
+carbon_menu_item_accel_changed (GtkAccelGroup   *accel_group,
+				guint            keyval,
+				GdkModifierType  modifier,
+				GClosure        *accel_closure,
+				GtkWidget       *widget)
+{
+  CarbonMenuItem *carbon_item = carbon_menu_item_get (widget);
+  GtkWidget      *label;
+
+  get_menu_label_text (widget, &label);
+
+  if (GTK_IS_ACCEL_LABEL (label) &&
+      GTK_ACCEL_LABEL (label)->accel_closure == accel_closure)
+    carbon_menu_item_update_accelerator (carbon_item, widget);
+}
+
+static void
+carbon_menu_item_update_accel_closure (CarbonMenuItem *carbon_item,
+				       GtkWidget      *widget)
+{
+  GtkAccelGroup *group;
+  GtkWidget     *label;
+
+  get_menu_label_text (widget, &label);
+
+  if (carbon_item->accel_closure)
+    {
+      group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure);
+      if (group)
+          g_signal_handlers_disconnect_by_func (group,
+                                                carbon_menu_item_accel_changed,
+                                                widget);
+
+      g_closure_unref (carbon_item->accel_closure);
+      carbon_item->accel_closure = NULL;
+    }
+
+  if (GTK_IS_ACCEL_LABEL (label))
+    carbon_item->accel_closure = GTK_ACCEL_LABEL (label)->accel_closure;
+
+  if (carbon_item->accel_closure)
+    {
+      g_closure_ref (carbon_item->accel_closure);
+
+      group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure);
+
+      g_signal_connect_object (group, "accel-changed",
+			       G_CALLBACK (carbon_menu_item_accel_changed),
+			       widget, 0);
+    }
+
+  carbon_menu_item_update_accelerator (carbon_item, widget);
+}
+
+static void
+carbon_menu_item_notify (GObject        *object,
+			 GParamSpec     *pspec,
+			 CarbonMenuItem *carbon_item)
+{
+  if (!strcmp (pspec->name, "sensitive") ||
+      !strcmp (pspec->name, "visible"))
+    {
+      carbon_menu_item_update_state (carbon_item, GTK_WIDGET (object));
+    }
+  else if (!strcmp (pspec->name, "active"))
+    {
+      carbon_menu_item_update_active (carbon_item, GTK_WIDGET (object));
+    }
+  else if (!strcmp (pspec->name, "submenu"))
+    {
+      carbon_menu_item_update_submenu (carbon_item, GTK_WIDGET (object));
+    }
+}
+
+static void
+carbon_menu_item_notify_label (GObject    *object,
+			       GParamSpec *pspec,
+			       gpointer    data)
+{
+  CarbonMenuItem *carbon_item = carbon_menu_item_get (GTK_WIDGET (object));
+
+  if (!strcmp (pspec->name, "label"))
+    {
+      carbon_menu_item_update_label (carbon_item,
+				     GTK_WIDGET (object));
+    }
+  else if (!strcmp (pspec->name, "accel-closure"))
+    {
+      carbon_menu_item_update_accel_closure (carbon_item,
+					     GTK_WIDGET (object));
+    }
+}
+
+static CarbonMenuItem *
+carbon_menu_item_connect (GtkWidget     *menu_item,
+			  GtkWidget     *label,
+			  MenuRef        menu,
+			  MenuItemIndex  index)
+{
+  CarbonMenuItem *carbon_item = carbon_menu_item_get (menu_item);
+
+  if (!carbon_item)
+    {
+      carbon_item = carbon_menu_item_new ();
+
+      g_object_set_qdata_full (G_OBJECT (menu_item), carbon_menu_item_quark,
+			       carbon_item,
+			       (GDestroyNotify) carbon_menu_item_free);
+
+      g_signal_connect (menu_item, "notify",
+                        G_CALLBACK (carbon_menu_item_notify),
+                        carbon_item);
+
+      if (label)
+	g_signal_connect_swapped (label, "notify::label",
+				  G_CALLBACK (carbon_menu_item_notify_label),
+				  menu_item);
+    }
+
+  carbon_item->menu  = menu;
+  carbon_item->index = index;
+
+  return carbon_item;
+}
+
+
+/*
+ * carbon event handler
+ */
+
+static OSStatus
+menu_event_handler_func (EventHandlerCallRef  event_handler_call_ref, 
+			 EventRef             event_ref, 
+			 void                *data)
+{
+  UInt32  event_class = GetEventClass (event_ref);
+  UInt32  event_kind = GetEventKind (event_ref);
+  MenuRef menu_ref;
+
+  switch (event_class) 
+    {
+    case kEventClassCommand:
+      /* This is called when activating (is that the right GTK+ term?)
+       * a menu item.
+       */
+      if (event_kind == kEventCommandProcess)
+	{
+	  HICommand command;
+	  OSStatus  err;
+
+	  //g_print ("Menu: kEventClassCommand/kEventCommandProcess\n");
+
+	  err = GetEventParameter (event_ref, kEventParamDirectObject, 
+				   typeHICommand, 0, 
+				   sizeof (command), 0, &command);
+
+	  if (err == noErr)
+	    {
+	      GtkWidget *widget = NULL;
+              
+	      if (command.commandID == kHICommandQuit)
+		{
+		  gtk_main_quit (); /* Just testing... */
+		  return noErr;
+		}
+	      
+	      /* Get any GtkWidget associated with the item. */
+	      err = GetMenuItemProperty (command.menu.menuRef, 
+					 command.menu.menuItemIndex, 
+					 GTK_QUARTZ_MENU_CREATOR, 
+					 GTK_QUARTZ_ITEM_WIDGET,
+					 sizeof (widget), 0, &widget);
+	      if (err == noErr && widget)
+		{
+		  gtk_menu_item_activate (GTK_MENU_ITEM (widget));
+		  return noErr;
+		}
+	    }
+	}
+      break;
+
+    case kEventClassMenu: 
+      GetEventParameter (event_ref, 
+			 kEventParamDirectObject, 
+			 typeMenuRef, 
+			 NULL, 
+			 sizeof (menu_ref), 
+			 NULL, 
+			 &menu_ref);
+
+      switch (event_kind)
+	{
+	case kEventMenuTargetItem:
+	  /* This is called when an item is selected (what is the
+	   * GTK+ term? prelight?)
+	   */
+	  //g_print ("kEventClassMenu/kEventMenuTargetItem\n");
+	  break;
+
+	case kEventMenuOpening:
+	  /* Is it possible to dynamically build the menu here? We
+	   * can at least set visibility/sensitivity. 
+	   */
+	  //g_print ("kEventClassMenu/kEventMenuOpening\n");
+	  break;
+	    
+	case kEventMenuClosed:
+	  //g_print ("kEventClassMenu/kEventMenuClosed\n");
+	  break;
+
+	default:
+	  break;
+	}
+
+      break;
+	
+    default:
+      break;
+    }
+
+  return CallNextEventHandler (event_handler_call_ref, event_ref);
+}
+
+static void
+setup_menu_event_handler (void)
+{
+  EventHandlerUPP menu_event_handler_upp;
+  EventHandlerRef menu_event_handler_ref;
+  const EventTypeSpec menu_events[] = {
+    { kEventClassCommand, kEventCommandProcess },
+    { kEventClassMenu, kEventMenuTargetItem },
+    { kEventClassMenu, kEventMenuOpening },
+    { kEventClassMenu, kEventMenuClosed }
+  };
+
+  /* FIXME: We might have to install one per window? */
+
+  menu_event_handler_upp = NewEventHandlerUPP (menu_event_handler_func);
+  InstallEventHandler (GetApplicationEventTarget (), menu_event_handler_upp,
+		       GetEventTypeCount (menu_events), menu_events, 0,
+		       &menu_event_handler_ref);
+  
+#if 0
+  /* FIXME: Remove the handler with: */
+  RemoveEventHandler(menu_event_handler_ref);
+  DisposeEventHandlerUPP(menu_event_handler_upp);
+#endif
+}
+
+static void
+sync_menu_shell (GtkMenuShell *menu_shell,
+                 MenuRef       carbon_menu,
+                 gboolean      toplevel)
+{
+    GList         *children;
+    GList         *l;
+    MenuItemIndex  carbon_index = 1;
+
+    carbon_menu_connect (GTK_WIDGET (menu_shell), carbon_menu);
+
+    children = gtk_container_get_children (GTK_CONTAINER (menu_shell));
+
+    UInt16 carbon_item_count = CountMenuItems(carbon_menu);
+
+    for (l = children; l; l = l->next)
+    {
+        GtkWidget      *menu_item = l->data;
+        CarbonMenuItem *carbon_item;
+
+        if (GTK_IS_TEAROFF_MENU_ITEM (menu_item))
+            continue;
+
+        if (toplevel && g_object_get_data (G_OBJECT (menu_item),
+                                           "gtk-empty-menu-item"))
+            continue;
+
+        GtkWidget *label = NULL;
+        const gchar *label_text = NULL;
+
+        label_text = get_menu_label_text (menu_item, &label);
+        if (label_text && strcmp(label_text, "_SKIP_") == 0)
+        {
+            carbon_index++;
+            continue;
+        }
+        else if (!label_text)
+            label_text = "";
+
+        MenuItemAttributes  attributes = 0;
+        if (GTK_IS_SEPARATOR_MENU_ITEM (menu_item))
+            attributes |= kMenuItemAttrSeparator;
+        if (!GTK_WIDGET_IS_SENSITIVE (menu_item))
+            attributes |= kMenuItemAttrDisabled;
+        if (!GTK_WIDGET_VISIBLE (menu_item))
+            attributes |= kMenuItemAttrHidden;
+
+        CFStringRef cfstr = CFStringCreateWithCString (NULL, label_text,
+                                                       kCFStringEncodingUTF8);
+        if (carbon_index > carbon_item_count)
+            AppendMenuItemTextWithCFString(carbon_menu, cfstr, attributes, 0,
+                                           NULL);
+        else if (!toplevel && (carbon_index > carbon_item_count))
+            InsertMenuItemTextWithCFString (carbon_menu, cfstr, 
+                                            carbon_index, attributes, 0);
+        else
+            SetMenuItemTextWithCFString(carbon_menu, carbon_index, cfstr);
+        CFRelease (cfstr);
+
+        MenuItemAttributes c_attributes = kMenuItemAttrSectionHeader |
+                                          kMenuItemAttrAutoDisable;
+        if (!(attributes & kMenuItemAttrDisabled))
+            c_attributes |= kMenuItemAttrDisabled;
+        if (!(attributes & kMenuItemAttrSeparator))
+            c_attributes |= kMenuItemAttrSeparator;
+        if (!(attributes & kMenuItemAttrHidden))
+            c_attributes |= kMenuItemAttrHidden;
+        ChangeMenuItemAttributes(carbon_menu, carbon_index,
+                                 attributes, c_attributes);
+        SetMenuItemProperty (carbon_menu, carbon_index,
+                             GTK_QUARTZ_MENU_CREATOR,
+                             GTK_QUARTZ_ITEM_WIDGET,
+                             sizeof (menu_item), &menu_item);
+
+        carbon_item = carbon_menu_item_connect (menu_item, label,
+                                                carbon_menu,
+                                                carbon_index);
+
+        if (GTK_IS_CHECK_MENU_ITEM (menu_item))
+            carbon_menu_item_update_active (carbon_item, menu_item);
+
+        carbon_menu_item_update_accel_closure (carbon_item, menu_item);
+        
+        if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item)))
+            carbon_menu_item_update_submenu (carbon_item, menu_item);
+
+        carbon_index++;
+    }
+
+    while (carbon_index <= carbon_item_count)
+    {
+        DeleteMenuItem (carbon_menu, carbon_index);
+        carbon_index++;
+    }
+
+    g_list_free (children);
+}
+
+void
+sync_menu_takeover_menu (GtkMenuShell *menu_shell)
+{
+  static MenuRef carbon_menubar = NULL;
+
+  g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell));
+
+  if (carbon_menu_quark == 0)
+    carbon_menu_quark = g_quark_from_static_string ("CarbonMenu");
+
+  if (carbon_menu_item_quark == 0)
+    carbon_menu_item_quark = g_quark_from_static_string ("CarbonMenuItem");
+
+  if (!carbon_menubar)
+  {
+      carbon_menubar = AcquireRootMenu();
+      setup_menu_event_handler ();
+  }
+  
+  sync_menu_shell (menu_shell, carbon_menubar, TRUE);
+}
diff --git a/src/osx/syncmenu/sync-menu.h b/src/osx/syncmenu/sync-menu.h
new file mode 100644
index 000000000..0715a31e2
--- /dev/null
+++ b/src/osx/syncmenu/sync-menu.h
@@ -0,0 +1,27 @@
+/* GTK+ Integration for the Mac OS X Menubar.
+ *
+ * Copyright (C) 2007 Pioneer Research Center USA, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+void sync_menu_takeover_menu (GtkMenuShell *menu_shell);
+
+G_END_DECLS
diff --git a/src/osx/syncmenu/test-menu.c b/src/osx/syncmenu/test-menu.c
new file mode 100644
index 000000000..102ec5287
--- /dev/null
+++ b/src/osx/syncmenu/test-menu.c
@@ -0,0 +1,107 @@
+#include <gtk/gtk.h>
+
+#include "sync-menu.h"
+
+GtkWidget *open_item;
+GtkWidget *copy_item;
+
+static void
+menu_item_activate_cb (GtkWidget *item,
+                       gpointer   user_data)
+{
+  gboolean visible;
+  gboolean sensitive;
+
+  g_print ("Item activated: %s\n", (gchar *) user_data);
+
+  g_object_get (G_OBJECT (copy_item),
+                "visible", &visible,
+                "sensitive", &sensitive,
+                NULL);
+
+  if (item == open_item) {
+    gtk_widget_set_sensitive (copy_item, !sensitive);
+    /*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL);*/
+  }
+}
+
+static GtkWidget *
+test_setup_menu (void)
+{
+  GtkWidget *menubar;
+  GtkWidget *menu;
+  GtkWidget *item;
+  
+  menubar = gtk_menu_bar_new ();
+
+  item = gtk_menu_item_new_with_label ("File");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+  menu = gtk_menu_new ();
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+  item = gtk_menu_item_new_with_label ("Open");
+  open_item = item;
+  g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "open");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+  item = gtk_menu_item_new_with_label ("Quit");
+  g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "quit");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+  item = gtk_menu_item_new_with_label ("Edit");
+
+  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+  menu = gtk_menu_new ();
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+  item = gtk_menu_item_new_with_label ("Copy");
+  copy_item = item;
+  g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "copy");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+  item = gtk_menu_item_new_with_label ("Paste");
+  g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "paste");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+  item = gtk_menu_item_new_with_label ("Help");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+  menu = gtk_menu_new ();
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+  item = gtk_menu_item_new_with_label ("About");
+  g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "about");
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+  return menubar;
+}
+
+int
+main (int argc, char **argv)
+{
+  GtkWidget *window;
+  GtkWidget *vbox;
+  GtkWidget *menubar;
+
+  gtk_init (&argc, &argv);
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
+  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+
+  vbox = gtk_vbox_new (FALSE, 0);
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  menubar = test_setup_menu ();
+  gtk_box_pack_start (GTK_BOX (vbox), 
+                      menubar,
+                      FALSE, TRUE, 0);
+  
+  gtk_box_pack_start (GTK_BOX (vbox), 
+                      gtk_label_new ("Some window content here"), 
+                      TRUE, TRUE, 0);
+
+  gtk_widget_show_all (window);
+
+  gtk_widget_hide (menubar);
+
+  sync_menu_takeover_menu (GTK_MENU_SHELL (menubar));
+
+  gtk_main ();
+
+  return 0;
+}
diff --git a/src/osx/syncmenu/test-menu.py b/src/osx/syncmenu/test-menu.py
new file mode 100644
index 000000000..b9c4471c8
--- /dev/null
+++ b/src/osx/syncmenu/test-menu.py
@@ -0,0 +1,78 @@
+import gtk, syncmenu
+
+
+open_item = None
+copy_item = None
+
+
+def menu_item_activate_cb(item, user_data):
+	global open_item, copy_item
+	print "Item activated: %s" % user_data
+
+	#g_object_get (G_OBJECT (copy_item),
+	#            "visible", &visible,
+	#            "sensitive", &sensitive,
+	#            NULL)
+
+	#if (item == open_item) {
+	#gtk_widget_set_sensitive (copy_item, !sensitive)
+	#/*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL)*/
+
+
+def test_setup_menu():
+	global open_item, copy_item
+	menubar = gtk.MenuBar()
+
+	item = gtk.MenuItem("File")
+	menubar.append(item)
+	menu = gtk.Menu()
+	item.set_submenu(menu)
+	item = gtk.MenuItem("Open")
+	open_item = item
+	item.connect("activate", menu_item_activate_cb, "open")
+	menu.append(item)
+	item = gtk.MenuItem("Quit")
+	item.connect("activate", menu_item_activate_cb, "quit")
+	menu.append(item)
+
+	item = gtk.MenuItem("Edit")
+
+	menubar.append(item)
+	menu = gtk.Menu()
+	item.set_submenu(menu)
+	item = gtk.MenuItem("Copy")
+	copy_item = item
+	item.connect("activate", menu_item_activate_cb, "copy")
+	menu.append(item)
+	item = gtk.MenuItem("Paste")
+	item.connect("activate", menu_item_activate_cb, "paste")
+	menu.append(item)
+
+	item = gtk.MenuItem("Help")
+	menubar.append(item)
+	menu = gtk.Menu()
+	item.set_submenu(menu)
+	item = gtk.MenuItem("About")
+	item.connect("activate", menu_item_activate_cb, "about")
+	menu.append(item)
+
+	return menubar
+
+
+window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+window.set_default_size(400, 300)
+window.connect("destroy", gtk.main_quit, None)
+
+vbox = gtk.VBox(False, 0)
+window.add(vbox)
+
+menubar = test_setup_menu()
+vbox.pack_start(menubar, False, True, 0)
+vbox.pack_start(gtk.Label("Some window content here"), True, True, 0)
+
+window.show_all()
+menubar.hide()
+
+syncmenu.takeover_menu(menubar)
+
+gtk.main()
diff --git a/src/roster_window.py b/src/roster_window.py
index d52b149e1..18557f94d 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -61,6 +61,11 @@ if dbus_support.supported:
 	from music_track_listener import MusicTrackListener
 	import dbus
 
+import sys
+if sys.platform == 'darwin':
+	from osx import syncmenu
+
+
 #(icon, name, type, jid, account, editable, second pixbuf)
 (
 C_IMG, # image to show state (online, new message etc)
@@ -903,9 +908,17 @@ class RosterWindow:
 
 		return advanced_menuitem_menu
 
-	def make_menu(self):
-		'''create the main window's menus'''
-		if not self.actions_menu_needs_rebuild:
+	def set_actions_menu_needs_rebuild(self):
+		self.actions_menu_needs_rebuild = True
+		# Force the rebuild now since the on_activates on the menu itself does
+		# not work with the os/x top level menubar
+		if sys.platform == 'darwin':
+			self.make_menu(force = True)
+		return
+
+	def make_menu(self, force = False):
+		'''create the main window\'s menus'''
+		if not force and not self.actions_menu_needs_rebuild:
 			return
 		new_chat_menuitem = self.xml.get_widget('new_chat_menuitem')
 		single_message_menuitem = self.xml.get_widget('send_single_message_menuitem')
@@ -1171,6 +1184,9 @@ class RosterWindow:
 			advanced_menuitem.set_submenu(advanced_sub_menu)
 			advanced_sub_menu.show_all()
 
+		if sys.platform == 'darwin':
+			syncmenu.takeover_menu(self.xml.get_widget('menubar'))
+
 		self.actions_menu_needs_rebuild = False
 
 	def _add_history_manager_menuitem(self, menu):
@@ -1973,7 +1989,7 @@ class RosterWindow:
 		dialogs.AddSpecialNotificationDialog(jid)
 
 	def make_contact_menu(self, event, iter):
-		'''Make contact's popup menu'''
+		'''Make contact\'s popup menu'''
 		model = self.tree.get_model()
 		jid = model[iter][C_JID].decode('utf-8')
 		tree_path = model.get_path(iter)
@@ -2206,7 +2222,7 @@ class RosterWindow:
 			status_menuitems.append(status_menuitem)
 		if len(contacts) > 1: # several resources
 			def resources_submenu(action, room_jid = None, room_account = None):
-				''' Build a submenu with contact's resources.
+				''' Build a submenu with contact\'s resources.
 				room_jid and room_account are for action self.on_invite_to_room '''
 				sub_menu = gtk.Menu()
 
@@ -2767,7 +2783,7 @@ class RosterWindow:
 		menu.popup(None, None, None, event_button, event.time)
 
 	def make_transport_menu(self, event, iter):
-		'''Make transport's popup menu'''
+		'''Make transport\'s popup menu'''
 		model = self.tree.get_model()
 		jid = model[iter][C_JID].decode('utf-8')
 		path = model.get_path(iter)
@@ -3806,6 +3822,10 @@ class RosterWindow:
 						self.chg_contact_status(contact, 'offline', '', account)
 			self.actions_menu_needs_rebuild = True
 		self.update_status_combobox()
+		# Force the rebuild now since the on_activates on the menu itself does
+		# not work with the os/x top level menubar
+		if sys.platform == 'darwin':
+			self.make_menu(force = True)
 
 	def new_private_chat(self, gc_contact, account, session = None):
 		contact = gajim.contacts.contact_from_gc_contact(gc_contact)
@@ -4164,6 +4184,9 @@ class RosterWindow:
 		gtk.main_quit()
 
 	def on_quit_menuitem_activate(self, widget):
+		gobject.idle_add(self.on_quit_menuitem_activate_real, widget)
+
+	def on_quit_menuitem_activate_real(self, widget):
 		accounts = gajim.connections.keys()
 		get_msg = False
 		for acct in accounts:
@@ -5154,6 +5177,52 @@ class RosterWindow:
 			self._last_selected_contact.append((jid, account))
 			self.draw_contact(jid, account, selected = True)
 
+	def setup_for_osx(self):
+		# Massage the GTK menu so it will match up to the OS/X nib style menu
+		# when passed to sync-menu and merged
+		main_menu = self.xml.get_widget('menubar')
+		app_item = gtk.MenuItem('Gajim')
+		main_menu.insert(app_item, 0)
+		win_item = gtk.MenuItem('Window')
+		main_menu.insert(win_item, 4)
+		actions_menu = self.xml.get_widget('actions_menu_menu')
+		quit_item = self.xml.get_widget('quit_menuitem')
+		actions_menu.remove(quit_item)
+		actions_menu.remove(self.xml.get_widget('separator1'))
+		edit_menu = self.xml.get_widget('edit_menu_menu')
+		edit_menu.remove(self.xml.get_widget('preferences_menuitem'))
+		edit_menu.remove(self.xml.get_widget('separator2'))
+		help_menu = self.xml.get_widget('help_menu_menu')
+		about_item = self.xml.get_widget('about_menuitem')
+		help_menu.remove(about_item)
+		# Build up App menu
+		app_menu = gtk.Menu()
+		app_item.set_submenu(app_menu)
+		app_menu.append(about_item)
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		prefs_item = gtk.MenuItem('Preferences...')
+		prefs_item.connect("activate", self.on_preferences_menuitem_activate)
+		accels = gtk.AccelGroup()
+		self.xml.get_widget('roster_window').add_accel_group(accels)
+		prefs_item.add_accelerator('activate', accels, ord(','),
+								   gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+		app_menu.append(prefs_item)
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(gtk.MenuItem('__SKIP__'))
+		app_menu.append(quit_item)
+		app_menu.show_all()
+		# Do the merge baby!
+		syncmenu.takeover_menu(main_menu)
+		self.make_menu(force = True)
+		# Hide the GTK menubar itself and let the OS/X menubar do its thing
+		self.xml.get_widget('menubar').hide()
+		return
+
 	def __init__(self):
 		self.xml = gtkgui_helpers.get_glade('roster_window.glade')
 		self.window = self.xml.get_widget('roster_window')
@@ -5370,3 +5439,6 @@ class RosterWindow:
 			# Create zeroconf in config file
 			zeroconf = common.zeroconf.connection_zeroconf.ConnectionZeroconf(
 				gajim.ZEROCONF_ACC_NAME)
+
+		if sys.platform == 'darwin':
+			self.setup_for_osx()
diff --git a/src/statusicon.py b/src/statusicon.py
index 1f2316015..4a49f8669 100644
--- a/src/statusicon.py
+++ b/src/statusicon.py
@@ -19,12 +19,16 @@
 ## along with Gajim.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
+import sys
 import gtk
 import systray
 
 from common import gajim
 from common import helpers
 
+if sys.platform == 'darwin':
+	import osx
+
 class StatusIcon(systray.Systray):
 	'''Class for the notification area icon'''
 	#FIXME: when we migrate to GTK 2.10 stick only to this class
@@ -44,13 +48,15 @@ class StatusIcon(systray.Systray):
 				self.on_status_icon_right_clicked)
 
 		self.set_img()
-		self.status_icon.props.visible = True	
+		self.status_icon.set_visible(True)
+		self.subscribe_events()
 
 	def on_status_icon_right_clicked(self, widget, event_button, event_time):
 		self.make_menu(event_button, event_time)
 
 	def hide_icon(self):
-		self.status_icon.props.visible = False
+		self.status_icon.set_visible(False)
+		self.unsubscribe_events()
 
 	def on_status_icon_left_clicked(self, widget):
 		self.on_left_click()
@@ -62,16 +68,18 @@ class StatusIcon(systray.Systray):
 		text = helpers.get_notification_icon_tooltip_text()
 		self.status_icon.set_tooltip(text)
 		if gajim.events.get_nb_systray_events():
+			if sys.platform == 'darwin':
+				osx.nsapp.requestUserAttention()
 			state = 'event'
-			self.status_icon.props.blinking = True
+			self.status_icon.set_blinking(True)
 		else:
 			state = self.status
-			self.status_icon.props.blinking = False
+			self.status_icon.set_blinking(False)
 		
 		#FIXME: do not always use 16x16 (ask actually used size and use that)
 		image = gajim.interface.roster.jabber_state_images['16'][state]
 		if image.get_storage_type() == gtk.IMAGE_PIXBUF:
-			self.status_icon.props.pixbuf = image.get_pixbuf()
+			self.status_icon.set_from_pixbuf(image.get_pixbuf())
 		#FIXME: oops they forgot to support GIF animation?
 		#or they were lazy to get it to work under Windows! WTF!
 		#elif image.get_storage_type() == gtk.IMAGE_ANIMATION: