MicroRaptor Gui is a C API for creating user interfaces, it can be used as an application writing environment or as an interactive canvas for part of a larger interface.
Micro raptor builds on/integrates with cairos immediate mode vector rendering API
Callbacks registered during the painting of the frame - the cairo transformations in place during registration applies when called. Also works for dragging. Keybindings are also registered in the same callback for building the ui. Thus the mental model is that one - in one call - repaint/recreate the UI drawing and callbacks from data-state and view-state in one call, avoiding much caching and intermediate objects.
Embeddable and stand-alone - as a "canvas" mrg can be used as widgets in Gtk+ applications or full-blown applications.
EXPERIMENTAL Multi-platform, both through SDL and GTKs multiplatform support, and built-in TUI (UTF-8 ansi/vt100) support for most modern terminals.
CSS styled rendering (using a context stack; where the pushing of contexts specifies the "element.class#id" of each now element rendering entered.
MicroRaptor Gui has three independent backends it can use, SDL-1.2, GTK+-3.0 and ANSI/vt100 terminals, the GTK backend provides both full application hosting, and a widget for use as a canvas in GTK+applications. The terminal backends has mouse support, is utf8 native and for simple text-centric applications you can even build static libraries skipping even the cairo support.
In terms of programming paradigm, microraptor contains aspects of both traditional retained widget-tree/scene-graph ui's and (purist) immediate mode uis. Since microraptor doesn't have a retained scenegraph, and some of the freedoms gained with imgui, like being able to paint incrementally directly from data-structures are also gained with microraptor.