WUI (Window User Interface) is a cross-platform C++ library for creating GUI applications. Focus on your application logic, not platform-specific implementation details.
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.
Windows (WinAPI + GDI) and Linux (X11 + xcb) support. macOS โ coming soon.
Simple and intuitive interface. No code generators, no complex build systems.
Flat ownership model, events through common hub. std::function callbacks.
All platform-specific code is isolated in just two files.
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.
No vcpkg, conan, or system packages (except basic dev packages on Linux). Everything you need is already in the repository.
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.
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.
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;
};
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
);
Built-in theme support (light, dark, custom) and UTF-8 localization out of the box.
// 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;
}
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.
On-premise video conferencing solution. Native desktop messenger clients with UI based on WUI.
~10 MB 64-bit static link with codecs and OpenSSL. Rendering up to 30 HD videos at 60 Hz.
WUI is ready to power your desktop application. Write to us at info@libwui.org to share your success story.
| 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.
WUI is open-source and ready to power your next C++ GUI project. Join our community and start building today.
Questions? Join our Telegram community or email us at info@libwui.org.