Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xortroll/plutonium
An easy-to-use UI framework for Nintendo Switch homebrew
https://github.com/xortroll/plutonium
gui homebrew horizon libnx sdl2 switch ui
Last synced: 1 day ago
JSON representation
An easy-to-use UI framework for Nintendo Switch homebrew
- Host: GitHub
- URL: https://github.com/xortroll/plutonium
- Owner: XorTroll
- License: mit
- Created: 2018-07-18T19:09:27.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-11T20:07:43.000Z (5 months ago)
- Last Synced: 2025-01-12T21:01:34.916Z (8 days ago)
- Topics: gui, homebrew, horizon, libnx, sdl2, switch, ui
- Language: C++
- Homepage: https://xortroll.github.io/Plutonium/
- Size: 4.8 MB
- Stars: 275
- Watchers: 11
- Forks: 40
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Plutonium - an easy-to-use UI framework for Nintendo Switch homebrew
## What is Plutonium?
Plutonium is a high-level, C++ graphics library with the aim of making Nintendo Switch homebrew UIs in a more user-firendly way.
It uses libnx and SDL2, so both libraries are required.
To be more exact, this libraries should be installed via pacman:
```
switch-sdl2 switch-sdl2_ttf switch-sdl2_image switch-sdl2_gfx switch-sdl2_mixer switch-mesa switch-glad switch-glm switch-libdrm_nouveau switch-libwebp switch-libpng switch-freetype switch-bzip2 switch-libjpeg-turbo switch-opusfile switch-libopus
```## Internal structure and performance
Plutonium internally uses SDL2 for UI rendering.
Plutonium's API is based on WPF/WinForms's system. The user doesn't directly interact with the rendering, as it's done via a main rendering system and different objects to render.
Check the [basic example](Example) for a basic usage of the libraries. In case you want to see a really powerful app which really shows what Plutonium is capable of, take a look at [Goldleaf](https://github.com/XorTroll/Goldleaf), [uLaunch](https://github.com/XorTroll/uLaunch) or many other homebrew apps made using this libraries.
Check the [documentation](https://XorTroll.github.io/Plutonium/) for a more detailed explanation of the library's usage.
## Using this libraries
On the [releases](https://github.com/XorTroll/Plutonium/releases) page you have all the released versions. All of them are zipped files, containing `include` and `lib` directories.
### Simple project layout
This is how a regular Plutonium project would (more or less) have its Makefile and project layout using Plutonium:
- Makefile
```Makefile
...LIBS := -lpu -lfreetype -lSDL2_mixer -lopusfile -lopus -lmodplug -lmpg123 -lvorbisidec -logg -lSDL2_ttf -lSDL2_gfx -lSDL2_image -lSDL2 -lEGL -lGLESv2 -lglapi -ldrm_nouveau -lwebp -lpng -ljpeg `sdl2-config --libs` `freetype-config --libs` -lnx
LIBDIRS := $(PORTLIBS) $(LIBNX) $(CURDIR)/Plutonium...
```- Project directory
```txt
Project
|
|-- Makefile
|-- source
|-- include
|-- Plutonium
|
|-- include
|-- lib
```## Building
Clone the repository, cd into `Plutonium` directory and run `make`.
You will need devkitPro, libnx and all the libraries mentioned above installed via pacman.
## Support
If you would like to be more informed about my projects' status and support, you should check [my Discord server](https://discord.gg/3KpFyaH). It's a simple server for Nintendo homebrew and hacking stuff, focused on my projects. If you would like to take part in testing .
If you like my work, you should take a look at my [Patreon](https://patreon.com/xortroll) page!