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.
Build desktop interfaces with a compact C++17 API. Keep your controls, themes and application logic across platforms — now in the browser, too.
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();These are real C++ applications, compiled to WebAssembly. Type, click, move windows and switch themes. Make yourself at home.
Starting the C++ application…
Shift + Esc returns focus to the site tabs. On smaller screens the example is scaled to fit.
WUI puts familiar C++ concepts at the center: objects, explicit ownership and callbacks.
Keep windows and controls in ordinary C++ objects. A flat ownership model uses shared_ptr and weak_ptr, with lifetimes you can follow.
Windows route events; controls expose callbacks. Connect your application logic with std::function, without a code generator or MOC step.
Use shared controls, JSON themes and localization. Add custom controls through the same drawing and event interfaces.
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 ↗# 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 --parallelExplore the source, report an issue, or help shape what comes next.