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


    // Simple example: window + button
    #include <wui/framework/framework.hpp>
    #include <wui/window/window.hpp>
    #include <wui/control/button.hpp>
    #include <wui/common/dbgtrace.hpp>

    int main() {
        wui::framework::init();

        auto window = std::make_shared<wui::window>();

        auto button = std::make_shared<wui::button>("Button 1",
            []() {
                DBG_TRACE("Button 1 press");
            });

        window->add_control(button, { 10, 10, 300, 35 });

        window->init("Hello from WUI!", { -1, -1, 900, 600 },
            wui::flags_map<wui::window_style>(3, wui::window_style::frame,
                wui::window_style::switch_theme_button,
                wui::window_style::border_all),
            []() {
                wui::framework::stop();
            });

        DBG_TRACE("App started");
        wui::framework::run();

        DBG_TRACE("App ended");
        return 0;
    }

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

Key Benefits

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

VideoGrace

Native desktop messenger clients

UI based on libWUI: ~10Mb 64bit static link with codecs and OpenSSL. Rendering up to 30 HD video at 60Hz.

Decima8

Visual IDE of the neuromorph Decima8 machine

20 us cycle clock 256 tiles on a single i5-3550 core, real-time rendering. ~1.3 MB exe, static link, C++23

Your product

We are ready to feature a case and logo after migration to WUI. Write to us at info@libwui.org.

FAQ

Where does it work?

Windows / Linux (gdi, gdi+ / xcb, cairo, 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?

Built-in themes and locales. Custom controls are welcome and encouraged.

License?

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