A small library. Room for your ideas.

Your interface.
Your C++.
Everywhere.

Build desktop interfaces with a compact C++17 API. Keep your controls, themes and application logic across platforms — now in the browser, too.

OPEN SOURCE · C++17 · BOOST SOFTWARE LICENSE 1.0
main.cpp / excerpt
wui::framework::init();
wui::set_default_theme_from_file(
    "dark", "res/dark.json");

auto window = std::make_shared<wui::window>();
auto button = std::make_shared<wui::button>(
    "Hello, WUI!", [] { /* your code */ });

window->add_control(button, {20, 60, 180, 100});
window->init("My application", {0, 0, 400, 300},
    wui::window_style::frame);
wui::framework::run();
A window. A button. Your callback.
ONE API.
FOUR PLATFORMS.
WindowsWinAPI / GDI
LinuxX11 / Cairo
macOSExperimental
WebAssemblyExperimental
01 / THE PLAYGROUND

Less imagining.
More clicking.

These are real C++ applications, compiled to WebAssembly. Type, click, move windows and switch themes. Make yourself at home.

Starting the C++ application…

LIVE / WEBASSEMBLYMove the waveform slider, explore the tabs and try the light and dark themes.
The browser port is experimental. Changes stay in this session; reloading resets the example.Browser capabilities & limits ↗

Shift + Esc returns focus to the site tabs. On smaller screens the example is scaled to fit.

02 / THE APPROACH

Small API.
Clear building blocks.

WUI puts familiar C++ concepts at the center: objects, explicit ownership and callbacks.

01

Own your interface

Keep windows and controls in ordinary C++ objects. A flat ownership model uses shared_ptr and weak_ptr, with lifetimes you can follow.

02

Follow the events

Windows route events; controls expose callbacks. Connect your application logic with std::function, without a code generator or MOC step.

03

Make it yours

Use shared controls, JSON themes and localization. Add custom controls through the same drawing and event interfaces.

Your applicationControls & eventsPlatform backendWinAPI · X11 · AppKit · Canvas 2D
03 / YOUR FIRST WINDOW

Start with a working app.

Clone the library and build the examples. The Hello world project includes themes, localization and a starting point for your own interface.

Read the quick start ↗
Build the examples
# macOS / Linux · with platform dependencies installed
git clone https://github.com/intent-garden/wui.git
cd wui
git switch I-94
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel

Built in the open. Yours to build on.

Explore the source, report an issue, or help shape what comes next.

Contribute on GitHub ↗