• Stars
    star
    249
  • Rank 159,701 (Top 4 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx)

borealis logo

borealis

Controller and TV oriented UI library for PC and Nintendo Switch (libnx).

⚠️ Warning: the project is a WIP - See the Projects tab to follow the journey towards a stable version!

The code for the old version is available in the legacy branch.

⚠️ The wiki only contains the documentation for the old version of the library, it has yet to be updated!

  • Mimicks the Nintendo Switch system UI, but can also be used to make anything else painlessly
  • Hardware acceleration and vector graphics with automatic scaling for TV usage (powered by nanovg)
  • Can be ported to new platforms and graphics APIs by providing a nanovg implementation
  • Powerful layout engine using flex box as a base for everything (powered by Yoga Layout)
  • Automated navigation paths for out-of-the-box controller navigation
  • Out of the box touch support
  • Define user interfaces using XML and only write code when it matters
  • Use and restyle built-in components or make your own from scratch
  • Display large amount of data efficiently using recycling lists
  • Integrated internationalization and storage systems
  • Integrated toolbox (logger, animations, timers, background tasks...)

Building the demo for Switch

To build for Switch, a standard development environment must first be set up. In order to do so, refer to the Getting Started guide.

(sudo) (dkp-)pacman -S switch-glfw switch-mesa switch-glm
make -j
nxlink -s borealis_demo.nro

Building the demo for PC

To build for PC, the following components are required:

  • meson/ninja build system
  • A C++ compiler supporting the C++17 standard
  • GLFW version 3.3 or higher (as a static library)
  • GLM version 0.9.8 or higher

Please refer to the usual sources of information for your particular operating system. Usually the commands needed to build this project will look like this:

meson build
ninja -C build
./build/borealis_demo

Also, please note that the resources folder must be available in the working directory, otherwise the program will fail to find the shaders.

Building the demo for Windows using msys2

msys2 provides all packages needed to build this project:

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-meson mingw-w64-x86_64-ninja mingw-w64-x86_64-pkg-config mingw-w64-x86_64-glfw mingw-w64-x86_64-glm
meson build
ninja -C build
./build/borealis_demo

Including in your project (TL;DR: see the demo makefile in this repo)

  1. Your project must be built as C++17 (-std=c++1z). You also need to remove -fno-rtti and -fno-exceptions if you have them
  2. Use a submodule (or even better, a subrepo) to clone this repository in your project
  3. Copy the resources folder to the root of your project
  4. For PC (meson):
    1. take a standard meson file
    2. use subdir to import the library folder
    3. use the borealis_files, borealis_dependencies, borealis_include and borealis_cpp_args variables for respectively objects to build, dependencies (glfw...), includes directory and cpp args
    4. add a BRLS_RESOURCES define pointing to the resources folder at runtime (so resources)
  5. For Switch:
    1. take a standard deko3d homebrew makefile (from the switch-examples repo)
    2. add a BOREALIS_PATH variable containing the subfolder you put the library in
    3. set ROMFS to the resources folder - borealis resources path is set to romfs:/ in borealis.mk
    4. use include to load borealis.mk (after LIBDIRS and BOREALIS_PATH)
    5. it's important for OUT_SHADERS to be set to shaders since nanovg will look for the shaders there
    6. if you have issues with the BRLS_RESOURCES define (missing quote terminator), change the @$(MAKE) line to @MSYS2_ARG_CONV_EXCL="-D;$(MSYS2_ARG_CONV_EXCL)" $(MAKE) in the Makefile (as in the demo Makefile)

More Repositories

1

linux-amlogic-toolkit

Allows to unpack and repack AMLogic images for Android 7 without the Customization Tool
C
164
star
2

painless-linux

Boot Linux on the Switch without imx_usb_loader - Windows, Linux, Mac OS & Android
Python
159
star
3

Steam-Apps-Manager

Windows software to move Steam apps between disks
C#
27
star
4

switch-nanovg

Nintendo Switch nanovg "port"
C
19
star
5

ramponlang

A Mr. Rampon inspired "programming language"
Shell
16
star
6

spotify-library-blind-test

A blind test for your Spotify library tracks
HTML
7
star
7

progression-confinement-france

Nous sommes en guerre
HTML
6
star
8

openedt

Application Android libre de consultation d'emplois du temps universitaires
Java
6
star
9

AmlImagePacker

Tool which packs a Amlogic ROM into a burnable IMG file
C++
6
star
10

switch-pkgs

Switch packages for devkitpro pacman
Shell
4
star
11

RetroMachine-TeensyduinoSketch

The Teensyduino sketch for the RetroMachine game controller (Teensy LC)
Arduino
4
star
12

Widgeteer

Write cross-platform Flutter apps in pure Swift with a SwiftUI-like syntax
Dart
3
star
13

Simple-3DS-GBA-Banner-Icon-Generator

Grab and generate 3DS GBA Virtual Console Icons and Banners from libretro's thumbnails database
C#
3
star
14

ScarletUI

Swift
2
star
15

wow-smart-recruitment-macro

A decentralized WoW guild recruitment macro which doesn't suck - the GM updates it, it spreads to everyone, even offline players
Lua
2
star
16

launchmycraft

Open source reimplementation of the Minecraft Launcher, wired to the LaunchMyCraft servers
Java
2
star
17

khanar

Gestionnaire de fichiers en C++, dans le cadre d'un projet de développement de L3 Informatique à l'Université de Nantes.
C++
2
star
18

Ripple

PoC of a Swift data-driven UI framework using Combine, autoclosures and code generation to obtain a SwiftUI-like syntax
Swift
1
star