FLTK

Initial release| 1998; 28 years ago (1998)
Stable release|

1.4.4 / July 20, 2025; 9 months ago (2025-07-20)

Written in| C++
Operating system| Unix-like with X11 or Wayland, macOS, Microsoft Windows
Type| User interface library
License| GNU Lesser General Public License version 2 with an exception to allow static linking[1]
Website| www.fltk.org

Fast Light Toolkit (FLTK)[2] is a cross-platform widget (graphical control element) library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

Using its own widget, drawing and event systems abstracted from the underlying system-dependent code, it allows for writing programs which look the same on all supported operating systems.

FLTK is free and open-source software, licensed under GNU Lesser General Public License (LGPL) with an added clause permitting static linking from applications with incompatible licenses.

In contrast to user interface libraries like GTK, Qt, and wxWidgets, FLTK uses a more lightweight design and restricts itself to GUI functionality. Because of this, the library is very small (the FLTK "Hello World" program is around 100 KiB), and is usually statically linked. It also avoids complex macros, separate code preprocessors, and use of some advanced C++ features: templates, exceptions, and run-time type information (RTTI) or, for FLTK 1.x, namespaces. Combined with the modest size of the package, this makes it relatively easy to learn for new users.[3]

These advantages come with corresponding disadvantages. FLTK offers fewer widgets than most GUI toolkits and, because of its use of non-native widgets, does not have native look-and-feel on any platform.

## Contents

* 1 Meaning of the name
* 2 Architecture
* 2.1 Language bindings
* 2.2 GUI designers
* 3 Use
* 4 Versions
* 4.1 1.0.x
* 4.2 1.1.x
* 4.3 2.0 branch
* 4.4 1.2.x
* 4.5 1.3.x
* 4.6 1.4.x
* 4.7 1.5.x
* 4.8 3.0 branch
* 5 See also
* 6 References
* 7 External links

## Meaning of the name

FLTK was originally designed to be compatible with the Forms Library written for Silicon Graphics (SGI) machines (a derivative of this library called XForms is still used quite often). In that library, all functions and structures start with `fl_`. This naming was extended to all new methods and widgets in the C++ library, and this prefix `FL` was taken as the name of the library. After FL was released as open source, it was discovered that searching "FL" on the Internet was a problem, because it is also the abbreviation for Florida. After much debating and searching for a new name for the toolkit, which was already in use by several people, Bill Spitzak came up with Fast Light Tool Kit (FLTK).[4]

## Architecture

FLTK is an object-oriented widget toolkit written in the programming language C++. While GTK is mainly optimized for the X Window System, FLTK works on other platforms, including Microsoft Windows (interfaced with the Windows API), and OS X (interfaced with Quartz). A Wayland back-end has been implemented and is available since release 1.4.0.[5] FLTK2 has gained experimental support for optionally using the cairo graphics library.

### Language bindings

A library written in one programming language may be used in another language if language bindings are written. FLTK has a range of bindings for various languages.

FLTK was mainly designed for, and is written in, the programming language C++. However, bindings exist for other languages, for example Lua,[6] Perl,[7] Python,[8] Ruby,[9] Rust[10] and Tcl.[11]

For FLTK 1.x, this example creates a window with an Okay button:

# include <FL/Fl.H>
# include <FL/Fl_Window.H>
# include <FL/Fl_Button.H>

