Небольшая библиотека. Простор для ваших идей.

Ваш интерфейс.
Ваш C++.
На всех платформах.

Создавайте интерфейсы с компактным API на C++17. Сохраняйте контролы, темы и логику приложения при смене платформы — теперь и в браузере.

OPEN SOURCE · C++17 · BOOST SOFTWARE LICENSE 1.0
main.cpp / excerpt
wui::framework::init();
wui::set_default_theme_from_file(
    "dark", "res/dark.json");

auto window = std::make_shared<wui::window>();
auto button = std::make_shared<wui::button>(
    "Hello, WUI!", [] { /* your code */ });

window->add_control(button, {20, 60, 180, 100});
window->init("My application", {0, 0, 400, 300},
    wui::window_style::frame);
wui::framework::run();
Окно. Кнопка. Ваш обработчик.
ОДИН API.
ЧЕТЫРЕ ПЛАТФОРМЫ.
WindowsWinAPI / GDI
LinuxX11 / Cairo
macOSЭкспериментально
WebAssemblyЭкспериментально
01 / ПОПРОБУЙТЕ САМИ

Меньше скриншотов.
Больше действий.

Это настоящие C++-приложения, собранные в WebAssembly. Вводите текст, нажимайте кнопки, двигайте окна и меняйте темы.

Запускаем приложение на C++…

LIVE / WEBASSEMBLYМеняйте форму сигнала слайдером, исследуйте вкладки и переключайте светлую и тёмную темы.
Браузерный порт экспериментальный. Изменения действуют в этой сессии; перезапуск сбрасывает пример.Возможности и ограничения ↗

Shift + Esc — вернуть фокус к вкладкам сайта. На небольших экранах пример уменьшен.

02 / КАК ЭТО УСТРОЕНО

Небольшой API.
Понятные основы.

В основе WUI — привычные понятия C++: объекты, явное владение и функции обратного вызова.

01

Управляйте интерфейсом

Храните окна и контролы в обычных C++-объектах. Плоская модель владения использует shared_ptr и weak_ptr с понятным временем жизни.

02

Работайте с событиями

Окна передают события, контролы вызывают обработчики. Подключайте логику через std::function без генератора кода и этапа MOC.

03

Настраивайте под себя

Используйте общие контролы, JSON-темы и локализацию. Создавайте свои контролы через те же интерфейсы рисования и событий.

Ваше приложениеКонтролы и событияБэкенд платформыWinAPI · X11 · AppKit · Canvas 2D
03 / ВАШЕ ПЕРВОЕ ОКНО

Начните с рабочего приложения.

Склонируйте библиотеку и соберите примеры. В Hello world уже есть темы, локализация и основа для вашего интерфейса.

Открыть руководство ↗
Собрать примеры
# macOS / Linux · установите зависимости платформы
git clone https://github.com/intent-garden/wui.git
cd wui
git switch I-94
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel

Открытый код. Общие возможности.

Изучайте исходники, сообщайте об ошибках и участвуйте в развитии библиотеки.

Участвовать на GitHub ↗