Экран — это несколько строк XML
Опишите экран в XML с раскладкой flexbox; свяжите его представления в C++. Фокус сам следует за крестовиной, сенсорный ввод и мышь тоже работают, а каждый цвет следует теме.
<!-- resources/xml/activity/hello.xml -->
<aurore:AppletFrame>
<aurore:Box
title="Hello"
axis="column"
alignItems="center"
justifyContent="center"
gap="20">
<aurore:Label
text="@i18n/hello/welcome"
fontSize="24" />
<aurore:Button
id="hello_button"
style="primary"
width="300"
text="Say hello" />
</aurore:Box>
</aurore:AppletFrame>// hello_activity.hpp
#include <aurore.hpp>
class HelloActivity : public aurore::Activity
{
public:
CONTENT_FROM_XML_RES("activity/hello.xml");
void onContentAvailable() override
{
button->registerClickAction([](aurore::View*) {
aurore::Application::notify("Hello!");
return true;
});
}
private:
AURORE_BIND(aurore::Button, button, "hello_button");
};Hello
Добро пожаловать в Aurore!
Назад
Живое демо
Настоящее демо — в вашем браузере
Демо Aurore, собранное Emscripten: тот же код, что и на Switch, отрисованный через WebGL 2. Клавиатура, мышь, сенсорный экран или геймпад на экране; все темы и все языки.
Возможности
Всё, что нужно меню консоли
Создана для геймпадов
Фокус сам перемещается крестовиной; сенсорный ввод и мышь тоже работают, а нижняя панель показывает кнопки, которые что-то делают.
Раскладка flexbox
Каждое представление размещает Yoga, описано оно в XML, код — только там, где он нужен.
gap,flexWrap, свой радиус для каждого угла.Векторная графика
Аппаратное ускорение через nanovg: OpenGL, Direct3D 11, deko3d на Switch, GXM на Vita, с масштабом под телевизор.
Готовые компоненты
Вкладки, списки и сетки с переиспользованием ячеек, ячейки настроек, диалоги, листы действий, всплывающие уведомления, ползунки, Markdown — всё оформляется темой.
Темы
Каждый цвет — ключ темы. Файлы и папки тем приносят палитры, изображения, логотипы, значки и украшения, переключаются на ходу, с проверкой контраста.
15 языков
Один JSON-каталог на язык, переключение на ходу; цветные эмодзи и текст справа налево по желанию.
Инструменты
Тестовый стенд с имитацией времени и сравнением скриншотов, инспектор (F12), горячая перезагрузка XML и тем, профилировщик, шаблон приложения.
Набор утилит
Журнал, анимации, таймеры, фоновые задачи, хранилище: всё, что нужно приложению вокруг его экранов.
Cadran
Собственный облик без единой строки кода
Cadran, облик PlayGuard и PlayShelf, — облик Aurore по умолчанию: панель значков, карточки, модальные окна, листы действий, векторные значки, светлая и тёмная темы, язык и тема переключаются на ходу. aurore::Application::setCadran(false) оставляет облик borealis.
Скриншоты
Демо в разных обликах
Что добавляет Aurore
Продолжение borealis
Aurore следует за исходным проектом (xfangfang/borealis) и добавляет исправления и функции из других форков, а также то, что нужно её приложениям: каждая функция включается по желанию, кроме исправлений.
- Темы: файлы и папки тем, палитры из одного акцентного цвета, пресеты, изображения, логотипы, значки, украшения и частицы — всё переключается на лету.
- Стили: стили по состояниям (фокус, нажатие, отключение, наведение), переходы, привязка данных и подписи для специальных возможностей.
- Представления: сетка и строка с переиспользованием ячеек, контекстные меню, кнопки-значки, Markdown.
- Раскладка: Yoga 3,
gap,flexWrapс переходом фокуса между строками, свой радиус для каждого угла, градиенты. - Текст: масштаб шрифта для каждой подписи, ужатие по размеру, аккуратные переносы строк.
- Фокус и подсказки: фокус больше не теряется в скрытых или удалённых представлениях; подсказки внизу не мигают.
- Платформы: переподключение геймпадов в SDL, браузер (Emscripten), память команд deko3d на Switch.
- Скорость: никакой перераскладки для неизменённого текста или размера, XML-атрибуты регистрируются по требованию, неиспользуемые текстуры освобождаются.
Использование
В вашем проекте
- Собирайте проект как C++20, с RTTI и исключениями.
- Добавьте Aurore как подмодуль и скопируйте её папку
resourcesв корень своего проекта.git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore git submodule update --init --recursive - В своём
CMakeLists.txtподключитеcommonOption.cmakeиtoolchain.cmakeдоproject(), добавьте библиотеку после него и слинкуйтеAurore::aurore. - Выберите платформу через
-DAURORE_PLATFORM=…:DESKTOP,SWITCH,PSV,PS4,ANDROID,IOS.
Начинаете с нуля? template/ — минимальное приложение, которое собирается для компьютера и Switch.
Переходите с borealis? Замените подмодуль, затем переименуйте brls::, <borealis.hpp> и BRLS_ в имена Aurore: обычный поиск с заменой. →
Собрать демо
В Linux, macOS или Windows; команды для других платформ — те же, что в CI. →
git clone --recursive https://github.com/JigSawFr/aurore.git
cd aurore
cmake --preset desktop-glfw
cmake --build --preset desktop-glfw
./build/desktop-glfw/aurore_demoСделано на borealis
Приложения, которые на ней работают
- PlayGuardРодительский контроль для Nintendo Switch прямо на консоли
- PlayShelfБиблиотека игр, каталог и загрузки для Switch
- Moonlight-SwitchСтриминг игр Moonlight для Switch
- wiliwiliКлиент bilibili для ПК, PS4, PS Vita, Xbox и Switch
- switchfinКлиент Jellyfin для ПК, PS4 и Switch
- SimpleModDownloaderМоды с GameBanana, загружаемые на Switch
Документация
Документация
Лицензия
Код borealis распространяется под лицензией Apache 2.0; Cadran, облик Aurore по умолчанию, — под GPLv3, как и приложение, собранное с ним. Свободное ПО, поддерживаемое JigSawFr.










