HaskellWiki

Haskell | Wiki community | Recent changes
Random page | Special pages

 

Not logged in
Log in | Help

Request an account if you don't have one.

Gtk2Hs

Categories: User interfaces | Applications

Contents

1 What is it?

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

2 Homepage

http://haskell.org/gtk2hs/

3 Tutorials and Demos

http://www.haskell.org/haskellwiki/Gtk2Hs/Tutorials

http://darcs.haskell.org/gtk2hs/docs/tutorial/Tutorial_Port/

Some demonstration programs can be found at:

http://darcs.haskell.org/gtk2hs/demo/

4 Status

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

5 Installation Notes

5.1 Mac OS X

5.1.1 Using MacPorts and Snow Leopard

This explains how to install Gtk2Hs-0.10.1 on Mac OS X 10.6 Snow Leopard, in combination with GTK+ from MacPorts.

sudo port install gtk +universal
./configure --disable-split-objs --disable-gio
make
sudo make install

Alternatively, if you wish to follow the Mac OS X style of directory layout, you can use this configure command instead:

./configure --with-pkgconf=/Users/username/.ghc/i386-darwin-6.10.4/package.conf --prefix=/Users/username/Library/Haskell/packages/gtk2hs --disable-split-objs --disable-gio

Where username is your username ofcourse. Right now you should be able to run the demos. Unfortunately, to build any libraries depending on gtk2hs, such as Chart, you need to edit one more file. You will need to find "package.conf" for your ghc by doing

ghc-pkg list

In the output you will see the full directory to your package.conf file. In this file, you need to search for "gthread", and everywhere you can find it, add "/opt/local/lib" (with quotes) to the libraryDirs array before it.

If all went well, it should be properly installed now.

NB: If compiling fails with architecture errors for certain dynlibs, you need to reinstall the packages these dynlibs belong to with +universal by doing

sudo port upgrade packagename --enforce-variants +universal

Alternatively, and this is recommended, you can follow the steps on Haskell On Snow Leopard Blogpost to immediately add the universal variant of each package:

  1. Edit /opt/local/macports/variants.conf and add +universal to the end of this file
  2. sudo port selfupdate
  3. sudo port sync
  4. sudo port upgrade --force-installed

5.1.2 Using the GTK+ OS X Framework

This explains how to install Gtk2Hs on Macs using the native GTK+ OS X Framework, a port of GTK+ to the Mac that does not depend on X11, and hence, is better integrated into the Mac desktop - i.e., menus actually appear in the menu bar, where they belong. It also avoids the often tedious installation of GTK+ via MacPorts. However, it misses support for optional Gtk2Hs packages that are currently not supported by the GTK+ OS X Framework, most notably support for Glade. It does include support for Cairo, though.

Here is how to install the library:

  1. Download and install GTK+ OS X Framework (this uses the standard Mac package installer).
  2. Install pkg-config, either by compiling it from source or via MacPorts.
  3. Download and unpack the Gtk2Hs tar ball from the Gtk2Hs download page (I tested 0.10.0).
  4. Configure with (you may want to remove the two backslashes and put everything on one line)
     env PKG_CONFIG_PATH=/Library/Frameworks/Cairo.framework/Resources/dev/lib/pkgconfig:\ 
     /Library/Frameworks/GLib.framework/Resources/dev/lib/pkgconfig:\ 
     /Library/Frameworks/Gtk.framework/Resources/dev/lib/pkgconfig ./configure --disable-gio
  1. Build with
     make
  1. Install (to /usr/local/ unless a --prefix option was passed to configure) with
     sudo make install

The library is now registered with the package database of the GHC you used for compiling.

NB: Thanks to Ross Mellgren for his post on the gtk2hs-users list that outlined the use of PKG_CONFIG_PATH.

5.1.3 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 install glade3 libglade2 gstreamer gst-plugins-base gtksourceview cairo librsvg gtkglext firefox
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/local/lib/pkgconfig
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"
**************************************************
make 
sudo make install

5.1.4 Recent experiences

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

Good luck - as usual, your mileage may vary.

6 Demos

6.1 OpenGL and Gtk2Hs

Gtk2Hs/Demos/GtkGLext/hello.hs

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

7 FAQs

These are links to FAQS on the main site.

Retrieved from "http://www.haskell.org/haskellwiki/Gtk2Hs"

This page has been accessed 7,861 times. This page was last modified 22:25, 3 February 2010. Recent content is available under a simple permissive license.