Чистый 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/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>("Нажми меня");
    btn->on_click([]{ std::puts("clicked"); });

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

Чистый 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 или дорогостоящая коммерческая
Готовые компоненты База + расширяемость Большая библиотека виджетов

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

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

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

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

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

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

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

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

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

Старт за 5 минут

1) Установка

# CMake (пример)
find_package(libwui REQUIRED)

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

Поддержка CMake/Conan/Vcpkg — добавьте в свой toolchain. Примеры доступны в репозитории.

2) Первое окно

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

FAQ

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

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

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

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

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

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

Лицензия?

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