From HaskellWiki
Revision as of 17:22, 17 December 2008 by BrettGiles (talk | contribs) (Mac OS X: Add recent experience)

Jump to: navigation, search

What is it?

Gtk2Hs is a Haskell binding to Gtk+ 2.x. Using it, one can write Gtk+ based applications with GHC.



It currently works with Gtk+ 2.0 through to 2.8 on Unix, Win32 and MacOS X. The widget function coverage is almost complete, only a few minor bits and pieces are missing.

It currently builds with ghc 5.04.3 through to 6.8.2

Installation Notes

Mac OS X

Article as of Mid 2008

Installing Gtk2Hs on Mac requires some finesse, at least until Haskell Libary Platform is built or ghc-6.8.3 is available in macports. (These are planned for late 2008.)

sudo port instll glade3 libglade2 gstreamer gst-plugins-base gtksourceview cairo librsvg gtkglext firefox
  • Update PKG_CONFIG_PATH (for libraries)
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/local/lib/pkgconfig
  • Update ghc to use macports libs: Edit your main ghc driver program and change the last line to:
exec $GHCBIN $TOPDIROPT ${1+"$@"} -L/opt/local/lib -I/opt/local/include
./configure --enable-docs --enable-profiling


* Configuration completed successfully.           
* The following packages will be built:           
* glib          : yes                             
* gtk           : yes                             
* glade         : yes              
* cairo         : yes                 
* svgcairo      : yes              
* gtkglext      : yes              
* gconf         : yes                 
* sourceview    : yes            
* mozembed      : yes              
* soegtk        : yes                             
* gnomevfs      : yes              
* gstreamer     : yes             
* documentation : yes                    
* Now do "(g)make" followed by "(g)make install"
  • Build and Install:
sudo make install

Recent experiences

I successfully installed the latest version on Mac OS 10.5 by:

  • Installing Macports.
  • sudo port install ghc
  • sudo port install gtk2hs - which does not complete successfully. It does however, install the appropriate dependencies. Note that there are so many, you may need to install a couple of times due to time outs etc.. The build of Gtk2HS will fail, but that is ok - continue as below.
  • Remove the build directory under /opt/.../build/gtk2hs
  • Download Gtk2Hs via darcs as per the gtk2hs download instructions
  • do a sudo port install automake
  • do a sudo port install alex
  • do a sudo port install happy (Note this also fails and must be built from source. See the Happy page for details.)
  • Follow the build instructions on the the gtk2hs download page. I would suggest using ./configure --prefix=/opt/local to get it in the same place as ports - personal preference though.

Good luck - as usual, your mileage may vary.


OpenGL and Gtk2Hs


Gtk2Hs/Demos/GtkGLext/terrain.hs requires Gtk2Hs/Demos/GtkGLext/terrain.xpm


These are links to FAQS on the main site.