MCPcopy Create free account
hub / github.com/XorTroll/uLaunch

github.com/XorTroll/uLaunch @1.2.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.2.4 ↗ · + Follow
1,488 symbols 3,296 edges 128 files 8 documented · 1% updated 38d ago1.2.4 · 2026-06-07★ 78338 open issues

Browse by type

Functions 1,369 Types & classes 119
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

uLaunch

Discord Downloads License

Patreon GitHub sponsors PayPal

Ko-fi

Want to find themes for uLaunch? Check the ulaunch-themes channel on our Discord server!

Want to make your own uLaunch themes? Check our web theme editor or the wiki!

Features

Custom features

List of unique extensions that the official HOME Menu lacks:

  • User login system (login once, use that user for everything)

  • Grid-like main menu, deeply inspired by the 3DS menu (and partially DSi/Wii menus as well), easier than ever to navigate and customize

  • The grid can be resized like in 3DS menus

  • Entries can be moved as desired

  • Folders, subfolders...

  • Homebrew directly launchable straight from main menu as an applet or an application (using applications as donors)

  • Extensive themeing support

  • Backgrounds, icons, etc.

  • BGM and many sound effects

  • Web browser easily accessible straight from main menu

  • Mii editor easily accessible straight from main menu

  • Screen capture to PC support via USB

  • Display system version + Atmosphère version + EmuMMC presence independently, in a nicer way

  • Better display when gamecard fails to mount

  • 1080p resolution

Implemented base features

