Un écran, c'est quelques lignes de XML
Décrivez l'écran en XML, mis en page en flexbox ; liez ses vues en C++. Le focus suit la croix directionnelle tout seul, le tactile et la souris marchent aussi, et chaque couleur suit le thème.
<!-- 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");
};Démo en direct
La vraie démo, dans votre navigateur
La démo d'Aurore compilée avec Emscripten : le même code que sur une Switch, dessiné en WebGL 2. Clavier, souris, écran tactile ou manette à l'écran ; tous les thèmes et toutes les langues.
Fonctions
Tout ce qu'il faut à un menu de console
Faite pour les manettes
Le focus se déplace tout seul à la croix ; le tactile et la souris marchent aussi, et le pied de page montre les boutons qui font quelque chose.
Mise en page flexbox
Chaque vue est placée par Yoga, décrite en XML, du code seulement là où il compte.
gap,flexWrap, un arrondi par coin.Graphismes vectoriels
Accélérés par nanovg : OpenGL, Direct3D 11, deko3d sur la Switch, GXM sur la Vita, à l'échelle d'une télé.
Des composants prêts
Onglets, listes et grilles qui recyclent leurs cellules, réglages, dialogues, feuilles d'actions, toasts, curseurs, Markdown, tous restylés par un thème.
Thèmes
Chaque couleur est une clé de thème. Fichiers et dossiers de thème apportent palettes, images, logos, icônes et décors, changés pendant que l'app tourne, contraste vérifié.
15 langues
Un catalogue JSON par langue, changée pendant que l'app tourne ; emoji en couleur et texte de droite à gauche en option.
Des outils
Un banc de tests avec temps simulé et comparaison de captures, un inspecteur (F12), le rechargement à chaud du XML et des thèmes, un profileur, un modèle d'app.
La boîte à outils
Journal, animations, minuteurs, tâches de fond, stockage : ce qu'il faut à une app autour de ses écrans.
Cadran
Une allure à elle, sans une ligne de code
Cadran, l'allure de PlayGuard et PlayShelf, est celle d'Aurore par défaut : un rail d'icônes, des cartes, des modales, des feuilles d'actions, des icônes vectorielles, un thème clair et un sombre, langue et thème changés pendant que l'app tourne. aurore::Application::setCadran(false) garde celle de borealis.
Captures
La démo, sous plusieurs allures












Ce qu'Aurore ajoute
borealis, poursuivie
Aurore suit l'amont (xfangfang/borealis) et ajoute des corrections et des fonctions reprises d'autres forks, et ce dont ses apps ont besoin : chacune à activer, sauf les corrections.
- Thèmes : fichiers et dossiers de thème, palettes tirées d'une couleur, préréglages, images, logos, icônes, décors et particules, tous changés à la volée.
- Styles : styles par état (focus, appuyé, désactivé, survol), transitions, liaison de données et libellés d'accessibilité.
- Vues : une grille et une rangée qui recyclent, des menus contextuels, des boutons-icônes, du Markdown.
- Mise en page : Yoga 3,
gap,flexWrapavec le focus d'une ligne à l'autre, un arrondi par coin, des dégradés. - Texte : une échelle de police pour chaque libellé, réduction pour tenir, des retours à la ligne propres.
- Focus et indications : plus de focus perdu dans une vue cachée ou détruite ; des indications de pied de page stables.
- Plateformes : manettes reconnectées sous SDL, le navigateur (Emscripten), la mémoire de commandes de deko3d sur la Switch.
- Vitesse : pas de remise en page pour un texte ou une taille inchangés, attributs XML enregistrés à la demande, textures inutilisées libérées.
L'utiliser
Dans votre projet
- Compilez votre projet en C++20, avec RTTI et exceptions.
- Ajoutez Aurore en sous-module, et copiez son dossier
resourcesà la racine de votre projet.git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore git submodule update --init --recursive - Dans votre
CMakeLists.txt, incluezcommonOption.cmakeettoolchain.cmakeavantproject(), ajoutez la bibliothèque après, et liezAurore::aurore. - Choisissez la plateforme avec
-DAURORE_PLATFORM=…:DESKTOP,SWITCH,PSV,PS4,ANDROID,IOS.
Vous partez de zéro ? template/ est une app minimale qui se compile pour l'ordinateur et la Switch.
Vous venez de borealis ? brls::, <borealis.hpp> et BRLS_ marchent encore jusqu'à la 1.0 : changer le sous-module suffit. →
Compiler la démo
Sous Linux, macOS ou Windows ; les commandes des autres plateformes sont celles de la 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_demoFaites avec borealis
Des apps qui tournent dessus
- PlayGuardLe contrôle parental de la Nintendo Switch, sur la console
- PlayShelfUne ludothèque, un catalogue et des téléchargements pour la Switch
- Moonlight-SwitchLe streaming de jeux Moonlight pour la Switch
- wiliwiliClient bilibili pour PC, PS4, PS Vita, Xbox et la Switch
- switchfinClient Jellyfin pour PC, PS4 et la Switch
- SimpleModDownloaderLes mods de GameBanana, téléchargés sur la Switch
Documentation
Documentation
Licence
Le code de borealis est sous licence Apache 2.0 ; Cadran, l'allure par défaut d'Aurore, est sous GPLv3, et une app construite avec aussi. Un logiciel libre, maintenu par JigSawFr.