GUI Toolkits Overview for Mono

Miguel de Icaza (miguel.de.icaza@gmail.com)
Last Update: Nov 15th, 2005

There are a number of GUI toolkit options available for developers using the Mono platform, at various degrees of completion and various degrees of functionality. I present here some of the options available.

Gtk#: http://gtk-sharp.sf.net

This toolkit is a .NET binding for the Gtk+ toolkit. It is in active development, and there are various applications in the Mono world that use it: Monodoc, Monocov, Mono's Debugger, Muine, Tomboy, Dashboard, F-Spot, iFolder and various smaller applications, a more complete list is available on the Gtk# Wiki.

Platforms: Unix, Windows, GPE, MacOS X (using the X server).

Pros:

Cons:

Windows.Forms

This is part of the standard Mono distribution.

This is a work-in-progress effort to implement the Microsoft System.Windows.Forms API. The API is not complete enough for many tasks, so developers (in particular third-party developers that provide custom controls) resort to use the underlying Win32 subsystem on Windows to provide features which are not exposed by Windows.Forms.

In some cases it is necessary to provide support for the Wndproc method and the various messages associated with it, and support extra functionality available in Win32 through P/Invoke, as well as exposing and sharing various kinds of handles (fonts, drawing contexts, drawing surfaces, windows).

There are two levels of conformance in this API: The full Windows.Forms from the .NET Framework 1.0 and 1.1, and the subset exposed by the Compact Framework.

Pros:

Cons:

The Windows.Forms API has a poor layout engine, which is based on absolute positioning.

Implementation: Mono's Managed Windows.Forms

Our Windows.Forms implementation is implemented on top of the GDI+ API for rendering and a relatively small driver to interact with the host windowing system. Our GDI+ implementation on Unix (Linux and OSX) uses Cairo as the rendering engine. As for the windowing system drivers, today we have two complete drivers (Unix/X11 and Win32) and one driver under development (OSX).

Pros:

Cons:

Sharp WT: http://sourceforge.net/projects/sharpdevelop

This is a project started by the developers of SharpDevelop.

The project started due to the limitations on Windows.Forms and the need to port their large application to Linux. They picked the SWT toolkit which is part of Eclipse and ported it from Java to C#.

SWT uses native widgets on each one of its target platforms, so the look and feel matches the underlying operating system.

Pros:

Cons:

Qt#: http://qtcsharp.sourceforge.net/

This is a binding to the Qt toolkit. This toolkit used to be under development, but its development has pretty much stopped.

Pros:

Cons:

wxNet: http://wxnet.sourceforge.net/

wxNet is a .NET binding for the wxWindows cross-platform toolkit.

Pros:

Cons: