uLaunch is a custom, open-source replacement/reimplementation for the Nintendo Switch's HOME menu (qlaunch), extending it with amazing, homebrew-oriented features!
Forked from XorTroll/uLaunch!
This fork merges some upstream PRs that were never accepted to fix bugs with menuing. It also adds the ability to use custom icons for folders in the main menu.
On startup, uLaunch looks in the /ulaunch/entries
directory, reading the files in numerical order. Each file is a json entry defining the item. The entry must have a type - type 1 is an installed application, type 2 is a custom homebrew nro. Type 1 must have an application_id
field set. Type two must have a nro_path
set to the .nro binary (and optional nro_argv
). All other fields are the same. A sample entry for a retroarch title is as follows:
{
"type": 2,
"nro_path": "sdmc:/retroarch/cores/nestopia_libretro_libnx.nro",
"nro_argv": "\"sdmc:/roms/nes/My Custom Rom.nes\"",
"folder": "NES",
"folder_icon": "sdmc:/icons/nes.png",
"name": "My Custom Rom",
"author": "Me",
"version": "NES",
"icon": "sdmc:/retroarch/thumbnails/Nintendo - Nintendo Entertainment System/Named_Boxarts/My Custom Rom.png"
}
In this setup, all entries with the same folder
field are grouped together. The first entry containing that folder name may also specify a folder_icon
to display a custom icon for the folder. All other entries with the same folder name ignore the folder_icon
field.
uLaunch is a project which aims to replace the console's HOME menu with a custom, homebrew-oriented one.
-
This isn't some kind of HOME menu extension, injection, patch, etc. uLaunch is a complete reimplementation, 100% open-source, which also takes over eShop and Parental control applets (all of them pretty much useless with this reimpl) for its extended functionality.
-
For those who are interested in how the UI was done, this project is, like Goldleaf, a good example of how powerful Plutonium libraries can be in order to make beautiful UIs.
Want to create custom forwarders (eg. RetroArch ones)? check uViewer tool in latest releases!
Want to find themes for uLaunch? Check the r/uLaunchThemes subreddit!
For more detailed information about the whole project (and themeing too), check its wiki!
List of HOME menu features uLaunch has:
-
Proper launching and foreground management: launch, suspend and close applications and applets
-
Proper general channel handling (some of it might be not implemented): sleep, shutdown, reboot, HOME menu press detection...
-
Settings:
-
Show connected WiFi network's name, MAC and IP address...
-
Open connection applet in case user wants to change network settings
-
Change console's language and show active one
-
Change console's nickname and show current one
-
-
User features:
-
Allow creating user on the startup menu
-
Show user's page (in order to edit nickname, icon, friends...)
-
-
Homebrew support
-
Launching as applets (no need of Album!)
-
Launching as applications (using a donor title!)
-
Custom basic homebrew menu
-
Option to add custom NRO accessors to main menu (homebrew or custom items easily accessible, no more need of forwarders!)
-
-
UI
-
Themes (different to official HOME menu themes/NXThemes)
-
Custom icons, menu assets and graphics (custom images, colors, sizes, positions...), background...
-
Custom background music and sound effects!
-
-
Folders in order to keep your main menu organized!
-
-
Users
-
PC-like login on startup (select user and use it for everything, log off, register/change/remove password...)
-
User password support! (up to 15 characters)
-
-
Miscellaneous extras
-
Web browsing (via web-applet) directly from the main menu!
-
Console screen capturing from PC itself (Windows-only) via USB-C cable and uViewer tool!
-
While no bans have been reported related to using uLaunch, replacing the retail HOME menu's functionality is never a completely safe idea, so always use it at your own risk.
-
Improve Daemons's IPC with two services, one only for Daemon and the other one for any process to interact with uLaunch:
-
Easy way to detect whether uLaunch is present
-
Get whether a title/homebrew is opened
-
-
(check suggestions and bugs in issues for user-submitted TODOs)
You will need devkitPro, devkitA64, libnx and all SDL2 libraries for switch development.
Clone (recursively!) this repo (since it uses Atmosphere-libs and Plutonium submodules) and just enter make
in the command line. It should build everything and generate a SdOut
folder whose contents sould directly be copied to the root of a console SD card.
In order to only build a certain subproject, you can run make
plus the subproject's name (make daemon
, make hbtarget
or make menu
).
TODO: Streamline this
$ docker-compose up -d
# Connect to the environment
$ docker-compose exec switch bash
# Update packages
$ dkp-pacman -Syu
# Build
$ make -j$(nproc)
-
SciresM for Atmosphere-libs.
-
Switchbrew team for libnx and nx-hbloader, the base of the uHbTarget processes (they're essentially wrappers of nx-hbloader). This project also makes use of hx-hbmenu's icon.
-
C4Phoenix for the amazing design of this project's logo.
-
Icons8 website for a big part of the icons used by the default style.
-
Several scene developers for their help with small issues or features.
-
Everyone from Discord or other places whose suggestions made this project a little bit better ;)