Pure C++17/20 No moc / uic / rcc Cross‑platform

Lightweight UI framework in pure C++
without magic and bloat

libwui — an alternative to Qt/QML for those who want fast UIs, small binaries and a predictable API. No code generators, minimal dependencies, maximum control.

Open‑source. No vendor lock‑in. Suitable for desktop and embedded systems.

~0 external tools
no code generators
↓ 30–70%
smaller binaries vs Qt*
↑ faster CI
thanks to simple builds

How libwui code looks

// Minimal example: window + button
#include <wui/app.h>
#include <wui/window.h>
#include <wui/controls/button.h>

int main(){
    wui::app app;
    wui::window win{"libwui demo", {800, 520}};

    auto btn = std::make_shared<wui::button>("Click me");
    btn->on_click([]{ std::puts("clicked"); });

    win.set_content(btn);
    win.show();
    return app.run();
}

Pure C++: lambdas, std::function, no MOC.

Why switch from Qt/QML to libwui

Lightweight instead of bloat

Only what’s needed for UI. No dozens of modules (SQL, XML, 3D, etc.) that inflate dependencies and complicate maintenance.

Modern C++ without “magic”

Native std stack: templates, lambdas, smart pointers. Transparent event model, no hidden code generation.

Small binaries

Minimal footprint and fast startup — important both for distribution and embedded systems.

Simpler CI/CD

No external generators, fewer build stages, fewer “it broke on agents” cases.

Predictable API

Docs and code go side by side: fewer “magical” states, clear lifecycle.

Open‑source without lock‑in

No paid licenses for static linking and closed code; you control the product.

Comparison: libwui vs Qt/QML

Criterion libwui Qt / QML
Language / model Pure C++, events via std::function Custom signals/slots, MOC, QML (JS)
Build No code generators, simpler CI moc/uic/rcc, long builds
Binary size Small footprint Much larger
Dependencies Minimal Many modules and ABI layers
UI nativeness Focus on custom modern UI Widgets/QML, varying “nativeness” per platform
Learning curve Low for C++ developers QML/JS, new paradigm
Licensing Open‑source, no fee for static linking GPL/LGPL or expensive commercial
Ready‑made components Core set + extensibility Large widget library

* Size and speed estimates depend on project config; given as guidance.

Components and extensibility

Out of the box

Windows, containers, buttons, input fields, lists, panels, dialogs. Smooth animations where appropriate.

“Sufficient minimum” strategy: no overloaded “combines”.

Extensibility

Create your own controls and themes through clear base classes. No inheritance from “everything at once”.

Composition and simple interfaces instead of rigid hierarchies.

Who already uses it

Start in 5 minutes

1) Installation

# CMake (example)
find_package(libwui REQUIRED)

add_executable(app main.cpp)
target_link_libraries(app PRIVATE wui)

Supports CMake/Conan/Vcpkg — add it to your toolchain. Examples available in the repository.

2) First window

#include <wui/wui.h>
int main(){ wui::app a; wui::window w{"Hello",{640,420}}; w.show(); return a.run(); }

FAQ

Where does it work?

Windows / Linux (Wayland/X11). macOS support — planned. For embedded systems — build without unnecessary dependencies.

What about performance?

Minimal overhead and fast startup. Rendering optimized for typical desktop cases. No redundant abstractions.

Theming and customization?

Yes. Theming via tokens and styles. Custom controls plug in without “breaking” the core.

License?

Open-source Boost license. No fees for static linking.