List of implemented official HOME Menu features:

  • Application launching, suspending and closing

  • Applet launching and closing

  • User page

  • Controller support

  • Settings (only a handful are so far implemented):

  • Console version

  • Atmosphère version

  • EmuMMC presence

  • Console nickname

  • Console timezone

  • WiFi connection name/WiFi settings

  • Console language

  • Console information upload (enable/disable)

  • Bluetooth (enable/disable)

  • NFC (enable/disable)

  • Automatic application download (enable/disable)

  • Automatic console update (enable/disable)

  • Wireless LAN (enable/disable)

  • Console serial number

  • Show console IP/MAC address

  • General channel/applet messages (some of them aren't implemented yet):

  • HOME button detection

  • Power off, sleep, reboot

  • SD card removal

  • Gamecard failing to mount

Unimplemented base features

List of not implemented official HOME Menu features:

Planned to be implemented

  • Auto-sleep after a certain amount of time

  • Several unimplemented settings

  • Several unimplemented general channel/applet messages

  • Console updating

Not planned to be implemented (at least for now)

  • eShop functionality

  • Parental control

  • Application (game) updates

Note that a lot of features could be considered in principle (savedata support, title removing, user management, activity log stuff...), but uLaunch's philosophy is to mainly avoid considering this features or, more generally, features already provided by existing homebrews or potentially providable by them. uLaunch is a custom HOME Menu, whose aim partially is to be extended with mostly HOME-menu-related features.

Setup

Installing uLaunch

  1. Download the latest release ZIP.

Note: this project is released and meant to be used with Atmosphère, so use it with different CFWs at your own risk.

  1. Copy everything inside the ZIP to the root of your SD card.

  2. If you have never used uLaunch or any kind of HOME Menu replacement (NXThemes don't count) you wouldn't need to overwrite any files.

  3. You don't need to remove your normal HOME Menu themes (NXThemes) in order to install uLaunch. Those themes are at a romfs dir inside contents/0100000000001000, while uLaunch's only file in that folder is contents/0100000000001000/exefs.nsp.

  4. Launch your CFW (using emuMMC or sysMMC shouldn't make a difference) and enjoy your new HOME Menu!

Removing uLaunch

Important: make sure you don't remove anything else but the stuff mentioned here, in order to avoid any potential trouble!

  1. If you'd like to keep your custom themes, menu entries, config, etc. then just use the uManager tool to disable uLaunch. This doesn't remove any data, allowing you to re-enable it back any moment.

  2. If you'd like to remove everything permanently, then you will have to remove atmosphere/contents/0100000000001000 and ulaunch folders on the SD card. If you also wish to remove uManager, then remove switch/uManager.nro.

Note: if you use any HOME Menu modification - like NXThemes - make sure you do not delete the entire 0100000000001000 folder, just the exefs.nsp file!

FAQ

  • uLaunch gives me a blackscreen. How can I fix it?

  • First of all, make sure you're using the latest release of uLaunch.

  • If new firmware updates or new Atmosphère versions have been released, you might need to wait for a new release to be dropped, and in the meantime you might be able to use dev/testing builds from our Discord server.

  • The log files uLaunch's components generate inside ulaunch folder can be really helpful when sharing your issue in Discord or GitHub. Make sure you don't reboot again into uLaunch, since the log files will be overwritten! Otherwise, just replicate the bug and share/copy the log files before reloading anything.

  • In more extreme cases, uLaunch's blackscreens might also be caused due bad handling of invalid theme/entry JSON files. The JSONs might have been corrupted (due to ExFAT, other homebrews...) so try deleting them.

  • uLaunch is crashing. How can I fix it?

  • Check log_uSystem.log inside /ulaunch for any information on the crash, as well as recent Atmosphère crash reports containing title ID 0100000000001000 or 010000000000100d in their name. The particular error code 2128-0100 means that uSystem crashed, so on those the problematic title ID is 0100000000001000.

  • Why can't I access the usual system settings, while I can access other normal system menus like the album, mii editor, user page, etc.?

  • This is an unfortunate technical issue. While the web browser, user page, album... are separate applets (separate programs, independent from the HOME Menu itself) system settings are actually part of HOME Menu itself. Therefore, we have to implement manually all of them... which requires its effort, so only a bunch of the available settings (plus a few extras) are currently available here, while the remaining settings are being reversed and implemented.

  • Will using uLaunch get me banned online?

  • There have been some cases where using uLaunch has caused bans. Keep in mind that replacing the official HOME Menu's functionality is never a completely safe idea, so always use it at your own risk. Since uLaunch doesn't perform any telemetry or communications with Nintendo servers, they might be able to notice you are running something different from the original HOME Menu.

  • Why does uLaunch (sometimes) feel slower than the official HOME Menu?

  • There are several possible reasons:

    • uLaunch loads more content than the official HOME Menu when loading. Most of the official HOME Menu's UI are solid colors, while uLaunch loads several images, etc. Being customizable comes with minor drawbacks, like this one.

    • Icons are lazily loaded, so for menus with many entries (essentially for people having a ton of games) navigating through the menu will be slightly laggy until everything loads, which will just take a few seconds. The 3DS menu has similar laggy moments, by the way ;)

    • Aside from the two excuses above, there is always room for further optimizations in uLaunch's code. Feel free to submit any issues of excessive lag/slowdowns, I'll do my best to improve it :)

Translating

Translations for uLaunch are always welcome!

The files to be translated are uMenu translations and uManager translations. They are pretty straightforward to understand, just JSON files with English sentences meant to be translated to any language officially supported by the Nintendo Switch.

Character \n is a new-line escape (indicates a new line) and must remain unchanged. Punctuation marks (mainly dots at the end of sentences, questions, double dots) must be respected, with perhaphs the exception of commas in the middle of sentences.

Feel free to open pull requests for translations, but it's better to keep contact with me through Discord.

As I work on new features and new strings are needed, I will manually add them as English on other language files to keep support.

Components

uSystem

uSystem is the system applet process replacement - the actual, literal HOME Menu replacement - and serves as a backend for the actual menu the user will interact with (uMenu).

uSystem handles essential HOME Menu functionality, like suspending/closing titles, closing applets, detecting power button or HOME button presses... it's very lightweight since it must always be running in the background.

It also communicates with uMenu for anything necessary via their smi communication system.

uMenu

uMenu is a library applet (running temporarily over the eShop applet when launched) which is the HOME Menu the user will see and interact with.

uMenu is launched and terminated by uSystem when necessary. In order to deal with special HOME Menu functionality (closing titles, launching them...) it communicates with uSystem via their smi communication system.

uLoader

uLoader is a custom nx-hbloader implementation, which allows to easily launch homebrew as applets or applications or even to choose homebrews as some sort of file dialog.

uManager

uManager is a homebrew NRO used for controlling key uLaunch aspects.

Only those tasks which cannot be performed outside uLaunch are controlled (like enabling or disabling uLaunch itself, hence why this is a separate NRO and not part of uMenu/etc), while everything else is controlled and managed on uLaunch itself.

uScreen

uScreen is a PC tool that communicates via USB with uSystem in order to capture the screen. Requires Java 8 or higher, but versions above that are recommended.

IMPORTANT! This should not be used for real-time recording due to the notorious lag! For those purposes use other tools like SysDVR. This feature is meant for capturing where other screen-recording tools do not work (HOME Menu, system settings and other similar places)

Note that USB screen capture is disabled by default, and has to be enabled in settings.

You also need to install libusbK drivers for USB to work fine:

Windows

The best way to install Java 9 in Windows (or a very simple one) is to install AdoptOpenJDK 11 or higher.

Note: make sure that the JDK/JRE you choose contains JavaFX! You can always install it manually otherwise

After installing it, double-clicking the JAR should be enough to start it.

Otherwise, run java -jar uScreen.jar in the command prompt.

For the USB to get recognized, follow the following steps:

  • Download Zadig

  • Boot your console with uLaunch (first ensur

Core symbols most depended-on inside this repo

Shape

Function 939
Method 430
Class 90
Enum 29

Languages

C++62%
TypeScript36%
Java2%

Modules by API surface

docs/udesigner.js529 symbols
projects/uDesigner/source/main.cpp60 symbols
projects/uSystem/source/main.cpp43 symbols
projects/uMenu/source/ul/menu/ui/ui_EntryMenu.cpp41 symbols
projects/uMenu/source/ul/menu/ui/ui_Common.cpp36 symbols
projects/uMenu/include/ul/menu/ui/ui_MenuApplication.hpp35 symbols
libs/uCommon/source/ul/menu/menu_Entries.cpp32 symbols
projects/uMenu/include/ul/menu/smi/smi_Commands.hpp25 symbols
projects/uMenu/source/ul/menu/ui/ui_SettingsMenuLayout.cpp24 symbols
projects/uMenu/include/ul/menu/ui/ui_Common.hpp24 symbols
libs/uCommon/include/ul/smi/smi_Protocol.hpp24 symbols
libs/uCommon/include/ul/fs/fs_Stdio.hpp23 symbols

For agents

$ claude mcp add uLaunch \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page