Browse by type
Cross-platform high performance efficient module-based framework for developing and deploying hardware accelerated graphical desktop applications using modern C++20.
The project is inspired by Qt and aims to provide developers with the best possible experience (including, but not limited to: dependency management, packaging, ui building, styling, debugger visualizing) with pure C++, without custom programming languages and external compilers.
Documentation | Examples | Getting started | Roadmap | News | Discussions
If you are using Linux, install following dependencies:
sudo apt install pkg-config libfontconfig-dev libxcursor-dev libxi-dev libxrandr-dev libglew-dev libstdc++-static libpulse-dev libdbus-1-dev
sudo dnf install fontconfig-devel libXi libglvnd-devel libstdc++-static glew-devel pulseaudio-libs-devel
Use our setup-free repository templates for quick start:
To link AUI to your project, use the following CMake script. This script is self sufficient and does not require additional setup, AUI is imported to your project thanks to AUI.Boot.
CMakeLists.txt:
# Standard routine
cmake_minimum_required(VERSION 3.16)
project(aui_app)
set(AUI_VERSION v7.0.1)
# Use AUI.Boot
file(
DOWNLOAD
https://raw.githubusercontent.com/aui-framework/aui/${AUI_VERSION}/aui.boot.cmake
${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)
include(${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)
# import AUI
auib_import(aui https://github.com/aui-framework/aui
COMPONENTS core views
VERSION ${AUI_VERSION})
# Create the executable. This function automatically links all sources from the src/ folder,
# creates CMake target and places the resulting executable to bin/ folder.
aui_executable(${PROJECT_NAME})
# Link required libs
aui_link(${PROJECT_NAME} PRIVATE aui::core aui::views)
src/main.cpp:
#include <AUI/Platform/Entry.h>
#include <AUI/Platform/AWindow.h>
#include <AUI/Util/UIBuildingHelpers.h>
#include <AUI/View/ALabel.h>
#include <AUI/View/AButton.h>
#include <AUI/Platform/APlatform.h>
using namespace declarative;
AUI_ENTRY {
auto w = _new<AWindow>("Window title", 300_dp, 200_dp);
w->setContents(Centered {
Vertical {
Centered { Label { "Hello world from AUI!" } },
Centered {
Button { "Visit GitHub page" }.clicked(w, [] {
APlatform::openUrl("https://github.com/aui-framework/aui");
}),
},
},
});
w->show();
return 0;
}
Result:

Visit layout building page and our introduction guide for more info.
Optionally, you can use one of our IDE plugins to set up the project.
aui.core - basic types (containers, strings, streams, etc...)aui.crypt - wrapper around OpenSSL for encryption functionalityaui.curl - wrapper around libcurl for http/https requestsaui.image - popular image format loader aui.json - JSON parseraui.network - networkingaui.toolbox - resource compileraui.uitests - UI testing based on GTestaui.views - UI toolkitaui.xml - XML parser- equals unsupported? equals planned+ equals almost completely supported# equals fully supported| Feature or module | Windows Vista+ | Windows XP | Linux | Android | MacOS | iOS |
|---|---|---|---|---|---|---|
| aui.core | # | # | # | # | # | # |
| aui.crypt | # | # | # | # | # | # |
| aui.curl | # | # | # | # | # | # |
| aui.image | # | # | # | # | # | # |
| aui.json | # | # | # | # | # | # |
| aui.network | # | # | # | # | + | + |
| aui.toolbox | # | # | # | - | # | - |
| aui.views | # | ? | + | + | + | + |
| aui.xml | # | # | # | # | # | # |
| Assets | # | # | # | # | + | + |
| Filesystem | # | # | # | # | + | + |
| Process creation | # | # | # | - | ? | - |
| Compiler | Support |
|---|---|
| MSVC 19+ (Visual Studio 20+) | Full |
| gcc (8+) | Full |
| MinGW (8+) | Won't compile |
| Cross-compile MinGW | Won't compile |
| clang | Full |
OpenGL as graphics hardware acceleration backendCheck the examples page in our docs or examples/ dir in our repo.



Please refer to LICENSE.
Our project is published under Mozilla Public License Version 2.0 (the License). In short, you can use AUI for free in your private (i.e, that does not go outside your company) projects.
If you would like to publish your project (including, but not limited to: sell, sign, release in software stores like Google Play or App Store), does not matter open source, closed source or proprietary, the License obligates you to: - Mention your project uses "AUI Framework" in your legal notice. - Release your changes to AUI (if any) under the same terms (the License).
As for the latter, you are welcome to upstream your changes (i.e., propose your changes to this repository).
You are not obligated to disclose your own sources nor release your own project under the same terms (License).
The AUI framework is maintained by Alexey Titov (Alex2772, alex2772sc 'at' gmail.com) with contributions from many other people.
Let us know if your contribution is not listed or mentioned incorrectly, and we'll make it right.
The project evolves fast and inconsistently, possibly breaking backward compatibility. The APIs likely to be changed/removed are marked in docs as experimental. Consult with our migration guides on release pages.
You are welcome to open issues and pull requests on our GitHub repository. This project is maintained by a team of volunteers on a reasonable-effort basis. As such, we can accept your issue, but we can't guarantee resolution. It's all depends on severity and our own needs. In fact, we'd be happy if you submit a pull request. In this case we'll do our best to help you merge your changes to upstream.
Please refer to CONTRIBUTING.md