WUI โ€” Cross-Platform UI Library for Modern C++

Minimalist API. C++17. Flat ownership. Event-driven architecture.

WUI (Window User Interface) is a cross-platform C++ library for creating GUI applications. Focus on your application logic, not platform-specific implementation details.

About WUI

WUI is a cross-platform library for creating graphical user interfaces in C++. The library uses C++17 and provides a minimalist API. Currently supports Windows (XP โ€” 11) and Linux (glibc 2.23+).

WUI was designed to provide developers with a simple and effective tool for creating cross-platform GUI applications in C++. The library allows you to focus on application logic rather than platform-specific interface implementation.

๐Ÿ–ฅ๏ธ Cross-Platform

Windows (WinAPI + GDI) and Linux (X11 + xcb) support. macOS โ€” coming soon.

๐Ÿ“ฆ Minimalist API

Simple and intuitive interface. No code generators, no complex build systems.

๐ŸŽฏ Event-Driven

Flat ownership model, events through common hub. std::function callbacks.

Transparent Architecture Without Magic Layers

All platform-specific code is isolated in just two files.

Cross-Platform Core
Controls, Events, Layout, Logic, Flat Ownership
โ–ผ
window.cpp
WinAPI / XCB
Window & Input
graphic.cpp
GDI / Cairo
Rendering

Unlike other frameworks where platform abstraction is spread across dozens of classes, libwui encapsulates all OS work in just two files:

This means you know exactly where to look for porting code and don't depend on hidden system dependencies.

Why libwui?

โœ… True Zero External Dependencies

No vcpkg, conan, or system packages (except basic dev packages on Linux). Everything you need is already in the repository.

๐Ÿ”ง Portable by Design

Want to port to a new OS? You only need to implement two files (window.cpp and graphic.cpp). The rest of the code remains unchanged.

๐Ÿ“ฆ Predictable Build

No hidden dependencies. You see the entire build graph immediately. Versions of json and utf are fixed and won't break your project with an update.

๐Ÿ“‹ Flat Ownership Model

Controls are explicitly owned via std::shared_ptr in a container. No hidden deletion hierarchies, no dangling pointers.

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

๐ŸŽฏ Flat Event Subscription

Window acts as a central event dispatcher. Any object can subscribe to events it needs.

std::string sub_id = window->subscribe(
    [this](const wui::event& ev) {
        if (ev.type == wui::event_type::keyboard) {
            // Hotkey logic
        }
    },
    wui::event_type::keyboard | wui::event_type::system
);

๐ŸŽจ Theme System & Localization

Built-in theme support (light, dark, custom) and UTF-8 localization out of the box.

Code Example

// Simple example: window + button
#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>("Click me",
        []() {
            // Button click handler
        });

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

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

    return 0;
}
WUI Example 1 WUI Example 2

Used By

Decima-8

Neuromorphic development IDE with real-time visualization of 4096 tiles. ~1.3 MB binary, 60 FPS, native C++17.

Decima-8 is a closed IDE built on WUI. The emulator is open-source.

VideoGrace

On-premise video conferencing solution. Native desktop messenger clients with UI based on WUI.

GIF: VideoGrace Demo
800ร—500 px
Video calls โ€ข Screen sharing โ€ข Chat

~10 MB 64-bit static link with codecs and OpenSSL. Rendering up to 30 HD videos at 60 Hz.

Your Project

WUI is ready to power your desktop application. Write to us at info@libwui.org to share your success story.

Comparison: WUI vs Other Libraries

Framework Dependencies Platform Layer Build
libwui 0 external
(json/utf bundled)
2 files
(window.cpp, graphic.cpp)
cmake && build
Dear ImGui 0 (core)
+ backends separate
Separate repos/files
(imgui_impl_...)
Manual backend build
Qt ~10+ libs + modules Complex abstraction
(QPA)
Package manager required
wxWidgets System (GTK/Cocoa) Native control wrappers Long compilation

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

Ready to Get Started?

WUI is open-source and ready to power your next C++ GUI project. Join our community and start building today.

View on GitHub Read Documentation Download Latest

Questions? Join our Telegram community or email us at info@libwui.org.

Full size image