Skip to content

Commit

Permalink
uNew just got some major improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
XorTroll committed Jul 1, 2024
1 parent dc09573 commit 19adf7d
Show file tree
Hide file tree
Showing 268 changed files with 4,052 additions and 27,170 deletions.
27 changes: 14 additions & 13 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@

name: Build uLaunch

on: [push]
on: [push, pull_request]

jobs:
uLaunch:
runs-on: ubuntu-latest

container:
image: devkitpro/devkita64
container: devkitpro/devkita64:latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@master
with:
submodules: recursive

- name: Update packages
- name: Update packages and install Python
run: |
sudo -n apt-get update
sudo -n apt-get upgrade -y git maven
sudo -n apt-get upgrade -y patch autoconf automake diffutils pkgconf fakeroot git maven file tar bzip2 zstd python3 python3-pip
python3 -m pip install requests
sudo -n dkp-pacman --noconfirm -U \
"https://wii.leseratte10.de/devkitPro/other-stuff/dkp-toolchain-vars-1.0.2-1-any.pkg.tar.xz"
- name: Silence all git safe directory warnings
run: git config --system --add safe.directory '*'

- name: Update repository
run: |
git submodule update --init --recursive
- name: Set workspace permissions
run: chmod 777 -R "$GITHUB_WORKSPACE"

- name: Prepare master libnx
run: |
Expand All @@ -39,3 +39,4 @@ jobs:
with:
name: SdOut
path: SdOut.zip
if-no-files-found: error
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,9 @@
[submodule "arc"]
path = arc
url = https://github.com/XorTroll/arc
[submodule "libs/json"]
path = libs/json
url = https://github.com/nlohmann/json
[submodule "libs/zip"]
path = libs/zip
url = https://github.com/kuba--/zip
7 changes: 4 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
VERSION_MAJOR := 1
VERSION_MINOR := 0
VERSION_MICRO := 0
VERSION := $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO)
export VERSION := $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO)

export UL_DEFS := -DUL_VERSION=\"$(VERSION)\"
export UL_DEFS := -DUL_MAJOR=$(VERSION_MAJOR) -DUL_MINOR=$(VERSION_MINOR) -DUL_MICRO=$(VERSION_MICRO) -DUL_VERSION=\"$(VERSION)\"

.PHONY: all fresh clean pu arc usystem uloader umenu umanager uscreen

Expand Down Expand Up @@ -47,6 +47,7 @@ umenu: pu
@$(MAKE) -C projects/uMenu
@mkdir -p SdOut/ulaunch/bin/uMenu
@mkdir -p SdOut/ulaunch/lang/uMenu
@mkdir -p SdOut/ulaunch/themes
@cp projects/uMenu/uMenu.nso SdOut/ulaunch/bin/uMenu/main
@cp projects/uMenu/uMenu.npdm SdOut/ulaunch/bin/uMenu/main.npdm
@build_romfs projects/uMenu/romfs SdOut/ulaunch/bin/uMenu/romfs.bin
Expand All @@ -58,4 +59,4 @@ umanager: pu
@cp projects/uManager/uManager.nro SdOut/switch/uManager.nro

uscreen:
@cd projects/uScreen && mvn package
@cd projects/uScreen && mvn package
90 changes: 48 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
<p align="center">
<img alt="uLaunch" src="projects/uMenu/romfs/Logo.png">
<img alt="uLaunch" height="100" src="projects/uMenu/romfs/Logo.png">
</p
**uLaunch** is an open-source replacement for the *Nintendo Switch HOME menu* with a custom, homebrew-oriented one:
![Screenshot](screenshot.jpg)
<p align="center">
<a title="Discord" href="https://discord.gg/3KpFyaH">
<img alt="Discord" src="https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&logoColor=fff&style=for-the-badge">
Expand Down Expand Up @@ -32,113 +36,115 @@
</a>
</p>

![Screenshot](screenshot.jpg)

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 an **entire** reimplementation (of key components), 100% open-source, which also (temporarily) takes over eShop and Parental control applets (by default, since all of them are pretty much useless here) for its extended functionality.
### Want to find **themes** for uLaunch? Check the [r/uLaunchThemes subreddit](https://www.reddit.com/r/uLaunchThemes/)!

