Una pantalla son unas pocas líneas de XML
Describe la pantalla en XML, maquetada con flexbox; enlaza sus vistas en C++. El foco sigue la cruceta por sí solo, la pantalla táctil y el ratón también funcionan, y cada color sigue el tema.
<!-- 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
¡Te damos la bienvenida a Aurore!
Atrás
Demo en vivo
La demo de verdad, en tu navegador
La demo de Aurore compilada con Emscripten: el mismo código que en una Switch, dibujado con WebGL 2. El teclado, el ratón, una pantalla táctil o el mando en pantalla; todos los temas e idiomas.
Funciones
Todo lo que necesita el menú de una consola
Hecha para mandos
El foco se mueve solo con la cruceta; la pantalla táctil y el ratón también funcionan, y el pie muestra los botones que hacen algo.
Maquetación flexbox
Yoga coloca cada vista, descrita en XML, con código solo donde importa.
gap,flexWrap, un radio por esquina.Gráficos vectoriales
Acelerados por hardware con nanovg: OpenGL, Direct3D 11, deko3d en la Switch, GXM en la Vita, a escala de un televisor.
Componentes listos
Pestañas, listas y cuadrículas que reciclan sus celdas, celdas de ajustes, diálogos, hojas de acciones, avisos, controles deslizantes, Markdown, todos con el estilo del tema.
Temas
Cada color es una clave del tema. Los archivos y carpetas de tema traen paletas, imágenes, logotipos, iconos y decoraciones, y se cambian mientras la app funciona, con el contraste comprobado.
15 idiomas
Un catálogo JSON por idioma, que se cambia mientras la app funciona; emoji en color y texto de derecha a izquierda como opciones.
Herramientas
Un banco de pruebas con tiempo simulado y comparación de capturas, un inspector (F12), recarga en caliente del XML y los temas, un perfilador, una plantilla de app.
La caja de herramientas
Registro, animaciones, temporizadores, tareas en segundo plano, almacenamiento: lo que una app necesita alrededor de sus pantallas.
Cadran
Un aspecto propio, sin una línea de código
Cadran, el aspecto de PlayGuard y PlayShelf, es el de Aurore por defecto: una barra de iconos, tarjetas, ventanas modales, hojas de acciones, iconos vectoriales, un tema claro y uno oscuro, idioma y tema cambiados mientras la app funciona. aurore::Application::setCadran(false) conserva el de borealis.
Capturas
La demo, con varios aspectos












Lo que añade Aurore
borealis, continuada
Aurore sigue el proyecto original (xfangfang/borealis) y añade correcciones y funciones tomadas de otros forks, y lo que necesitan sus apps: cada una opcional, salvo las correcciones.
- Temas: archivos y carpetas de tema, paletas a partir de un color de acento, ajustes predefinidos, imágenes, logotipos, iconos, decoraciones y partículas, todo cambiado en vivo.
- Estilos: estilos por estado (foco, pulsado, desactivado, al pasar el puntero), transiciones, vinculación de datos y etiquetas de accesibilidad.
- Vistas: una cuadrícula y una fila que reciclan, menús contextuales, botones de icono, Markdown.
- Maquetación: Yoga 3,
gap,flexWrapcon el foco de una línea a otra, un radio por esquina, degradados. - Texto: una escala de fuente para cada etiqueta, reducción para que quepa, saltos de línea limpios.
- Foco y ayudas: ya no se pierde el foco en vistas ocultas o destruidas; ayudas estables en el pie.
- Plataformas: mandos reconectados con SDL, el navegador (Emscripten), la memoria de comandos de deko3d en la Switch.
- Velocidad: sin volver a maquetar un texto o un tamaño que no cambian, atributos XML registrados a demanda, texturas sin usar liberadas.
Úsala
En tu proyecto
- Compila tu proyecto como C++20, con RTTI y excepciones.
- Añade Aurore como submódulo y copia su carpeta
resourcesa la raíz de tu proyecto.git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore git submodule update --init --recursive - En tu
CMakeLists.txt, incluyecommonOption.cmakeytoolchain.cmakeantes deproject(), añade la biblioteca después y enlazaAurore::aurore. - Elige la plataforma con
-DAURORE_PLATFORM=…:DESKTOP,SWITCH,PSV,PS4,ANDROID,IOS.
¿Empiezas desde cero? template/ es una app mínima que se compila para el ordenador y la Switch.
¿Vienes de borealis? Cambia el submódulo y luego renombra brls::, <borealis.hpp> y BRLS_ con los nombres de Aurore: un buscar y reemplazar. →
Compilar la demo
En Linux, macOS o Windows; los comandos de las otras plataformas son los 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_demoHecho con borealis
Apps que funcionan con ella
- PlayGuardControl parental para la Nintendo Switch, en la propia consola
- PlayShelfUna biblioteca de juegos, catálogo y descargas para la Switch
- Moonlight-SwitchStreaming de juegos Moonlight para la Switch
- wiliwiliCliente de bilibili para PC, PS4, PS Vita, Xbox y la Switch
- switchfinCliente de Jellyfin para PC, PS4 y la Switch
- SimpleModDownloaderMods de GameBanana, descargados en la Switch
Documentación
Documentación
Licencia
El código de borealis está bajo la licencia Apache 2.0; Cadran, el aspecto por defecto de Aurore, es GPLv3, y también lo es una app creada con él. Software libre, mantenido por JigSawFr.