Skip to content
Auto-layout Ui library, lightweight, skinnable and system agnostic, with an OpenGL backend
Branch: master
Clone or download
Latest commit 8aa6543 May 18, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
3rdparty Remove old submodules Dec 30, 2017
data Refactor Styles Dec 18, 2017
example Rework Styles Dec 28, 2017
media Updated Readme May 6, 2015
src Fix gcc build Dec 30, 2017
.gitattributes Cleanup last renaming of src folder Jan 24, 2017
.gitignore Unignore Imprints Jan 28, 2017
.gitmodules Remove old submodules Dec 30, 2017
.travis.yml Travis-CI now gets glew Jan 21, 2017 Update May 17, 2018
LICENSE.txt Final commit :) May 18, 2018

Warning: kiUi became the ui component inside the mud library

This repository just exists for history purposes but is not under active development anymore.

kiUi Build Status

kiUi is a lightweight auto-layout Ui library, abstracted out from any rendering or input code.

kiui supports Emscripten : try the live demo here.

It is designed according to the following design goals :

  • Separation of Ui appearance and logic
  • Automatic layout as the norm, not the exception (as in HTML)
  • Easy styling, separated from logic (as in CSS)
  • Brevity and simplicity above everything else, especially in C++ code
  • Good for both an editor Ui and a game Ui

screenshot of the example window with a raw skin


Every single element in kiUi auto-layouts ! You have nothing to do. No position to set, no size to determine.

  • Code the logic : Just add your widgets and define the logic as you please.
  • Code the appearance : Just set your fonts, font-size, images, and kiUi will do the rest.

The style can be defined and tweaked separately by an artist. Style are defined in C++ as of now, but Style Sheets are planned to come soon.


kiUi was conceived so that each element can be styled in a way very similar to CSS, through Style Sheets You can switch between Styles Sheets on the fly

switching between styles at runtime


RootSheet& root = uiwindow.rootSheet();
Window& window = root.emplace<Window>("Example window");

Expandbox& expandbox = window.emplace<Expandbox>("Collapsable box");

Label& label = expandbox.emplace<Label>("kiUi says hello.");
Button& button = expand.emplace<Button>("Push me");

For a more in-depth usage example look at the full demo implementation : Example


kiUi comes with a light renderer / input system based on NanoVG and GLFW to quickly bootstrap a prototype application in a few lines of code.

GlWindow glwindow(1200, 800, "mk UiEditApp");

UiWindow& uiwindow = glwindow.uiWindow();
bool pursue = true;
    pursue = glwindow.renderFrame();


  • Dockspace
  • Tabber
  • Table
  • Window (resize, drag, dock)
  • Radiobutton
  • Dropdown


kiUi will come with a simple editor which also uses kiUi for its interface


The library is licensed under zlib license


Uses nanovg for vector rendering Uses glfw for OpenGL context management

You can’t perform that action at this time.