IUP is a multi-platform toolkit for building
graphical user interfaces. It offers APIs in three basic languages: C,
Its library contains about 100 functions
for creating and manipulating dialogs.
IUP's purpose is to allow a program to run in different systems without changes - the
toolkit provides the application portability. Supported systems include: GTK+, Motif and Windows.
IUP uses an abstract layout model based on
the boxes-and-glue paradigm from the TEX text editor. This model, combined with the dialog-specification
or with the Lua binding (IupLua)
makes the dialog creation task more flexible
and independent from the graphics system's resolution.
Currently available interface elements can
be categorized as follows:
- Primitives (effective user interaction): dialog, label, button, text, multi-line, list, toggle, canvas, frame, image.
- Composition (ways to show the elements): hbox, vbox, zbox, fill.
- Grouping (definition of a common functionality for a group of elements):
- Menu (related both to menu bars and to pop-up menus): menu, submenu, item, separator.
- Additional (elements built outside the main library): dial, gauge, matrix, tabs, valuator, OpenGL canvas, color
chooser, color browser.
- Dialogs (useful predefined dialogs): file selection, message, alarm, data input, list selection.
Hence IUP has some advantages over other
interface toolkits available:
- Simplicity: due to the small number of functions and to its attribute mechanism, the learning curve
for a new user is often faster.
- Portability: the same functions are implemented in each one of the platforms, thus assuring the
interface system's portability.
- Customization: the dialog specification language (LED)
and the Lua binding (IupLua)
are two mechanisms in which it is possible
to customize an application for a specific user with a simple-syntax text file.
- Flexibility: its abstract layout mechanism provides flexibility to dialog creation.
- Extensibility: the programmer can create new interface elements as needed.
IUP is free software, can be used for public and commercial applications.
The library is available for several compilers:
- GCC and CC, in the UNIX environment
- Visual C++, Borland C++, Watcom C++ and GCC (Cygwin and MingW), in the Windows environment
The library is available for several operating systems:
- UNIX (SunOS, IRIX, and AIX) using Motif 2.x
- UNIX (FreeBSD and Linux) using GTK+ (since 3.0)
- Microsoft Windows XP/2003/Vista/7 using the Win32 API
The official support mechanism is by e-mail, using
Before sending your message:
- Check if the reported behavior is not described in the user guide.
- Check if the reported behavior is not described in the specific control or driver characteristics.
- Check the History to see if your version is updated.
- Check the To Do list to see if your problem has already been reported.
If all these points were checked, you can
report your problem. Please specify in your message: function, attribute, callback, platform and
We host the IUP support features at SourceForge:
http://sourceforge.net/projects/iup/. It provides us
Mailing List, SVN Repository and Downloads.
The discussion list is available at:
Source code, pre-compiled binaries and documentation can be downloaded at:
The SVN can be browsed at: https://sourceforge.net/p/iup/iup/.
If you want us to develop a specific feature for the toolkit, Tecgraf is
available for partnerships and cooperation.
Lua documentation and resources can be found at http://www.lua.org/.
This work was developed at Tecgraf by means of the partnership with PETROBRAS/CENPES.
- Marcelo Gattass
- Luiz Henrique de Figueiredo
- Carlos Henrique Levy
- Antonio Scuri
We must also mention engineer Enio Emanuel Russo, from PETROBRAS, who effectively contributed to the system's
specification and project.
Thanks to the people that worked and contributed to the library:
- André Carregal
- André Clinio
- André Costa
- André Derraik
- Camilo Freire
- Carlos Augusto Mendes
- Carlos José Pereira de Lucena
- Claudio Coutinho de Biasi
- Danny Reinhold
- Diego Nehab
- Diogo Martinez
- Guilherme Fonseca Alvarenga
- Henrique Dalcin Mendes Pinheiro
- Heesob Park
- Leonardo Constantino Oliveira
- Luiz Cristóvão Gomes Coelho
- Luiz Martins
- Marian Trifon
- Mark Stroetzel Glasberg
- Mauricio Oliveira Carneiro
- Milton Jonathan
- Neil Armstrong Rezende
- Nicolas Noble
- Otfried Cheong
- Rafael Rieder
- Renato Borges
- Renato Cerqueira
- Roberto Beauclair
- Steve Donovan
- Tomas Guisasola Gorham
- Vinicius Almendra
- Warren Music
Thanks for the SourceForge for
hosting the support features. Thanks for the
LuaForge team for previously hosting the support features for many
IUP is registered at the National Institute of Intellectual Property in
Brazil (INPI) under the number 07569-0, and so it is protected against illegal
use. The registration is valid internationally. See the Tecgraf Library License for further
usage information and Copyright.
This documentation is available at http://www.tecgraf.puc-rio.br/iup
The full documentation can be downloaded from the Download Files. The documentation is also available in Adobe Acrobat and Windows HTML Help formats.
The HTML navigation uses the WebBook tool, available at
There are also a few presentations:
This product stimulated the following
- Scuri, A. "IUP - Portable User Interface". Software Developer's Journal. Dec/2005.
- Levy, C. H.; Figueiredo, L. H.; Gattass, M.; Lucena, C.; and Cowan, D. "IUP/LED: A Portable User Interface
Development Tool". Software: Practice & Experience, 26 #7 (1996) 737-762. [spe95.pdf]
- Oliveira Prates, R.; Figueiredo, L. H.; and Gattass, M. "Especificação de Layout Abstrato por Manipulção
Direta". Proceedings of VII SIBGRAPI (1994), 165-172. [sib94.pdf
- Oliveira Prates, R.; Gattass, M. ;and Figueiredo, L. H. "Visual LED: uma ferramenta interativa para geração de
interfaces gráficas". M.Sc. dissertation, Computer Science Department, PUC-Rio, 1994. [prates94.pdf
- Levy, C. H. "IUP/LED: Uma Ferramenta Portátil de Interface com Usuário".
M.Sc. dissertation, Computer Science
Department, PUC-Rio, 1993.[levy93.pdf
- Figueiredo, L. H.;Gattass, M.; and Levy, C.H. "Uma Estratégia de Portabilidade para Aplicações Gráficas
Proceedings of VI SIBGRAPI (1993),
203-211. [sib93.pdf in Portuguese]
Interview at the FLOSS weekly
show about Free Libre Open Source Software, hosted by
Randal Schwartz, in Nov 9th 2011: