Чистый C++17/20 Без moc / uic / rcc Кроссплатформа

Лёгкий UI‑фреймворк на чистом C++
минимум когнитивной нагрузки, максимальный контроль отрисовки и событий

libwui — альтернатива Qt/QML для тех, кто хочет быстрые интерфейсы, маленькие бинарники и предсказуемый API. Никаких генераторов кода, минимум зависимостей, максимум контроля.

Open‑source. Без vendor lock‑in. Подходит для десктопа и встраиваемых систем.

~0 внешних тулов
без генераторов кода
↓ 30–70%
меньше размер бинарников vs Qt*
↑ быстрее CI
за счёт простой сборки

Как выглядит код на libwui


    // Минимальный пример: окно + кнопка
    #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;
    }

Чистый C++: лямбды, std::function, никакого MOC.

Зачем менять Qt/QML на libwui

Лёгкость вместо перегруза

Только то, что нужно для UI. Без десятков модулей (SQL, XML, 3D и т.д.), которые раздувают зависимости и усложняют поддержку.

Современный C++ без «магии»

Нативный std‑стек: шаблоны, лямбды, умные указатели. Прозрачная модель событий, без скрытой генерации кода.

Маленькие бинарники

Минимальный footprint и быстрый старт приложения — важны как для дистрибуции, так и для встраиваемых систем.

Проще CI/CD

Нет внешних генераторов, меньше стадий сборки, меньше причин для «сломалось на агентах».

Предсказуемое API

Документация и код идут рядом: меньше «магических» состояний, понятный жизненный цикл.

Open‑source без lock‑in

Никаких платных лицензий за право статической линковки и закрытый код; вы контролируете продукт.

Сравнение: libwui vs Qt/QML

Критерий libwui Qt / QML
Язык/модель Чистый C++, события через std::function Собственные сигналы/слоты, MOC, QML (JS)
Сборка Без генераторов кода, проще CI moc/uic/rcc, длинные сборки
Размер бинарников Малый footprint Существенно больше
Зависимости Минимальные Много модулей и ABI‑слоёв
Нативность UI Фокус на кастомном современном UI Widgets/QML, разная «нативность» по платформам
Кривая обучения Для C++ разработчиков — низкая QML/JS, новая парадигма
Лицензирование Open‑source, без платы за стат. линковку GPL/LGPL или дорогостоящая коммерческая
Готовые компоненты База + расширяемость Большая библиотека виджетов

* Оценки размеров и скорости зависят от конфигурации проекта; приведены как ориентиры.

Компоненты и расширение

Готово из коробки

Окна, контейнеры, кнопки, поля ввода, списки, панели, диалоги. Гладкие анимации там, где это уместно.

Стратегия «достаточный минимум»: без перегруженных «комбайнов».

Расширяемость

Создавайте собственные контролы и темы через понятные базовые классы. Без наследования от «всего подряд».

Композиция и простые интерфейсы вместо жёстких иерархий.

Кто уже использует

FAQ

Где работает?

Windows / Linux (Wayland/X11). Поддержка macOS — в планах. Для встраиваемых систем — сборка без лишних зависимостей.

Как насчёт производительности?

Минимальные оверхеды и быстрый старт. Отрисовка оптимизирована под типичные десктоп‑кейсы. Нет избыточных абстракций.

Поддержка тем и кастомизация?

Да. Темизация через токены и стили. Кастомные контролы подключаются без «ломки» ядра.

Лицензия?

Open‑source boost лицензия. Никаких платежей за статическую линковку.