- For those who are interested in how the UI was done, this project is, like [Goldleaf](https://github.com/XorTroll/Goldleaf), based on [Plutonium](https://github.com/XorTroll/Plutonium) UI libraries.
### Want to make **themes** yourself? Want to know more about the **technical** side of the project? Check [our wiki](https://github.com/XorTroll/uLaunch/wiki)!

<h3>
Table of contents
</h3>

- [Features](#features)
- [Building](#building)
- [FAQ](#faq)
- [Simple FAQ](#simple-faq)
- [Credits](#credits)

### Want to find **themes** for uLaunch? Check the [r/uLaunchThemes subreddit](https://www.reddit.com/r/uLaunchThemes/)!

### Want to make **themes** yourself? Want to know more about the **technical** side of the project? Check [our wiki](https://github.com/XorTroll/uLaunch/wiki)!

## Features

> TODO: add more I'm probably missing
- Basic HOME menu aspects

- Proper launching and foreground management: launch, suspend and close applications and library applets
- Foreground and background management: launch, suspend and close applications and library applets

- General channel handling (basic functionality): sleep, shutdown, reboot, HOME menu press detection...
- General channel handling (basic functionality): sleep, shutdown, reboot, HOME menu press detection...

- *System settings*:
- *Settings*

- Show connected WiFi network's name, MAC and IP address

- Open connections menu (connection applet), in case you wish to change network settings
- Various reimplemented system settings (several still need to be implemented)

- Check and change the console's language
- A few uLaunch-specific settings

- Check and change the console's nickname
- *Users*

- *User features*:
- PC-like login: select a user once in the startup menu, use it for everything afterwards!

- Create new users on the startup menu

- Show user's page (in order to edit nickname/icon, browse friends...)
- Show user page (in order to edit nickname/icon, browse friends...)

- *Homebrew support*

- Launch homebrew as applets (no need of the **album**!)
- Launch homebrew as applets (no need of using the *album*)

- Launch homebrew as **applications** (requires selecting a **donor title**!)
- Launch homebrew as *applications* (requires selecting a *donor/takeover application*)

- Add homebrew entries to the main menu (thus making homebrew or even custom entries easily accessible, no more need of **forwarders**!)
- Add homebrew entries to the main menu (thus making homebrew or even custom entries easily accessible, no more need of *forwarders*!)

- *UI*

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

- **Themes** (our own, different to official HOME menu themes, way more vibrant and colorful!)

- Custom icons, menu assets and graphics: custom backgrounds, images, colors, sizes, positions...

- Custom **background music** and **sound effects**

- **Folders** (and **subfolders**) in order to keep your main menu neatly organized
- Custom *background music** and *sound effects*

- Grid, 3DS-like menu layout for easier browsing
- **Folders** (and *subfolders*) in order to keep your main menu neatly organized

- *Users*

- PC-like login on startup: select a user once, use it for everything afterwards!
- Special menu entries, similar to old Nintendo console menus: settings, user page, album, mii editor, controllers, web browser...

- *Miscellaneous extras*

- Browse the Internet (via the normally hidden web-applet) directly from the main menu!

- Toggle between uLaunch and the original HOME menu (no permanent removal) and/or easily update uLaunch using our `uManager` homebrew tool!
- Toggle between uLaunch and the original HOME menu (no permanent removal), easily update uLaunch and more using our `uManager` homebrew tool!

- Stream the screen via USB (although at low speeds, about ~9 FPS) via `uScreen`! (mostly useful for taking quick screenshots, specially since uLaunch is able to capture more than SysDVR or usual game capture)

- Stream the screen via USB (although at low speeds, about ~9 FPS) via `uScreen`! (can be useful for taking quick screenshots, specially since uLaunch is able to capture more than SysDVR or usual game capture)
- uLaunch is a 100% open-source **entire** reimplementation (of key components): this isn't some kind of HOME menu extension, injection, patch, etc.

## Building

This project is, like [Goldleaf](https://github.com/XorTroll/Goldleaf), based on my [Plutonium](https://github.com/XorTroll/Plutonium) UI libraries.

You will need *devkitPro*, *devkitA64*, *libnx* and all SDL2 libraries for Switch development (make sure their packages are installed): `switch-sdl2 switch-freetype switch-glad switch-libdrm_nouveau switch-sdl2_gfx switch-sdl2_image switch-sdl2_ttf switch-sdl2_mixer`

Clone **recursively** this repo 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 usystem`, `make uloader`, `make umenu`, `make umanager`

## FAQ
## Simple FAQ

- 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 a technical issue. While all these mentioned menus are separate applets (separate programs, independent from the HOME menu itself, which can be launched at will) 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 implemented one by one.
- 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?

- 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. Keep in mind that uLaunch doesn't perform any telemetry or communications with N's servers whatsoever, thus they might be able to notice you're running something different from the original HOME menu.
- There have been some cases where using uLaunch may have 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 :)

## Credits

- SciresM for [Atmosphere-libs](https://github.com/Atmosphere-NX/Atmosphere-libs).

- Switchbrew team for [libnx](https://github.com/switchbrew/libnx) and [nx-hbloader](https://github.com/switchbrew/nx-hbloader), the base of `uLoader`.

- C4Phoenix for the amazing design of this project's logo.
- C4Phoenix for the original design of this project's logo.

- [Icons8](https://icons8.com/) website for a big part of the icons used by the default menu theme.
- [Iconos8](https://iconos8.es/), [WallpaperAccess](https://wallpaperaccess.com/), [Flaticon](https://www.flaticon.com/), [Iconfinder](https://www.iconfinder.com/) and [Icon Archive](https://www.iconarchive.com/) as the bases for most of the icons used by the default menu theme.

- Several scene developers for their help with small issues or features.

- Everyone who has halped translating the menu strings to other languages.
- Everyone who has helped translating texts to other languages.

- Everyone from Discord or other places whose suggestions made this project a little bit better! Specially all the testers, for reporting bugs and helping a lot with the project's development <3
- Everyone from my Discord and other places whose suggestions made this project a little bit better! Specially all the testers for being essential in reporting bugs and helping a lot with the project's development <3
Binary file modified assets/Logo.xcf
Binary file not shown.
Binary file added assets/default-theme/AlbumEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/AlbumQuickIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/Background.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/10.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/100.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/20.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/30.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/40.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/50.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/60.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/70.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/80.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/90.xcf
Binary file not shown.
Binary file added assets/default-theme/BatteryTopIcon/Charging.xcf
Binary file not shown.
Binary file added assets/default-theme/BorderOverIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/ConnectionTopIcon/0.xcf
Binary file not shown.
Binary file added assets/default-theme/ConnectionTopIcon/1.xcf
Binary file not shown.
Binary file added assets/default-theme/ConnectionTopIcon/2.xcf
Binary file not shown.
Binary file added assets/default-theme/ConnectionTopIcon/3.xcf
Binary file not shown.
Binary file not shown.
Binary file added assets/default-theme/ControllersEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/ControllersQuickIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/CursorOverIcon.xcf
Binary file not shown.
File renamed without changes.
File renamed without changes.
Binary file added assets/default-theme/EmptyEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/EntryMenuBackground.xcf
Binary file not shown.
Binary file added assets/default-theme/EntryMenuLeftIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/EntryMenuRightIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/FolderOverIcon.xcf
Binary file not shown.
Binary file not shown.
Binary file added assets/default-theme/InputBarBackground.xcf
Binary file not shown.
Binary file added assets/default-theme/MiiEditEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/MiiEditQuickIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/SelectedOverIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/SettingsEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/SettingsQuickIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/SuspendedOverIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/ThemesEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/ThemesQuickIcon.xcf
Binary file not shown.
Binary file not shown.
Binary file added assets/default-theme/TopMenuDefaultBackground.xcf
Binary file not shown.
Binary file added assets/default-theme/TopMenuFolderBackground.xcf
Binary file not shown.
Binary file not shown.
Binary file added assets/default-theme/WebBrowserEntryIcon.xcf
Binary file not shown.
Binary file added assets/default-theme/WebBrowserQuickIcon.xcf
Binary file not shown.
Binary file removed assets/default/Background.xcf
Binary file not shown.
Binary file removed assets/default/BannerHomebrew.xcf
Binary file not shown.
Binary file removed assets/default/Cursor.xcf
Binary file not shown.
Binary file removed assets/default/Folder.xcf
Binary file not shown.
Binary file removed assets/default/InputBar.xcf
Binary file not shown.
Binary file removed assets/default/TopMenu.xcf
Binary file not shown.
Binary file added assets/orig/Background.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/orig/Battery.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/orig/Battery100.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/orig/Settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/orig/Themes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/orig/WebBrowser.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/uManager.xcf
Binary file not shown.
2 changes: 1 addition & 1 deletion libs/Plutonium
Submodule Plutonium updated 74 files
+4 −4 Plutonium/include/pu/ui/elm/elm_Menu.hpp
+7 −2 Plutonium/include/pu/ui/render/render_Renderer.hpp
+13 −0 Plutonium/include/pu/ui/ui_Application.hpp
+18 −18 Plutonium/include/pu/ui/ui_Dialog.hpp
+3 −2 Plutonium/include/pu/ui/ui_Layout.hpp
+1 −1 Plutonium/include/pu/ui/ui_Overlay.hpp
+1 −1 Plutonium/include/pu/ui/ui_Types.hpp
+32 −2 Plutonium/source/pu/ui/ui_Application.cpp
+4 −1 Plutonium/source/pu/ui/ui_Dialog.cpp
+7 −5 Plutonium/source/pu/ui/ui_Layout.cpp
+1 −1 docs/d0/db0/elm___toggle_8hpp_source.html
+5 −5 docs/d1/dd0/elm___menu_8hpp_source.html
+1 −1 docs/d3/dd7/elm___progress_bar_8hpp_source.html
+1 −1 docs/d4/d16/extras___toast_8hpp_source.html
+8 −2 docs/d4/dbe/render___renderer_8hpp.html
+3 −0 docs/d4/dbe/render___renderer_8hpp.js
+248 −240 docs/d4/dbe/render___renderer_8hpp_source.html
+1 −1 docs/d4/dd2/elm___rectangle_8hpp_source.html
+18 −16 docs/d5/d04/ui___layout_8hpp_source.html
+2 −2 docs/d6/d08/ui___overlay_8hpp_source.html
+19 −0 docs/d6/d11/classpu_1_1ui_1_1_layout.html
+1 −0 docs/d6/d11/classpu_1_1ui_1_1_layout.js
+2 −2 docs/d6/d74/elm___image_8hpp_source.html
+2 −2 docs/d6/d8f/classpu_1_1ui_1_1_overlay.html
+40 −40 docs/d6/de9/classpu_1_1ui_1_1_dialog.html
+1 −1 docs/d7/d3f/elm___text_block_8hpp_source.html
+1 −1 docs/d9/d3b/elm___element_8hpp_source.html
+2 −2 docs/d9/d7f/namespacepu_1_1ui.html
+1 −1 docs/d9/de9/elm___button_8hpp_source.html
+76 −4 docs/da/d54/namespacepu_1_1ui_1_1render.html
+3 −0 docs/da/d54/namespacepu_1_1ui_1_1render.js
+151 −0 docs/da/dc0/classpu_1_1ui_1_1_application.html
+7 −0 docs/da/dc0/classpu_1_1ui_1_1_application.js
+166 −142 docs/db/d52/ui___application_8hpp_source.html
+1 −1 docs/dc/d49/classpu_1_1ui_1_1extras_1_1_toast.html
+8 −8 docs/dc/d6c/classpu_1_1ui_1_1elm_1_1_menu.html
+9 −8 docs/dc/dd4/classpu_1_1ui_1_1_layout-members.html
+28 −21 docs/dc/de9/classpu_1_1ui_1_1_application-members.html
+164 −165 docs/dd/d39/ui___dialog_8hpp_source.html
+1 −1 docs/df/d13/ui___types_8hpp.html
+1 −1 docs/df/d13/ui___types_8hpp_source.html
+16 −0 docs/doxygen_crawl.html
+2 −0 docs/functions_f.html
+1 −0 docs/functions_func_h.html
+2 −0 docs/functions_func_r.html
+2 −0 docs/functions_func_s.html
+1 −0 docs/functions_func_~.html
+1 −0 docs/functions_h.html
+2 −0 docs/functions_r.html
+2 −0 docs/functions_s.html
+2 −0 docs/functions_vars.html
+1 −0 docs/functions_~.html
+1 −0 docs/menudata.js
+7 −0 docs/namespacemembers.html
+3 −0 docs/namespacemembers_vars.html
+4 −4 docs/navtreedata.js
+10 −10 docs/navtreeindex0.js
+16 −16 docs/navtreeindex1.js
+117 −117 docs/navtreeindex2.js
+23 −23 docs/navtreeindex3.js
+22 −0 docs/navtreeindex4.js
+3 −1 docs/search/all_1.js
+9 −8 docs/search/all_16.js
+11 −9 docs/search/all_5.js
+8 −7 docs/search/all_7.js
+8 −6 docs/search/all_e.js
+63 −60 docs/search/all_f.js
+9 −8 docs/search/functions_13.js
+6 −5 docs/search/functions_7.js
+6 −4 docs/search/functions_e.js
+35 −33 docs/search/functions_f.js
+3 −1 docs/search/variables_1.js
+3 −1 docs/search/variables_4.js
+6 −5 docs/search/variables_e.js
1 change: 1 addition & 0 deletions libs/json
Submodule json added at 8c391e
3 changes: 2 additions & 1 deletion libs/uCommon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ include $(DEVKITPRO)/libnx/switch_rules
BUILD := build
TARGET := $(notdir $(CURDIR))
SOURCES := source source/ul source/ul/fs source/ul/cfg source/ul/menu source/ul/smi source/ul/system source/ul/acc source/ul/net source/ul/os source/ul/util
INCLUDES := include
INCLUDES := include ../json/single_include/nlohmann ../zip/src
SOURCES += ../zip/src
OUT_LIB := lib

#---------------------------------------------------------------------------------
Expand Down
Loading

0 comments on commit 19adf7d

Please sign in to comment.