Personal tools

Gtk2Hs

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Using MacPorts and Snow Leopard: this works out of the box now)
Current revision (20:16, 1 December 2012) (edit) (undo)
(delete outdated links + update some of the information)
 
(24 intermediate revisions not shown.)
Line 7: Line 7:
== Homepage ==
== Homepage ==
-
http://haskell.org/gtk2hs/
+
http://projects.haskell.org/gtk2hs/
== Tutorials and Demos ==
== Tutorials and Demos ==
http://www.haskell.org/haskellwiki/Gtk2Hs/Tutorials
http://www.haskell.org/haskellwiki/Gtk2Hs/Tutorials
-
 
-
http://darcs.haskell.org/gtk2hs/docs/tutorial/Tutorial_Port/
 
Some demonstration programs can be found at:
Some demonstration programs can be found at:
-
http://darcs.haskell.org/gtk2hs/demo/
+
http://code.haskell.org/gtk2hs/gio/demo/
 +
http://code.haskell.org/gtk2hs/pango/demo/
 +
http://code.haskell.org/gtk2hs/cairo/demo/
 +
http://code.haskell.org/gtk2hs/gtk/demo/
== Status ==
== Status ==
-
It currently works with Gtk+ 2.0 through to 2.8 on Unix, Win32 and MacOS X.
+
See [[Gtk2Hs/Installation#Supported_Versions]] for details on which systems should be able to build Gtk2Hs and which are known to be able to build Gtk2Hs.
-
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 ==
== Installation Notes ==
-
=== Mac OS X ===
 
-
 
-
==== 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.
 
-
 
-
* Install the [http://hackage.haskell.org/platform/ Haskell Platform] for Mac
 
-
* Download gtk2hs from [http://www.haskell.org/gtk2hs/ gtk2hs website] and untar it.
 
-
* Install gtk, cairo, etc. from MacPorts like this (note that the +universal is needed; if you already installed gtk or one of its dependencies, it is recommended you reinstall those as detailed in the NB at the end of this section).
 
-
:::sudo port install gtk +universal
 
-
* Edit /usr/bin/hsc2hs and change --cflag="-m32" and --lflag="-m32", which were specified in the [http://www.haskell.org/haskellwiki/Mac_OS_X/ HaskellWiki on Snow Leopard], to --cflag="-optc-m32" --lflag="-optl-m32"
 
-
* go to the directory where gtk2hs is untarred and run
 
-
:::./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 [http://hackage.haskell.org/package/Chart/ 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 [http://passingcuriosity.com/2009/haskell-on-snow-leopard/ Haskell On Snow Leopard Blogpost] to immediately add the universal variant of each package:
 
-
# Edit /opt/local/macports/variants.conf and add +universal to the end of this file
 
-
# sudo port selfupdate
 
-
# sudo port sync
 
-
# sudo port upgrade --force-installed
 
-
 
-
==== Using the GTK+ OS X Framework ====
 
-
 
-
This explains how to install Gtk2Hs on Macs using the native [http://www.gtk-osx.org/ 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 [http://www.gtk-osx.org/ GTK+ OS X Framework], most notably support for Glade. It does include support for Cairo, though.
 
-
 
-
Here is how to install the library:
 
-
# Download and install [http://www.gtk-osx.org/ GTK+ OS X Framework] (this uses the standard Mac package installer).
 
-
# Install [http://pkg-config.freedesktop.org/ pkg-config], either by compiling it from source or via MacPorts.
 
-
# Download and unpack the Gtk2Hs tar ball from the [http://www.haskell.org/gtk2hs/download/ Gtk2Hs download page] (I tested 0.10.0).
 
-
# 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
 
-
# Build with
 
-
make
 
-
# Install (to <tt>/usr/local/</tt> unless a <tt>--prefix</tt> option was passed to <tt>configure</tt>) 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 <tt>PKG_CONFIG_PATH</tt>.
 
-
 
-
==== 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.)
 
-
 
-
* Install [http://macports.org MacPorts]
 
-
* Install dependencies:
 
-
sudo port install 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 <tt>ghc</tt> driver program and change the last line to:
 
-
exec $GHCBIN $TOPDIROPT ${1+"$@"} -L/opt/local/lib -I/opt/local/include
 
-
* Download Gtk2Hs following instructions at [http://www.haskell.org/gtk2hs/downloads/ Gtk2Hs Download page]
 
-
* Check configuration:
 
-
./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:
 
-
make
 
-
sudo make install
 
-
==== Recent experiences ====
+
See [[Gtk2Hs/Installation]].
-
I successfully installed the latest version on Mac OS 10.5 by:
+
-
* Installing Macports.
+
-
* <tt>sudo port install ghc</tt>
+
-
* <tt>sudo port install gtk2hs</tt> - 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. Also note that ghc configure will give up if your perl5.8 is not new enough, if so deactivate it and try again.
+
-
* Remove the build directory under <tt>/opt/.../build/gtk2hs</tt>
+
-
* Download Gtk2Hs via darcs as per [http://haskell.org/gtk2hs/development/#darcs the gtk2hs download instructions]
+
-
* do a <tt>sudo port install automake</tt>
+
-
* do a <tt>sudo port install alex</tt>
+
-
* do a <tt>sudo port install happy</tt> (Note this also fails and must be built from source. See the [[Happy]] page for details.)
+
-
* Follow the build instructions on the [http://haskell.org/gtk2hs/development/#darcs the gtk2hs download page]. I would suggest using <tt>./configure --prefix=/opt/local</tt> to get it in the same place as ports - personal preference though.
+
-
Good luck - as usual, your mileage may vary.
+
== Demos ==
== Demos ==
Line 146: Line 38:
These are links to FAQS on the main site.
These are links to FAQS on the main site.
*[http://haskell.org/gtk2hs/archives/2005/06/23/hiding-the-console-on-windows/#more-26 Hiding the console on windows]
*[http://haskell.org/gtk2hs/archives/2005/06/23/hiding-the-console-on-windows/#more-26 Hiding the console on windows]
-
*[http://haskell.org/gtk2hs/archives/2005/07/24/writing-multi-threaded-guis/#more-38 Writing multi-threaded GUIs]
 
-
*[http://haskell.org/gtk2hs/archives/2005/06/24/building-from-source-on-windows/#more-15 Building on Windows]
 
*[http://haskell.org/gtk2hs/development/#darcs Checkout instructions]. Also see [[Darcs]]
*[http://haskell.org/gtk2hs/development/#darcs Checkout instructions]. Also see [[Darcs]]
[[Category:Applications]]
[[Category:Applications]]

Current revision

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://projects.haskell.org/gtk2hs/

3 Tutorials and Demos

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

Some demonstration programs can be found at:

http://code.haskell.org/gtk2hs/gio/demo/
http://code.haskell.org/gtk2hs/pango/demo/
http://code.haskell.org/gtk2hs/cairo/demo/
http://code.haskell.org/gtk2hs/gtk/demo/

4 Status

See Gtk2Hs/Installation#Supported_Versions for details on which systems should be able to build Gtk2Hs and which are known to be able to build Gtk2Hs.

5 Installation Notes

See Gtk2Hs/Installation.

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.