화면 하나는 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에 오신 것을 환영합니다!
돌아가기
라이브 데모
진짜 데모를 브라우저에서
Emscripten으로 컴파일한 Aurore 데모: Switch와 같은 코드를 WebGL 2로 그립니다. 키보드, 마우스, 터치스크린, 화면의 패드로 조작할 수 있고, 모든 테마와 언어를 지원합니다.
기능
게임기 메뉴에 필요한 모든 것
컨트롤러를 위해
포커스는 방향 버튼으로 자동으로 이동합니다. 터치와 마우스도 동작하며, 하단에는 지금 쓸 수 있는 버튼이 표시됩니다.
Flexbox 레이아웃
모든 뷰는 Yoga가 배치하고 XML로 기술하며, 코드는 필요한 곳에만.
gap,flexWrap, 모서리별 반경.벡터 그래픽
nanovg의 하드웨어 가속: OpenGL, Direct3D 11, Switch의 deko3d, Vita의 GXM, TV에 맞춘 배율.
바로 쓰는 컴포넌트
탭, 셀을 재사용하는 목록과 그리드, 설정 셀, 대화 상자, 액션 시트, 토스트, 슬라이더, Markdown. 모두 테마로 스타일을 바꿀 수 있습니다.
테마
모든 색은 테마 키입니다. 테마 파일과 폴더로 팔레트, 이미지, 로고, 아이콘, 장식을 더하고, 앱 실행 중에 바꿀 수 있으며, 대비도 검사합니다.
15개 언어
언어마다 JSON 카탈로그 하나, 앱 실행 중에 전환. 컬러 이모지와 오른쪽에서 왼쪽으로 쓰는 텍스트는 옵션입니다.
도구
시간을 시뮬레이션하고 스크린샷을 비교하는 테스트 하네스, 인스펙터(F12), XML과 테마의 핫 리로드, 프로파일러, 앱 템플릿.
도구 상자
로거, 애니메이션, 타이머, 백그라운드 작업, 저장소: 화면 주변에서 앱에 필요한 것들.
Cadran
코드 한 줄 없이 나만의 모습
PlayGuard와 PlayShelf의 모습인 Cadran이 Aurore의 기본값입니다. 아이콘 레일, 카드, 모달, 액션 시트, 벡터 아이콘, 밝은 테마와 어두운 테마, 앱 실행 중에 바꾸는 언어와 테마. aurore::Application::setCadran(false)로 borealis 본래의 모습을 유지할 수 있습니다.
스크린샷
여러 모습의 데모
Aurore가 더하는 것
borealis를 잇다
Aurore는 업스트림(xfangfang/borealis)을 따라가면서 다른 포크에서 가져온 수정과 기능, 그리고 Aurore로 만든 앱에 필요한 것을 더합니다. 수정이 아닌 것은 모두 선택해서 켭니다.
- 테마: 테마 파일과 폴더, 강조색 하나로 만드는 팔레트, 프리셋, 이미지, 로고, 아이콘, 장식과 파티클. 모두 실시간 전환.
- 스타일: 상태별 스타일(포커스, 누름, 비활성, 호버), 전환 효과, 데이터 바인딩, 접근성 레이블.
- 뷰: 셀을 재사용하는 그리드와 행, 컨텍스트 메뉴, 아이콘 버튼, Markdown.
- 레이아웃: Yoga 3,
gap, 줄을 넘나드는 포커스를 지원하는flexWrap, 모서리별 반경, 그라데이션. - 텍스트: 레이블마다 글꼴 배율, 맞춤 축소, 깔끔한 줄바꿈.
- 포커스와 안내: 숨겨지거나 제거된 뷰에서 포커스를 잃지 않음. 하단 안내도 안정적.
- 플랫폼: SDL에서 컨트롤러 재연결, 브라우저(Emscripten), Switch의 deko3d 명령 메모리.
- 속도: 텍스트나 크기가 그대로면 레이아웃을 다시 하지 않음, XML 속성은 필요할 때 등록, 쓰지 않는 텍스처는 해제.
사용하기
내 프로젝트에서
- 프로젝트를 RTTI와 예외를 켠 C++20으로 빌드합니다.
- Aurore를 서브모듈로 추가하고, 그
resources폴더를 프로젝트 루트에 복사합니다.git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore git submodule update --init --recursive CMakeLists.txt에서project()앞에commonOption.cmake와toolchain.cmake를 포함하고, 그 뒤에 라이브러리를 추가한 다음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_demoborealis로 만든 앱
이 위에서 돌아가는 앱
- PlayGuard본체에서 바로 쓰는 Nintendo Switch 자녀 보호
- PlayShelfSwitch용 게임 라이브러리, 카탈로그와 다운로드
- Moonlight-SwitchSwitch용 Moonlight 게임 스트리밍
- wiliwiliPC, PS4, PS Vita, Xbox, Switch용 bilibili 클라이언트
- switchfinPC, PS4, Switch용 Jellyfin 클라이언트
- SimpleModDownloaderSwitch에서 내려받는 GameBanana 모드
문서
문서
라이선스
borealis의 코드는 Apache 2.0 라이선스입니다. Aurore의 기본 모습인 Cadran은 GPLv3이며, 이를 사용해 만든 앱도 마찬가지입니다. JigSawFr가 관리하는 자유 소프트웨어입니다.