int main(int argc, char *argv[]) {
Fl_Window* w = new Fl_Window(330, 190);
new Fl_Button(110, 130, 100, 35, "Okay");
w->end();
w->show(argc, argv);
return Fl::run();

### GUI designers

FLTK includes Fast Light User Interface Designer (FLUID), a graphical GUI designer that generates C++ source and header files.

## Use

Many programs and projects use FLTK, including:

* Nanolinux, 14 MB Linux distribution[12][13][14][15][16][17]
* XFDOS, a FreeDOS-based distribution with a GUI, porting Nano-X and FLTK[18][14][15][17]
* Agenda VR3, a Linux-based personal digital assistant with software based on FLTK.
* third-party Agenda VR3 software
* Software:Amnesia: The Dark Descent, by Frictional Games uses FLTK in its launcher application
* MwendanoWD, Logic puzzle for personal computer by YPH.[19]
* Audio:
* Fldigi, amateur radio software, allows data transmission and text chat via digital modes such as PSK31
* Giada, looper, micro-sequencer, sample player software, open-source[20]
* Prodatum, synthesizer preset editor, uses a lifelike interface design[21]
* ZynAddSubFX, an open-source software synthesizer
* DiSTI GL Studio, human-machine interface development tool[22]
* Engineering:
* ForcePAD, an intuitive tool to visualise the behavior of structures subject to loading and boundary conditions[23]
* Gmsh, an open-source finite element mesh generator
* RoboCIM, software to simulate and control operation of a servo robot system and external devices[24]
* Equinox Desktop Environment (EDE)
* FlBurn optical disc burning software for Linux[25]
* Graphics:
* CinePaint, deep-paint software, migrating from GTK to FLTK, open-source
* ITK-SNAP, software application for medical image segmentation, open-source
* Nuke, a digital compositing program. Until version 5, now replaced by Qt
* Open Movie Editor[26]
* OpenVSP, an open-source NASA parametric 3D CAD for aircraft design and analysing[27]
* PosteRazor, open-source poster printing software for Windows, OS X, Linux[28]
* Tilemap Studio, An open-source tilemap editor for Game Boy, Color, Advance, DS, and SNES projects[29]
* SmallBASIC, Windows port
* Web browsers:
* Dillo, Dillo-2 was based on FLTK-2, abandoning this FLTK branch, with no official release, was a major cause of Dillo-3 being started, using FLTK1.3
* Fifth, replicates functioning of early Opera[30]
* NetRider[31]
* Brain Visualizer: An open-source interactive visualizer for large-scale 3D brain models. Part of the Brain Organization Simulation System (BOSS) developed at Stony Brook University[32]
* X window managers:
* FLWM
* miwm

## Versions

This version history is an example of the sometimes tumultuous nature of open-source development.[33]

### 1.0.x

This is a prior stable version, now unmaintained.

### 1.1.x

This is a prior stable version, now unmaintained.

### 2.0 branch

This was a development branch, long thought to be the next step in FLTK's evolution, with many new features and a cleaner programming style. It never achieved stability, and development has largely ceased. The branch is inactive now.

### 1.2.x

This was an attempt to take some of the best features of 2.0 and merge them back into the more popular 1.1 branch. It is no longer developed. All of its features have been incorporated in branch 1.3.

### 1.3.x

Previous stable release.[34] Provides UTF-8 support.

### 1.4.x

Current stable branch. Adds more features to 1.3.[34] This branch is in maintenance mode since release 1.4.2 (Feb. 23, 2025).

### 1.5.x

Current development branch. This branch is in early development stage. Since FLTK 1.5 CMake is required to build FLTK (configure/Makefile support has been dropped).

### 3.0 branch

This branch resulted from a vision to "unfork" branches 1.x and 2.0, but it was never completed. All efforts to develop this branch have been abandoned. Now inactive.

## See also

* GTK
* gtkmm (C++ binding of GTK)
* FOX toolkit
* IUP \- a multi-platform toolkit to build native graphical user interfaces
* Juce
* Qt
* Widget toolkit
* wxWidgets \- cross platform open source C++ widgets toolkit developed by community
* U++
* List of widget toolkits

## References

1. ↑ "FLTK License Agreement". https://www.fltk.org/COPYING.php.
2. ↑ "Fast Light Toolkit - Fast Light Toolkit (FLTK)". https://www.fltk.org/.
3. ↑ "Fast Light ToolKit (FLTK) » CppLibs". http://www.cpplibs.com/libraries/fltk/.
4. ↑ "Article #363: What does "FLTK" mean? - Fast Light Toolkit (FLTK)". https://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q.
5. ↑ "STR #3371: Wayland Display Server Protocol support - Fast Light Toolkit (FLTK)". https://www.fltk.org/str.php?L3371.
6. ↑ "murgaLua homepage". http://www.murga-projects.com/murgaLua.html.
7. ↑ "Links: By Category - Links - Fast Light Toolkit (FLTK)". https://www.fltk.org/links.php.
8. ↑ "pyFLTK Home Page". https://pyfltk.sourceforge.io/.
9. ↑ "Ruby/FLTK". https://ruby-fltk.sourceforge.net/.
10. ↑ "fltk - Rust". https://docs.rs/fltk/latest/fltk/.
11. ↑ "Tcl/Fltk dynamic extension for Tcl". 3 April 2013. https://sourceforge.net/projects/fltkwish/.
12. ↑ "Nanolinux". 8 October 2016. https://sourceforge.net/projects/nanolinux/.
13. ↑ "Tiny to the extreme: Nanolinux". 30 November 2014. https://eerielinux.wordpress.com/2014/11/30/tiny-to-the-extreme-nanolinux/.
14. ↑ 14.0 14.1 "An interview with the Nanolinux developer". 30 December 2014. https://eerielinux.wordpress.com/2014/12/30/an-interview-with-the-nanolinux-developer/.
15. ↑ 15.0 15.1 "Artificial Intelligence Methods". http://tawny.cs.nott.ac.uk/~sbx/winnie/aim/overview.htm.
16. ↑ "PC HTML Editors". http://sites.utoronto.ca/webdocs/HTMLdocs/PCTOOLS/pc_editors.html.
17. ↑ 17.0 17.1 "Georg's Personal Homepage". http://www.georgpotthast.de/.
18. ↑ "An extraordinary TK example!". 12 October 2012. https://eerielinux.wordpress.com/2012/10/12/an-extraordinary-tk-example/.
19. ↑ "YPH". http://tehelimu.ezyro.com/Subsites/enl/tls.html.
20. ↑ "Giada, hardcore loopmachine". http://www.monocasual.com/giada.
21. ↑ "prodatum - official homepage". https://prodatum.sourceforge.net/.
22. ↑ "DiSTI GL Studio". http://www.disti.com/.
23. ↑ "ForcePAD". https://forcepad.sourceforge.net/.
24. ↑ "RoboCIM - Robotics software". http://www.labvolt.com/products/automation-and-robotics/robotics/robocim-5250-software-5251.
25. ↑ "Free | CD DVD burning software for Linux". https://flburn.sourceforge.net/.
26. ↑ "Open Movie Editor - Free and Open Source Video Editor". http://www.openmovieeditor.org/.
27. ↑ "OpenVSP". https://openvsp.org/.
28. ↑ "PosteRazor - Make your own poster!". https://posterazor.sourceforge.io/.
29. ↑ "Tilemap Studio". 18 October 2021. https://github.com/Rangi42/tilemap-studio.
30. ↑ "Fifth - Home". https://fifth-browser.sourceforge.net/.
31. ↑ "NetRider". 23 February 2016. https://sourceforge.net/projects/netrider/.
32. ↑ "Viz (Brain Visualizer)". 25 August 2021. https://github.com/roukaour/viz-brain-visualizer.
33. ↑ "What are the Versions of FLTK?". https://www.fltk.org/articles.php?L825+I0+T+P1+Q.
34. ↑ 34.0 34.1 https://www.fltk.org/articles.php?L825 Taken 5 March 2017.

## External links

* No URL found. Please specify a URL here or add one to Wikidata.

* v
* t
* e

List of widget toolkits

Low-level|

| On AmigaOS|

* Intuition

|

On Classic Mac OS,
macOS|

| Unknown, native|

* Macintosh Toolbox

|

* Carbon

On Windows|

* Windows API

On Unix,
under X11|

* Xlib
* XCB
* X Toolkit Intrinsics, Xt, X-Toolkit

On BeOS, Haiku|

* BeOS, ZETA, Haiku

On cross-platform|

| CLI|

* OpenTK

|

* GDK
* SDL

Java|

* JOGL

On Android|

| CLI|

* Xamarin.Android

|

High-level|

| On AmigaOS|

* BOOPSI
* MUI
* ReAction GUI
* Zune

|

On Classic Mac OS,
macOS|

| Object Pascal|

* MacApp (v1, v2)

|

Objective-C,
Swift|

| Desktop|

* Cocoa

|

Mobile|

* Cocoa Touch

C++|

* MacApp (v3)
* PowerPlant
* THINK Class Library

CLI|

| Desktop|

* Xamarin.Mac

|

Mobile|

* Xamarin.iOS

On Windows|

| CLI|

| Desktop|

* Windows Forms
* XAML (Silverlight, WinRT XAML, WPF)
* XNA Framework

|

Web|

* XAML (Silverlight)

Mobile|

* XNA Framework

C++|

* MFC
* ATL
* WTL
* OWL

Object Pascal|

* VCL

On Unix,
under X11|

* Athena (Xaw)
* LessTif
* Motif
* OLIT
* XForms

On Android|

| C++|

* Qt for Android

|

Cross-platform,
by language|

| C|

* GTK
* IUP
* Tk
* wxC
* XForms
* XVT

|

C++|

* CEGUI
* CLX
* FLTK
* FOX toolkit
* GLUI
* Gtkmm
* JUCE
* Nana
* Qt
* Rogue Wave Views
* TnFOX
* Ultimate++
* VCF
* Wt
* wxWidgets
* YAAF
* SFML

Objective-C|

* GNUstep

CLI|

| Desktop|

* Gtk#
* Tao (OpenTK, TaoClassic)
* wx.NET
* UIML.NET
* MonoGame

|

Web|

* Moonlight

Mobile|

* MonoGame
* Xamarin.Forms

* DFL
* DlangUI
* DWT
* GtkD
* QtD
* wxD

Flash|

* Apache Flex (MXML)

Haskell|

* Gtk2Hs
* wxHaskell

Java|

| Desktop|

* AWT
* FXML (JavaFX)
* Qt Jambi
* Swing
* SWT
* wx4j
* jUIML

|

Web|

* GWT
* FXML (JavaFX)

Mobile|

* LWUIT

JavaScript|

* Dojo Toolkit
* Echo
* Ext JS
* Google Closure
* jQuery UI
* Qooxdoo
* YUI

Common Lisp|

* CAPI
* CLIM
* Common Graphics
* Ltk
* McCLIM

Lua|

* IUP
* wxLua

Pascal|

| Desktop|

* LCL

|

Mobile|

* LCL

Object Pascal|

| Desktop|

* CLX
* fpGUI
* IP Pascal
* LCL

|

Mobile|

* LCL

Perl|

* Perl/Tk
* wxPerl

PHP|

* PHP-GTK
* PHP-Qt
* wxPHP

Python|

* PyGObject
* PyGTK
* Pyjs
* PyQt
* PySide
* Tkinter
* wxPython

Ruby|

* Shoes
* FXRuby
* Ruby-GNOME2
* qtbindings
* QtRuby
* wxRuby

Tcl|

* Tcl/Tk

XML|

* GladeXML
* Lively Kernel
* Pyjs
* Rialto Toolkit
* XAML
* XUL
* UXP
* Wt

shell|

* whiptail
* dialog

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/FLTK. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:FLTK&oldid=4139147"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template