gtkmm is the official C++ interface for the popular GUI library GTK+. Highlights include typesafe callbacks, and a comprehensive set of widgets that are easily extensible via inheritance. You can create user interfaces either in code or with the Glade User Interface designer, using Gtk::Builder. There's extensive documentation, including API reference and a tutorial.

gtkmm is free software distributed under the GNU Library General Public License (LGPL).

gtkmm follows the official GNOME Platform Bindings release schedule. This guarantees API/ABI-stability and new releases on a predictable schedule, delivering C++ API for the underlying GTK+ and GNOME APIs as soon as possible.


  • Use inheritance to derive custom widgets.
  • Type-safe signal handlers, in standard C++.
  • Polymorphism.
  • Use of Standard C++ Library, including strings, containers, and iterators.
  • Full internationalisation with UTF8.
  • Complete C++ memory management
    • Object composition
    • Automatic deallocation of dynamically allocated widgets.
  • Full use of C++ namespaces.
  • No macros.
  • Cross-platform: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC++ .Net 2003, 2005, 2008), MacOS X (gcc), others
  • Free software and free of cost for both Open Source and proprietary development.
  • Discussed, designed and implemented in public.

Other gtkmm-related libraries


gtkmm is a GUI toolkit and nothing more, and it strives to be the best C++ GUI toolkit. That mandate does not cover generic C++ data structures, an XML parser, or database access. Even our signal/slots system is part of a separate (libsigc++) library. However, gtkmm is designed to work well with all other C++ libraries.

The gnomemm libraries cover some of these other tasks, but they are optional.


Also, be sure to check out our companion libraries, glibmm (UTF8 strings, threading, etc) and libsigc++ (signal/slots).


Be sure to check out Bakery, a framework for constructing gtkmm/gnomemm applications. It allows use of the Document/View architecture.