diff --git a/.gitignore b/.gitignore
index 2e67f12d..81aa6085 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@
*.orig
*~
*.swp
-
+.DS_Store
*_enterprise.*
.settings/
diff --git a/client/macosx/.gitignore b/client/macosx/.gitignore
new file mode 100644
index 00000000..144568b8
--- /dev/null
+++ b/client/macosx/.gitignore
@@ -0,0 +1,3 @@
+build
+dist
+udsclient.dmg
diff --git a/client/macosx/Info.plist b/client/macosx/Info.plist
new file mode 100644
index 00000000..a34f9069
--- /dev/null
+++ b/client/macosx/Info.plist
@@ -0,0 +1,114 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleDisplayName
+ udsclient
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeOSTypes
+
+ ****
+ fold
+ disk
+
+ CFBundleTypeRole
+ Viewer
+
+
+ CFBundleExecutable
+ udsclient
+ CFBundleIconFile
+ PythonApplet.icns
+ CFBundleIdentifier
+ org.openuds.udsclient
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ udsclient
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 0.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 0.0.0
+ CFBundleURLTypes
+
+
+ CFBundleURLName
+ UDS Client
+ CFBundleURLSchemes
+
+ uds
+
+
+
+ LSHasLocalizedDisplayName
+
+ NSAppleScriptEnabled
+
+ NSHumanReadableCopyright
+ Copyright not specified
+ NSMainNibFile
+ MainMenu
+ NSPrincipalClass
+ NSApplication
+ PyMainFileNames
+
+ __boot__
+
+ PyOptions
+
+ alias
+
+ argv_emulation
+
+ emulate_shell_environment
+
+ no_chdir
+
+ prefer_ppc
+
+ site_packages
+
+ use_faulthandler
+
+ use_pythonpath
+
+ verbose
+
+
+ PyResourcePackages
+
+
+ PyRuntimeLocations
+
+ @executable_path/../Frameworks/Python.framework/Versions/2.7/Python
+ /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/Python
+
+ PythonInfoDict
+
+ PythonExecutable
+ /usr/local/opt/python/bin/python2.7
+ PythonLongVersion
+ 2.7.9 (default, Feb 10 2015, 03:29:19)
+[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)]
+ PythonShortVersion
+ 2.7
+ py2app
+
+ alias
+
+ template
+ app
+ version
+ 0.9
+
+
+
+
diff --git a/client/macosx/build.sh b/client/macosx/build.sh
new file mode 100755
index 00000000..5145d088
--- /dev/null
+++ b/client/macosx/build.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+python setup.py py2app --optimize 2 --plist Info.plist
+rm udsclient.dmg
+hdiutil create -srcfolder dist/udsclient.app udsclient.dmg
diff --git a/client/macosx/setup.py b/client/macosx/setup.py
new file mode 100644
index 00000000..4f1a4bca
--- /dev/null
+++ b/client/macosx/setup.py
@@ -0,0 +1,22 @@
+"""
+This is a setup.py script generated by py2applet
+
+Usage:
+ python setup.py py2app
+"""
+
+from setuptools import setup
+
+APP = ['udsclient.py']
+DATA_FILES = []
+OPTIONS = {
+ 'argv_emulation': True,
+ 'plist': 'Info.plist',
+}
+
+setup(
+ app=APP,
+ data_files=DATA_FILES,
+ options={'py2app': OPTIONS},
+ setup_requires=['py2app'],
+)
diff --git a/client/macosx/test.html b/client/macosx/test.html
new file mode 100644
index 00000000..ac73805e
--- /dev/null
+++ b/client/macosx/test.html
@@ -0,0 +1,6 @@
+
+
+
+Test uds
+
+
diff --git a/client/macosx/udsclient.py b/client/macosx/udsclient.py
new file mode 100755
index 00000000..fd8804c3
--- /dev/null
+++ b/client/macosx/udsclient.py
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import Tkinter
+
+top = Tkinter.Tk()
+
+top.mainloop()