Window User Interface Library

WUI is a cross-platform modern C++ library for creating graphical user interfaces of desktop applications.

Windows and Linux are currently supported, with macOS support in progress

WUI provides a convenient way to create cross-platform graphical programs in modern C++

The library uses C++17 and has a minimalistic API. The main design principle is to make it as simple as possible, but not simpler. The library does not try to build a complete abstraction over the operating system and deals only with basic UI stuff. It has nothing about network, strings, file handling, multithreading, and other useful but irrelevant UI things, which are also available in the modern C++ standard.

Create once. Share everywhere

Your application written once will run and look the same on Windows, on Linux and on macOS

Powerfull resource system

Built-in support for locales and color themes based on json schemes makes it easy to create impressive multilingual applications with a variety of color themes.

Minimal application size

The average size of binary code added to your application is 2 megabytes, which is 20-30 times smaller than your competitors

Open Source, Boost Software Licence

You can freely embed WUI in your software without having to publish the source code or buy a license

Some application's screenshots

Such applications as VideoGrace video messenger and possibly your new application are created on WUI 😉

Try the simple live demo on :: Windows x64 | Linux x64

Quick start

A few actions and your app is up and running and ready for further development

Application entry point

Function main()

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

    // Code, initialization of config, visual theme and locale 

    MainFrame mainFrame;
    mainFrame.Run();

    wui::framework::run();

    return 0;
}
Main widnow

class MainFrame
{
public:
    MainFrame();

    void Run();

private:
    void ReceiveEvents(const wui::event &ev);
    void UpdateControlsPosition();
    void OnOK();
    
    static const int32_t WND_WIDTH = 400, WND_HEIGHT = 400;
    
    std::shared_ptr window = std::make_shared();
    
    std::shared_ptr logoImage = std::make_shared(IMG_LOGO);
    
    std::shared_ptr whatsYourNameText = std::make_shared(
        wui::locale("main_frame", "whats_your_name_text"),
        wui::text_alignment::center,
        "h1_text");
                            
    std::shared_ptr userNameInput = std::make_shared(wui::config::get_string("User", "Name", ""));
                            
    std::shared_ptr okButton = std::make_shared(
        wui::locale("main_frame", "ok_button"),
        std::bind(&MainFrame::OnOK, this));
                            
    std::shared_ptr messageBox = std::make_shared(window);
                            
    bool user_approve_close = false;
};
                            
Result

The demo application shows the logo, displays a caption and provides an input field. When the button is clicked, a message box is displayed and the application closes. It also tracks when the user closes the window and displays a confirmation.

WUI life

Key milestones

Project start

Dec 17, 2021

The first commit is the birthday of the project

Windows port is done

January 20, 2022

Implemented startup and operation on Windows

Linux port is done

February 26, 2022

Implemented startup and operation on Linux

Website made and documentation posted

September 26, 2023

After a year of commercial operation in a number of enterprises, the product has been stabilized and published