WUI — Кроссплатформенная UI-библиотека для современного C++

Минималистичный API. C++17. Плоская модель владения. Событийная архитектура.

WUI (Window User Interface) — кроссплатформенная C++ библиотека для создания графических интерфейсов. Сосредоточьтесь на логике приложения, а не на платформо-зависимых деталях реализации.

О библиотеке

WUI — это кроссплатформенная библиотека для создания графического интерфейса пользователя на C++. Библиотека использует C++17 и имеет минималистичный API. В настоящее время поддерживается Windows (XP — 11) и Linux (glibc 2.23 и выше).

WUI разработана с целью предоставления разработчикам простого и эффективного инструмента для создания кроссплатформенных GUI-приложений на C++. Библиотека позволяет сосредоточиться на логике приложения, а не на особенностях реализации интерфейса для каждой платформы.

🖥️ Кроссплатформа

Поддержка Windows (WinAPI + GDI) и Linux (X11 + xcb). macOS — coming soon.

📦 Минималистичный API

Простой и интуитивный интерфейс. Без генераторов кода, без сложных систем сборки.

🎯 Событийная модель

Плоская модель владения, события через общий хаб. Коллбеки на std::function.

Прозрачная архитектура без магических слоёв

Весь платформенный код изолирован в двух файлах.

Cross-Platform Core
Controls, Events, Layout, Logic, Flat Ownership
window.cpp
WinAPI / XCB
Окно и ввод
graphic.cpp
GDI / Cairo
Отрисовка

В отличие от других фреймворков, где платформенная абстракция размазана по десяткам классов, в libwui вся работа с ОС инкапсулирована в двух файлах:

Это означает, что вы точно знаете, где искать код для портирования, и не зависите от скрытых системных зависимостей.

Почему libwui?

✅ True Zero External Dependencies

Никаких vcpkg, conan или системных пакетов (кроме базовых dev-пакетов на Linux). Всё необходимое уже в репозитории.

🔧 Portable by Design

Хотите портировать на новую ОС? Вам нужно реализовать всего два файла (window.cpp и graphic.cpp). Остальной код не изменится.

📦 Predictable Build

Нет скрытых зависимостей. Вы видите весь граф сборки сразу. Версии json и utf зафиксированы и не сломают ваш проект обновлением.

📋 Плоская модель владения

Контролы владеются явно через std::shared_ptr в контейнере. Никаких скрытых иерархий удаления, никаких «висячих» указателей.

class DialingDialog {
    std::shared_ptr<wui::window> window;
    std::shared_ptr<wui::text> text;
    std::shared_ptr<wui::button> cancelButton;
};

🎯 Плоская подписка на события

Окно выступает в роли центрального диспетчера событий. Любой объект может подписаться на нужные ему события.

std::string sub_id = window->subscribe(
    [this](const wui::event& ev) {
        if (ev.type == wui::event_type::keyboard) {
            // Логика горячих клавиш
        }
    },
    wui::event_type::keyboard | wui::event_type::system
);

🎨 Система тем и локализация

Встроенная поддержка тем (светлая, тёмная, кастомная) и UTF-8 локализация из коробки.

Пример кода

// Минимальный пример: окно + кнопка
#include <wui/framework/framework.hpp>
#include <wui/window/window.hpp>
#include <wui/control/button.hpp>

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

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

    auto button = std::make_shared<wui::button>("Нажми меня",
        []() {
            // Обработчик нажатия
        });

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

    window->init("Hello WUI!", { -1, -1, 400, 300 });
    wui::framework::run();

    return 0;
}
WUI Пример 1 WUI Пример 2

Используется в

Decima-8

Нейроморфная IDE с визуализацией 4096 тайлов в реальном времени. ~1.3 МБ бинарь, 60 FPS, нативный C++17.

Decima-8 — закрытая IDE на WUI. Эмулятор — open-source.

VideoGrace

On-premise видеоконференцсвязь. Нативные десктоп-клиенты мессенджера с UI на WUI.

GIF: VideoGrace Demo
800×500 px
Видеозвонки • Демонстрация экрана • Чат

~10 МБ 64-bit static link с кодеками и OpenSSL. Воспроизведение до 30 HD-видео на 60 Гц.

Ваш проект

WUI готова стать основой вашего десктопного приложения. Напишите нам на info@libwui.org, чтобы поделиться своей историей успеха.

Сравнение: WUI с другими библиотеками

Фреймворк Зависимости Платформенный слой Сборка
libwui 0 внешних
(json/utf в bundled)
2 файла
(window.cpp, graphic.cpp)
cmake && build
Dear ImGui 0 (ядро)
+ бэкенды отдельно
Отдельные репозитории/файлы
(imgui_impl_...)
Ручная сборка бэкендов
Qt ~10+ библиотек + модули Сложная абстракция
(QPA)
Требуется менеджер пакетов
wxWidgets Системные (GTK/Cocoa) Обёрки над нативными контролами Длительная компиляция

libwui: Third-party libs (json, utf) included in thirdparty/. Platform code uses direct system APIs (WinAPI/GDI, XCB/Cairo) without intermediate layers.

Готовы начать?

WUI — open-source и готова стать основой вашего следующего C++ GUI проекта. Присоединяйтесь к сообществу и начните разработку сегодня.

Смотреть на GitHub Документация Скачать

Есть вопросы? Присоединяйтесь к нашему Telegram-сообществу или пишите на info@libwui.org.

Full size image