++ed by:

9 PAUSE users
5 non-PAUSE users.

Torsten Schönfeld
and 1 contributors


Gtk3 - Perl interface to the 3.x series of the gtk+ toolkit


  use Gtk3 -init;
  my $window = Gtk3::Window->new ('toplevel');
  my $button = Gtk3::Button->new ('Quit');
  $button->signal_connect (clicked => sub { Gtk3::main_quit });
  $window->add ($button);


Perl bindings to the 3.x series of the gtk+ toolkit. This module allows you to write graphical user interfaces in a Perlish and object-oriented way, freeing you from the casting and memory management in C, yet remaining very close in spirit to original API.


The Gtk3 module allows a Perl developer to use the gtk+ graphical user interface library. Find out more about gtk+ at http://www.gtk.org.

The gtk+ reference manual is also a handy companion when writing Gtk3 programs in Perl: http://developer.gnome.org/gtk3/stable/. The Perl bindings follow the C API very closely, and the C reference documentation should be considered the canonical source.

To discuss Gtk3 and ask questions join gtk-perl-list@gnome.org at http://mail.gnome.org/mailman/listinfo/gtk-perl-list.

Also have a look at the gtk2-perl website and sourceforge project page, http://gtk2-perl.sourceforge.net.

Porting from Gtk2 to Gtk3

The majority of the API has not changed, so as a first approximation you can run s/Gtk2/Gtk3/ on your application. A big exception to this rule is APIs that were deprecated in gtk+ 2.x -- these were all removed from gtk+ 3.0 and thus from Gtk3. The migration guide at http://developer.gnome.org/gtk3/stable/migrating.html describes what to use instead. Apart from this, here is a list of some other incompatible differences between Gtk2 and Gtk3:

  • The call syntax for class-static methods is now always Gtk3::Stock::lookup instead of Gtk3::Stock->lookup.

  • The %Gtk2::Gdk::Keysyms hash is gone; instead of Gtk2::Gdk::Keysyms{XYZ}, use Gtk3::Gdk::KEY_XYZ.

  • The Gtk2::Pango compatibility wrapper was not carried over; simply use the namespace "Pango" everywhere. It gets set up automatically when loading Gtk3.

  • The Gtk3::Menu menu position callback passed to popup() does not receive x and y parameters anymore.

Note also that Gtk3::CHECK_VERSION will always fail when passed 2.y.z, so if you have any existing version checks in your code, you will most likely need to remove them.




Torsten Schönfeld <kaffeetisch@gmx.de>


Copyright (C) 2011-2012 by Torsten Schoenfeld <kaffeetisch@gmx.de>

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.