GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - aui-framework/aui: Declarative UI toolkit for modern C++20

BranchesTags
Open more actions menu

Latest commit

 

History

3,490 Commits
3,490 Commits

Folders and files

NameName
Last commit message
Last commit date
.claude/skills/aui-remote
.claude/skills/aui-remote
 
 
.github
.github
 
 
.idea
.idea
 
 
.vscode
.vscode
 
 
aui.audio
aui.audio
 
 
aui.core
aui.core
 
 
aui.crypt
aui.crypt
 
 
aui.curl
aui.curl
 
 
aui.data
aui.data
 
 
aui.dev_extras
aui.dev_extras
 
 
aui.image
aui.image
 
 
aui.json
aui.json
 
 
aui.mysql
aui.mysql
 
 
aui.network
aui.network
 
 
aui.remote
aui.remote
 
 
aui.sqlite
aui.sqlite
 
 
aui.toolbox
aui.toolbox
 
 
aui.uitests
aui.uitests
 
 
aui.updater
aui.updater
 
 
aui.views
aui.views
 
 
aui.xml
aui.xml
 
 
cmake
cmake
 
 
docs
docs
 
 
examples
examples
 
 
platform
platform
 
 
test
test
 
 
test_package
test_package
 
 
.clang-format
.clang-format
 
 
.clang-tidy
.clang-tidy
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CMakePresets.json
CMakePresets.json
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CREDITS.md
CREDITS.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
Resource.rc
Resource.rc
 
 
aui.boot.cmake
aui.boot.cmake
 
 
conanfile.py
conanfile.py
 
 
gdb.py
gdb.py
 
 
lldb.py
lldb.py
 
 
logo.svg
logo.svg
 
 
mkdocs.yml
mkdocs.yml
 
 
pixi.toml
pixi.toml
 
 
valgrind_suppressions.supp
valgrind_suppressions.supp
 
 

Repository files navigation

AUI (Advanced Universal Interface)

build badge discord badge

logo

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 
 


Quickstart

Linux dependencies

If you are using Linux, install following dependencies:

Debian/Ubuntu

sudo apt update
sudo apt install pkg-config libglew-dev zlib1g-dev libssl-dev libcurl4-openssl-dev libgtk-3-dev libdbus-1-dev libfontconfig-dev ninja-build libpulse-dev git cmake g++ libxcursor-dev libxi-dev libxrandr-dev libstdc++-static libpulse-dev libdbus-1-dev libepoxy-dev

Fedora

sudo dnf install fontconfig-devel libXi libglvnd-devel libstdc++-static glew-devel pulseaudio-libs-devel libepoxy-devel

AUI App Template ⚡

Use our setup-free repository templates for quick start:

  1. Minimal UI - an absolute minimum to start a graphical UI application, without any boilerplate.
  2. Minimal UI with assets - same as above but with assets.
  3. Full-fledged App Template - a complete template to create a GitHub-hosted app project with CI/CD building, testing, releasing, auto updating, code quality checking and more.

Integrating AUI to existing CMake project

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.

Download aui.boot (one-time):

curl https://raw.githubusercontent.com/aui-framework/aui/refs/heads/master/aui.boot.cmake -o aui.boot.cmake

Update CMakeLists.txt

CMakeLists.txt:

# Standard routine
cmake_minimum_required(VERSION 3.16)
project(aui_app)

include(aui.boot.cmake)
set(AUI_VERSION v8.0.0-rc.21)

# 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:

Example window

Key features

  • Extended common types (containers, strings, streams, etc...)
  • Graphical User Interfaces, including framework tools for fast declarative UI producing using modern C++ capabilities
  • Resource compiler (assets)
  • Internationalization (i18n)
  • DPI support
  • CMake deployment scripts
  • Model binding
  • Encryption
  • IO streams
  • Networking, including http(s) requests
  • Both asynchronous and synchronous application architecture support

Module list

  • aui.core - basic types (containers, strings, streams, etc...)
  • aui.crypt - wrapper around OpenSSL for encryption functionality
  • aui.curl - wrapper around libcurl for http/https requests
  • aui.image - popular image format loader
  • aui.json - JSON parser
  • aui.network - networking
  • aui.toolbox - resource compiler
  • aui.uitests - UI testing based on GTest
  • aui.views - UI toolkit
  • aui.xml - XML parser

Feature support

  • equals this feature is unusable on given platform
  • - equals unsupported
  • ? equals planned
  • + equals has naive implementation that may contain issues
  • # 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 # # # # # #
App packaging # # # # # #
HiDPI # # # # # #
Filesystem # # # # + +
Prebuilt binaries # - # ? ? ?
Process creation # # # ?
AUI Devtools # # # - # -
Custom window # # # ? ? ?
IME - - + - + -
Touch - - - # - #
Drag n drop + - - - -
Global menu ? ?
OpenGL renderer # # # # # #
Software renderer # # # ?
Hot Code Reload - - # - - -
Compiler Support
MSVC 19+ (Visual Studio 20+) Full
gcc (13+) Full
MinGW (13+) Static only*
Cross-compile MinGW Static only*
clang Full
* Use -DBUILD_SHARED_LIBS=OFF

Used libraries

  • libcurl for http/https requests
  • MbedTLS for encryption
  • OpenGL as graphics hardware acceleration backend
  • glm for linear algebra
  • stbimage for image loading
  • freetype2 for font rendering
  • LunaSVG for SVG rendering
  • GTest for unit testing
  • Google Benchmark for benchmark testing

IDE Plugins

Refer to documentation page

Projects using AUI

  • AUI Telegram Client AUI Telegram Client
  • Magicsea Online Magicsea Online
  • Amplitude Studio Amplitude Studio

Examples

Check the examples page in our docs or examples/ dir in our repo.

Fractal

Views

Minesweeper

Licensing

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).

Maintaining

The AUI framework is maintained by Alexey Titov (Alex2772, alex2772sc 'at' gmail.com) with contributions from many other people. Join our Discord community for voice calls.

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.

Contributing

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

About

Declarative UI toolkit for modern C++20

Topics

c-plus-plusc-plus-plus-20cmakecross-platform-guidesktopframeworkgui-frameworkgui-toolkitopengltoolkit

Resources

Readme
MPL-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

610 stars

Watchers

12 watching

Forks

44 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.