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.
Простой и интуитивный интерфейс. Без генераторов кода, без сложных систем сборки.
Плоская модель владения, события через общий хаб. Коллбеки на std::function.
Весь платформенный код изолирован в двух файлах.
В отличие от других фреймворков, где платформенная абстракция размазана по десяткам классов, в libwui вся работа с ОС инкапсулирована в двух файлах:
Это означает, что вы точно знаете, где искать код для портирования, и не зависите от скрытых системных зависимостей.
Никаких vcpkg, conan или системных пакетов (кроме базовых dev-пакетов на Linux). Всё необходимое уже в репозитории.
Хотите портировать на новую ОС? Вам нужно реализовать всего два файла (window.cpp и graphic.cpp). Остальной код не изменится.
Нет скрытых зависимостей. Вы видите весь граф сборки сразу. Версии 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;
}
Нейроморфная IDE с визуализацией 4096 тайлов в реальном времени. ~1.3 МБ бинарь, 60 FPS, нативный C++17.
Decima-8 — закрытая IDE на WUI. Эмулятор — open-source.
On-premise видеоконференцсвязь. Нативные десктоп-клиенты мессенджера с UI на WUI.
~10 МБ 64-bit static link с кодеками и OpenSSL. Воспроизведение до 30 HD-видео на 60 Гц.
WUI готова стать основой вашего десктопного приложения. Напишите нам на info@libwui.org, чтобы поделиться своей историей успеха.
| Фреймворк | Зависимости | Платформенный слой | Сборка |
|---|---|---|---|
| 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 проекта. Присоединяйтесь к сообществу и начните разработку сегодня.
Есть вопросы? Присоединяйтесь к нашему Telegram-сообществу или пишите на info@libwui.org.