Sphaira - hbmenu replacement

Sphaira is hbmenu alternative. It currently has feature parity with hbmenu (that is, launches homebrew + nxlink) whilst adding quite a few features.



HomeBrew​

The main menu tab, it lists all the .nro found in "/switch/". From there, you can launch, sort, delete, create a forwarder etc.
You can navigate to the other menu tabs using "L" and "R", explained below.

FileBrowser​

By pressing "L" from the main menu, you can access the file browser. You can Cut, Copy, Delete, Rename etc.
You can select multiple files / folders by using the "ZR" button and then se the above functions of that group of files.

Forwaders can be created if the selected file has a file assoc, see below for more details.

Appstore​

sphaira features an appstore, using the api from https://hb-app.store/switch. It can be navigated to by pressing "R" from the main menu.
The appstore is feature parity with hb-appstore app, as well as installing the manifests in the same folder as hb-appstore, in order to not break compatibility between the two.

Themes​

sphaira comes with 3 themes, abyss (default), black and white (unfinished).
custom themes can be added to "/config/sphaira/themes/", here is the abyss theme for example:
INI:
[meta]
name=Abyss
author=TotalJustice
version=1.0.0
; unused currently
preview=romfs:/theme/preview.jpg

[theme]
background=0x0f111aff
grid=0x0f115c30
selected=0x0f115cff
selected_overlay=0x529cffff
text=0xffbc41ff
text_selected=0x529cffff

icon_audio=romfs:/theme/icon_audio.png
icon_video=romfs:/theme/icon_video.png
icon_image=romfs:/theme/icon_image.png
icon_file=romfs:/theme/icon_file.png
icon_folder=romfs:/theme/icon_folder.png
icon_zip=romfs:/theme/icon_zip.png
icon_nro=romfs:/theme/icon_nro.png

music can be added to a theme, as long as the music is converted to bfstm format. simply add an entry like so: `music=/config/sphaira/themes/music/bgmusic_pcm.bfstm`

Forwaders​

sphaira can create and install forwarders for any .nro. It will use the icon of the .nro and the name + author.

It can also install forwarders for files that have a file assoc. For example, if mgba is installed and a game is located in "/roms/gba/game.gba", then the "Install Fowarder" option will appear. In this case, it will try to scrape the icon of the game, otherwise it will use the icon of the .nro and the name will be a combination of the .nro name and game name.

File Assoc​

file assoc is a way to associate file extensions (.gba, .nro etc) with a homebrew app. For example, clicking on rom.gbc that has an file assoc will bring up a list of all the applications that can handle it.
This can be used for emulators, media players, text editors etc...

custom file assoc should go in the folder "/config/sphaira/assoc/"

the format is *very* simple, here is an example of vgedit.ini
INI:
[config]
supported_extensions=txt|json|cfg|ini|md|log

and again for mgba.ini
INI:
[config]
supported_extensions=gba|gbc|sgb|gb
database=Nintendo - Game Boy|Nintendo - Game Boy Color|Nintendo - Game Boy Advance

"path": (optional) fullpath to the .nro. if not specified, it uses the name of the ini, ie, mgba.ini will use mgba.nro.
"supported_extensions": list of extensions the application supports, separated by |. plea
"database": (optional) name of the rom database to use defined by the left-side of this table <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>..

All of the retroarch cores has file assoc built into sphaira, so if you download retroarch using the appstore, and then navigate to "/roms/gbc/game.gbc", gambatte and mgba will be available to be selected.

Games can be kept in .zip format, sphaira will peek into the .zip and find the real extension and use that for displaying icons / file assoc.

Roms​

roms should be placed in "/roms/system_name/" where system name is defined by this table right-side entries <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>.
this is the same layout emulation station uses. the reason for forcing roms to be in specific folders is due to many roms for different systems using the same file extension, ie, .bin / .cue or .chd.

roms placed in subfolders are allowed, for example "/roms/psx/scooby-doo/scooby-doo.bin" is valid.

Themezer​

themes can be browsed and download by going Menu Options -> Misc -> Themezer. Themes will be downloaded to "/themes/sphaira/Theme Name - By Author/".
To install themes, launch "NXThemes Installer" and browse to the selected folder listed above.

Nxlink​

For homebrew developers, nxlink is built into sphaira. You do not have to press any special buttons, just do "nxlink *.nro" and send your nro like normal, console logging works to be using "nxlink -s *.nro"
By default, this is enabled in the background, to disable it: Menu Options -> Network -> Nxlink.



That's most of the features spahira has. If you enjoy it so much that you'd rather it be launched over regular hbmenu, you can enable the option in "Menu Options -> Replace hbmenu on exit" where it will do just that. It will create a backup of hbmenu in "/switch/hbmenu.nro" should you wish to swap back.
homebrew.jpg

games.jpg

appstore.jpg

appstore_page.jpg

file_browser.jpg

themezer.jpg

launch_options.jpg


Releases: https://github.com/ITotalJustice/sphaira/releases/
Bleeding-edge Releases: https://github.com/ITotalJustice/sphaira/actions
Source Code: https://github.com/ITotalJustice/sphaira
 
Last edited by Deleted member 413168,
I have made a screenshot with the 2 forwarder (only difference is the icon).

Edit: removed .zip of the forwarder as there is a menu inside to do it B-)
 

Attachments

  • 20241218_184925.jpg
    20241218_184925.jpg
    58.7 KB · Views: 45
