Skip to content
Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono
Branch: master
Clone or download
akoeplinger Use csc instead of mcs (#273)
mcs sets the timestamp in the PE header to 0 which breaks some MS internal tools, let's use csc instead.
Latest commit 05e47a4 May 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
atk Update atk to version 2.14.0 Apr 16, 2016
audit Use csc instead of mcs (#273) May 20, 2019
cairo Fixed a typo Nov 12, 2015
doc Convert some source files to Unix line endings May 25, 2015
gdk Fix cairo context memory leak Oct 28, 2016
generator [Generator] Don't try to reconstruct the value on a struct parameter … Jul 21, 2016
gio Update glib API to version 2.42.2 Apr 30, 2016
glib ValueArray: Create copy when receiving pointer (#260) Jan 26, 2019
gtk Fixes MONO_PROFILE_ENTER_LEAVE undeclared when compiling with newer v… Mar 12, 2019
gtkdotnet gdk: Fix dll name and use a const for all DllImports in custom code May 4, 2014
msi build: Require GLib 2.32 or above Aug 10, 2014
pango Update pango API to version 1.36.8 May 1, 2016
parser parser: ignore GDK_PIXBUF_VAR Apr 29, 2016
sample Fix build failure with mcs caused by C#8 changes in mcs (#263) Feb 20, 2019
sources Update pango API to version 1.36.8 May 1, 2016
.gitattributes Add a .gitattributes file to have git keep CRLF endings in *.sln files May 25, 2015
.gitignore .gitignore: add autotools' `compile` May 29, 2014
AUTHORS release: Update AUTHORS for 2.99.1 Sep 22, 2013 Remove ClassInitializer attributes. Feb 9, 2011
COPYING Replaced COPYING with LGPL2-only license Nov 17, 2012
ChangeLog.old Archive Changelog as Changelog.old Oct 14, 2012
HACKING Update various bits of documentation in READMEs and HACKING Oct 14, 2012 Update the Windows installer infrastructure for GTK+ 3 May 24, 2014
Makefile.include Use csc instead of mcs (#273) May 20, 2019
NEWS release: Fix indentation of NEWS Jun 6, 2014
README Add Gitter link Feb 23, 2018
README.generator silly typo Apr 16, 2006
TODO Update TODO Oct 14, 2012 build: Make libtoolize quiet, it's not that interesting May 24, 2014 Use csc instead of mcs (#273) May 20, 2019
gapi.xsd generator: Add support for fixed length arrays as method parameters Apr 21, 2014
gtk-sharp.sln Commit sln with crlf. Aug 30, 2016
gtk-sharp.snk Add gtk-sharp.snk Jun 8, 2004 2005-09-21 Mike Kestner <> Sep 22, 2005


The Gtk# website can be found at:

Gtk# is a .NET language binding for the GTK+ toolkit and assorted GNOME
libraries. Gtk# is free software, licensed under the GNU LGPL.

Building & Installing Gtk#:

    Install the gtk-3 development headers first. On Debian, this can be done using:
    apt-get install libgtk-3-dev

    The build is the traditional:

        make install

    You may want to consider using configure's prefix option to install
    Gtk# using the same prefix as Mono.  That way all of your .NET assemblies
    get placed in the same place, and you don't need to do any extra "configuring"
    to make it so mono (and mint) can find your assemblies.  In other words,
    doing something like:

        ./configure --prefix=`pkg-config --variable=prefix mono`
        make install

    If you are compiling from GIT, you will need libtool and the auto* tools
    and will need to replace the configure above with

The gui-thread-check profiler module.

    Since version 3 of gtk# a profiler called "gui-thread-check" is included as
    part of the install for debugging purposes. (It's located in the subfolder
    gtk/gui-thread-check .)

    This profiler module can be used to check if a GTK# application is trying to
    invoke gtk or gdk methods from a thread which is not the main GUI thread.

    To use it, run your application with the command:

        mono --profile=gui-thread-check yourapp.exe

    If the profiler is properly installed, you'll see an output like this:

        *** Running with gui-thread-check ***
        *** GUI THREAD INITIALIZED: 2861676352

    While the application is running, if the profiler detects a non-gui thread
    invoking gtk methods, it will print a warning message together with a
    stack trace. For example:

        *** GTK CALL NOT IN GUI THREAD: Widget.gtk_widget_get_parent

Discussion & Support:

    A mailing list for Gtk# discussion is available.

    You can subscribe to the mailing list by visiting:

    And following the instructions (on that page) to subscribe.
    Messages are posted on this mailing list by sending them to:

    (The mailing list requires you to subscribe in order to post

    An archive of this mailing list can be found at:

    Also, people can get help with and discuss Gtk# on IRC via the
    #gtk# or #mono channels on the IRC server.

    People looking for general help with C# should visit the
    #c# channel on IRC server.


    For developers wishing to "get started" with Gtk#, they are encouraged
    to read the Mono Hand Book:


    For those who wish to help with the development of Gtk#, they should
    read the file named: HACKING.

    Also, anyone wishing to hack Gtk# is encouraged to join the Gtk#
    mailing list. And to visit the #gtk# IRC channel (on

Join the chat at
You can’t perform that action at this time.