AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
APlatformAbstractionOptions Struct Reference

Defines core platform API priority and options for your application. More...

#include <AUI/Platform/linux/APlatformAbstractionOptions.h>

Detailed Description

Linux-specific
This API is available on Linux (-based desktop OSes) only.

This API is similar to ARenderingContextOptions, but defines which core platform API to use.

Member Data Documentation

◆ initializationOrder

AVector<InitializationVariant> APlatformAbstractionOptions::initializationOrder = defaultInitializationOrder()

Defines a list of APIs to use. If the first API fails to initialize, the next one is probed, and so on, until a successful API initialization is found.

By default, this field is initialized as such:

    if (auto auiPa = std::getenv("AUI_PA")) {
        if (auiPa == "adw1"sv) {
            return { Adwaita1 {} };
        }
        if (auiPa == "gtk4"sv) {
            return { Gtk4 {} };
        }
        if (auiPa == "x11"sv) {
            return { X11 {} };
        }
        ALogger::err("APlatformAbstractionOptions") << "Unknown AUI_PA \"" << auiPa << "\", ignoring";
    }
    // TODO at the moment, lets deploy gtk/libadwaita support as an experimental feature, which can be enabled with AUI_PA.
    return { X11{} };
    /*
    Future order:
    AVector<APlatformAbstractionOptions::InitializationVariant> defaultOrder = {
        Gtk4{},
        X11{},
    };
    if (auto xdgCurrentDesktop = std::getenv("XDG_CURRENT_DESKTOP")) {
        if (xdgCurrentDesktop == "GNOME"sv) {
            defaultOrder.insert(defaultOrder.begin(), Adwaita1{});
        }
    }
    return defaultOrder;
     */