Cross-Platform GUI Toolkit
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1a89c1d Sep 3, 2018
Failed to load latest commit information.
ChangeLogs update Aug 1, 2018
Packages For mingw, the header files should NOT be preprocessed or they will b… Jul 26, 2011
ada-demos Updated Ada bindings for Agar-Core. Aug 1, 2018
ada-gui Updated Ada bindings for Agar-Core. Aug 1, 2018
ada/core no _t. add Event.Event_Queue. lock Object in Object.Defined(). Aug 20, 2018
au remove unused ag_math flags Jun 2, 2018
core add debug messages for AG_Variable assignments. Aug 20, 2018
demos moved to ../tests Aug 4, 2012
dev fix invalid path name string access in Save function. Aug 20, 2018
gui add AG_Surface flag AG_SURFACE_MAPPED; detect attempts to Free mapped… Aug 20, 2018
math fix uninitialized variable in line/line test. thanks maddin200! Sep 3, 2018
mk tri:regen Aug 20, 2018
p5-Agar improve wording Aug 1, 2018
po remove empty .depend files from repository, ./configure will now crea… Jul 27, 2009
tests add command line option -C (no console redirection) Aug 13, 2018
tools avoid format strings in AG_FatalError() Jan 6, 2017
vg use named virtual fns Aug 1, 2018 improve wording Aug 1, 2018 tri:format May 26, 2018
INSTALL.txt refer to the "Installation Guides" section of the website Jul 22, 2012
LICENSE license copy May 25, 2018
Makefile.proj set --datadir=NONE on windows Aug 6, 2012
README wording, clarity May 25, 2018
configure tri:regen Aug 20, 2018 add --enable-type-safety: enable run-time AG_Event argument type checks. Aug 1, 2018


    _       _       _     ___  
  / _ \   / _ \   / _ \  |  _ \ 
 | |_| | | (_| | | |_| | | |_) |
 |_| |_|  \__, | |_| |_| |_| |_|

What is it?
Agar is a type of sugar polymer obtained from seaweed and red algae. Agar
becomes gelatinous in water and is primarly used as a culture medium for
microbiological work. Agar is also the name of an open source GUI toolkit.

Agar works with a wide variety of platforms and graphics systems, from modern
OpenGL-capable desktops to classic consoles and embedded devices. Using the
AG_Driver(3) interface, developers can easily port Agar to new systems
and graphics APIs. Some Agar drivers are designed to work with a native
window system (e.g., "glx", "wgl" and "cocoa"). Others (such as "sdlfb"
and "sdlgl") work with a single display, with Agar providing a built-in
window manager. Since Agar provides a consistent programming interface,
developers need not to be aware of the underlying platform.

A set of general-purpose widgets are included in the Agar distribution.
Agar's class registration interface allows new widgets to be implemented
as part of an application or third-party library. The appearance of Agar
GUI elements is configurable programmatically and parametrically using
simple CSS-style attributes.

The Agar-Core library provides various utility and portability interfaces,
as well as Agar's object system, AG_Object(3). The object system implements
inheritance, serialization, virtual functions, timers and more. Agar-Core
contains no GUI-related code; applications may link to Agar-Core without
linking to Agar-GUI.

Agar is thread-safe when built with threads support. See the API reference
and AG_Threads(3) for more information about thread safety.

- The online API Reference. This is a detailed description of all
  public Agar structures, objects and functions, at:
- On Unix-like platforms, the API reference is also available in
  traditional manual page format; see AG_Intro(3).
- The Agar Manual (work in progress), at:

Step-by-step installation guides are available for various platforms.
Refer to the "Installation Guides" section of the Agar documentation
page at:

Download the most recent Agar version from the Agar home page at:

Agar is portable to many different platforms, including FreeBSD, IRIX,
Linux, MacOS Classic, MacOS X, NetBSD, OpenBSD, Solaris and Windows. Agar
has been used on ARM embedded devices. It has even been ported to game
consoles such as the GP2x, the Nintendo Gamecube/Wii and the Xbox. See:

Agar is freely distributable under the terms the "new" BSD license:

How to contribute

Libraries and toolkits based on Agar
Here are some useful libraries which implement new Agar widgets and
extend Agar's functionality toward more specific applications:

Agar-AU		Portable audio interface (bundled, use `agar-au-config`)
Agar-MATH	General-purpose math library (bundled, use `agar-math-config`)
Agar-VG		Vector graphics library (bundled, use `agar-vg-config`)
Agar-RG		Raster graphics library (bundled, use `agar-rg-config`)
Agar-DEV	Developer/debugging tools (bundled, use `agar-dev-config`)
FreeSG		2D/3D graphics engine (
Edacious	Electronics design (
CADTools	Computer-aided design (