Last edited by ceut,
Great new icon, I have quiclky updated the .nsp forwarder for those who prefer launch it on the home screen (so with full access ):)

I have made a screenshot with the 2 forwarder (only difference is the icon).
fwiw, you can create forwarders from within sphaira. The title ID for the forwarder is generated from a hash of argv, so "/switch/sphaira/sphaira.nro" or "/switch/mgba.nro /roms/gba/game.gba" for example. this means that the title id will always be the same, so should you need to re-install the forwarder (to update the version number), it will overwrite the old one rather than install a new forwarder.
 
Last edited by Deleted member 413168,
  • Love
  • Like
Reactions: impeeza and ceut
The warning before installing a forwarder is only for people who are on sysNAND, right?

I'm on emuNAND, just checking because seeing that warning kind of freaks me out :p.
 
One day TotalJustice will make his own Daybreak which will delete themes before installing ;D
That's actually not a bad shout. It already supports loading daybreak if you click on a .nca within a folder that contains only .ncas, it will then launch daybreak with that folder open.

I could add an option to remove themes before launching.
Post automatically merged:

The warning before installing a forwarder is only for people who are on sysNAND, right?

I'm on emuNAND, just checking because seeing that warning kind of freaks me out :P.
It will always display the warning, although the warning is starting to annoy me :lol: I'll add option in the config which removes the warning prompt. This can only be changed manually in the config.ini
 
It will always display the warning, although the warning is starting to annoy me :lol: I'll add option in the config which removes the warning prompt. This can only be changed manually in the config.ini

And so I don't have anything to worry about as an emuNAND user, right? :p
 
That's actually not a bad shout. It already supports loading daybreak if you click on a .nca within a folder that contains only .ncas, it will then launch daybreak with that folder open.

I could add an option to remove themes before launching.
Post automatically merged:


It will always display the warning, although the warning is starting to annoy me :lol: I'll add option in the config which removes the warning prompt. This can only be changed manually in the config.ini
Haha it was a joke but it's a good idea to avoid that crash screen people get because they forget they use a custom theme. So if you want to do that, I think people would love it
 
  • Like
Reactions: andreiarturo
And so I don't have anything to worry about as an emuNAND user, right? :P
Depend on the protections set, in fact using emunand is not a protection against the ban but installing any NSP/XCI on a non-protected emunand will lead to the same result as installing a forwarder.

Haha it was a joke but it's a good idea to avoid that crash screen people get because they forget they use a custom theme. So if you want to do that, I think people would love it
Personaly I've implemented this function in my pack updater homebrew, it install the firmware with EXFAT driver and without factory reset the nand and it delete theme and could also delete modules. I have removed the GUI of Daybreak and integrated it in my app, I've called this Daybreak_cli cause params are passed to the update process like a CLI program. So yes, implementing this is totaly possible and is not so hard to do, even integrated into the homebrew.
 
IMG_0482.jpeg

I'm very satisfied just looking at this screen of sphaira, and I'm looking forward to seeing what great features will be added in the future. My suggestion is that it would be very cool if there was a function to view screenshots like the official HOS album in sphaira, a function to upload photos like nxgallery or shareNX, and a function to display QR codes! Also, although it's not related to this thread, I hope someone will make a cool icon for ftpsrv.
Finally, sorry for the long message.
 
Depend on the protections set, in fact using emunand is not a protection against the ban but installing any NSP/XCI on a non-protected emunand will lead to the same result as installing a forwarder.

Oh OK so nothing to worry about then, I have all the necessary exosphere, serial number blanking, etc. protections up and many other NPS/XCI installed. It's just that message that freaked me out :p. Thanks for the reply!
 
View attachment 476602
I'm very satisfied just looking at this screen of sphaira, and I'm looking forward to seeing what great features will be added in the future. My suggestion is that it would be very cool if there was a function to view screenshots like the official HOS album in sphaira, a function to upload photos like nxgallery or shareNX, and a function to display QR codes! Also, although it's not related to this thread, I hope someone will make a cool icon for ftpsrv.
Finally, sorry for the long message.
Yes ftpsrv could do with an icon. The features you suggested I won't be adding sorry. Like you said, there already exists apps that satisfy those features. I'm happy to add features that I can improve upon existing apps, but nxgalley and sharenx already do a great job I feel :)

Btw the font in your theme, did you replace it with the built in font? I could add that to the theme if you like.
Post automatically merged:

All it needs is it's own MTP/USB installer mode. ;)
It did have both, but atmosphere comes bundled with a great MTP server already. As for the installer, it's removed / won't be added for obvious reasons.
 
Last edited by Deleted member 413168,
  • Like
Reactions: HoRy205
Yes ftpsrv could do with an icon. The features you suggested I won't be adding sorry. Like you said, there already exists apps that satisfy those features. I'm happy to add features that I can improve upon existing apps, but nxgalley and sharenx already do a great job I feel :)

Btw the font in your theme, did you replace it with the built in font? I could add that to the theme if you like.
Post automatically merged:


It did have both, but atmosphere comes bundled with a great MTP server already. As for the installer, it's removed / won't be added for obvious reasons.
This font was installed with the nxtheme installer and is system wide. Download this font for free!
https://nicofont.pupu.jp/nicomoji_u_2525/nicokaku-plus_v2.5.zip

Also, I later realized that the clock doesn't match the one in my area.
 
Last edited by HoRy205,
Very good! I don't know if this has already been reported, when pressing the (+) button the console crashes
 

Site & Scene News

Popular threads in this forum