Gtk# 2.0 has been released.
Table of contents
Gtk#, a GUI Toolkit, is a set of .NET bindings for the gtk+ toolkit and assorted GNOME libraries. This library allows you to build fully native graphical Gnome application using Mono. GTK# is an event-driven system like any other modern windowing library. Every widget in an application has handler methods that get called when particular events happen.
Applications built using Gtk# will run on many platforms including Linux, Windows and MacOS X. Gtk is the native toolkit for the Linux desktop running GNOME, so applications will look and function best on here. The Mono packages for Windows include Gtk, Gtk# and the native theme to make your applications look like native Windows applications. At this point, running Gtk# applications on MacOS requires the user to run the X11 server.
In addition to support the standard Gtk/Gnome stack of development tools, the gtk-dotnet.dll assembly provides a bridge to consume functionality available on the .NET stack, at this point this includes the functionality to use System.Drawing to draw on a widget.
See the sample in gtk-sharp/samples/DrawingSample.cs for details.
Gtk# is available for both Unix and Windows.
Beginning to use Gtk#
- Beginners Guide to Gtk#
- An overview of Gtk# and step-by-step description of a simple application.
- Gtk# "Hello World" in C# and VB.NET
- A short 'Hello World' style introduction to Gtk#
- Gtk# in MonoDevelop
- Creating a Gtk# application with Monodevelop's GUI designer, Stetic.
Gtk# GUI details and techniques
- Overview of the widgets used in Gtk#
- Widget Layout and Packing
- Creating Responsive GUI applications with Gtk#
- Creating Notification Icons
- Gtk# used as a Web Service Interface
- Gtk# example used to access GConf settings
- Generating bindings to GLib/gobject libraries
- Quick guide to using Pango#
- Gtk# TreeView Tutorial
- Implementing GInterfaces in Gtk#
Extending your GUI
- Cross platform
Other Gtk# Tutorials
- Video demonstrating how to create a "Hello World" application using Gtk# and glade
- Creating your first "hello world" Gtk# application using MonoDevelop
- An old collection of documentation for Gtk#, it would be great if someone could go through this and insert it all into the wiki
- How to build a Gtk# application in Windows using glade and Visual Studio.Net 2003
User testimonials indicate that Gtk# provides developers with great productivity for building graphical applications especially when compared to GTK+ or Java Swing : "Gtk# and Mono have proven to be an outstanding combination for delivering rich client applications to the Linux desktop...Gtk# and Mono's tight integration with the GNOME/Ximian desktop enables us to deliver desktop plugins written entirely in managed code. Today, this level of integration is not possible on Windows with .NET and Windows Forms." says Brady Anderson from the iFolder project.
The following is a list of additional widgets (known as "controls" in Windows) that people have written to extend Gtk#:
- NPlot 0.9.8.5 for Gtk# - A Free Graph / Chart Library for .NET (Original version: here).
- DiaCanvas# - Create and display diagrams and flowcharts
- GtkGL# - OpenGL and Gtk# integration. Not maintained.
- GtkGLAreaSharp - OpenGL widget, based on the GtkGLArea widget. Currently maintained by User:CJCollier
This library provides access to the Gnome Keyring for managed applications.
This library provides access to reading and writing structured files (OLE files), this depends on the libgsf library from the GNOME project:
A binding for GtkGlArea, a widget that can host an OpenGL context in your Gtk# application.
This library provides access to the Mozilla rendering engine with Gtk+ using the GtkMozEmbed widget:
Bindings to the GtkSourceView widget, this widget is typically used for writing programmer editors.
This library provides access to the Hardware Abstraction Layer (HAL) from FreeDesktop.
This is used when you need to interact with the hardware. For example Banshee uses this to detect new media (reading and burning).
DBus Sharp is an implementation of the DBus protocol for managed languages. DBus allows applications on the Unix desktop to communicate with each others and is part of the FreeDesktop effort.
ipod-sharp is a library that allows manipulation of the iTunesDB used in Apple iPod devices. Currently it supports adding/removing songs and manipulating playlists.
Maemo# is a Gtk# bindings for Maemo libraries.
The first version of NPlot-Gtk was made by Miguel de Icaza, and was a wrapper of NPlot 0.9.8.5.
Now the wrapper of version 0.9.9.2 has just an NPlot upgrade and a few hacks over the work of Miguel (Carlos)
This version of NPlot has been extended to support Gtk# on Linux.
TagLibSharp is a free and Open Source library for the .NET 2.0 and Mono frameworks which will let you do what you want to do.
It supports a large variety of movie and music formats which abstract away the work, handling all the different cases, so all you have to do is access file.Tag.Title, file.Tag.Lyrics, or my personal favorite file.Tag.Pictures.
A library for reading and writing metadata from audio files.
daap-sharp is a DAAP (Digial Audio Access Protocol) implementation. It is used by Apple's iTunes software to share music.
Supports the ZeroConf/Bonjour protocol using mdnsdresponder or Avahi.
If you know of anything else that should be added to this page, let someone in #mono know.
Gtk# is composed of three modules: gtk-sharp, gnome-sharp, and gnome-desktop-sharp.
|glib-sharp||Portions of the glib 2.x libraries which provide a low-level non-GUI core library for gtk+.|
|pango-sharp||The Pango international text layout and rendering library.|
|atk-sharp||The atk Accessibility framework.|
|gdk-sharp||Drawing Kit using by gtk+.|
|gtk-sharp||The Gtk 2.x toolkit, a cross-platform toolkit for creating graphical user interfaces|
|glade-sharp||Supports dynamic loading of Glade interface builder files.|
|gtk-dotnet||Integration of the Gtk# namespace with System.Drawing.|
|art-sharp||A vector and rendering library.|
|gnome-sharp*||GNOME program initialization, printing, panel access, and assorted widgets.|
|gnomevfs-sharp*||File, MIME type, icon, and various GNOME file system interaction functionality.|
|gconf-sharp*||Configuration storage system on Gnome|
|gtkhtml-sharp*||A lightweight HTML widget.|
|gtksourceview2-sharp*||A source code editing and viewing widget library.|
|nautilusburn-sharp*||GNOME CD/DVD burning library.|
|rsvg-sharp||SVG rendering library.|
|vte-sharp*||The VTE terminal emulator.|
|wnck-sharp*||Window navigator construction kit library.|
* Not not available on the Windows GTK# package
Versions & Status
You might want to subscribeto firstname.lastname@example.org for status updates and general discussion.
- Gtk# 2.4 This is the current versions of Gtk# and they bind Gtk+ 2.4 and the GNOME 2.10 platform.
- Gtk# 1.0.x: this is the old version of Gtk# and it binds the GNOME 2.2 platform.
- SVN branch name: source/branches/gtk-sharp-1-0-branch/gtk-sharp
For more details about the versions and future plans see: GtkSharpPlan.
Development is occuring on svn trunk at: source/trunk/gtk-sharp
Migrating from 1.x to 2.x
See our page on upgrading your Gtk# application
We are keeping track of various ideas for Gtk# on the GtkSharpIdeas page
A place to track how Gtk+ can be improved on Windows.
For specific examples on GTK widgets, and other Gtk related topics, click on the GtkSharp category at the bottom of this page.