Apollo - File Explorer for Nintendo Switch

Baner.png

Apollo is a File Explorer Homebrew for the Nintendo Switch. Its goal is to be the most convenient and reliable method to manage console's files.
Following the NX Homebrew Scene trend its name comes from Apollo - one of the Olympian deities, who is i.a. a god of music, truth, knowledge and protection of young.
It is also a reference to Apollo 11 - a spaceflight mission which allowed people to walk on the Moon.
Apollo is my first homebrew project, I hope you'll like it.

Overview
Apollo's current features are:

- Graphical User Interface: Minimalist design which is based on default hbmenu and official home menu esthetic.
- Selecting items: A simple but mandatory feature.
- Copying files and directories: Before doing so, application checks whether user is trying to overwrite currently existing files or directories and then asks about overwriting them.
- Recursive directory deletion: It allows for complete deletion of directories' content and obviously for file deletion.
- Renaming files and directories: Speaks for itself.
- Sorting items: Alphabetically or reversed.

Screenshots
main_screen.jpg


selecting_files.jpg


copying_files.jpg


sorting_and_help.jpg

Planned features
Planned features for the very next release:

- Moving files and directories
- Showing files and directories' information (size, permissions)
- Sorting files by size and reversed
- Remembering cursor's position while browsing between folders
- Viewing images
- Viewing text files
- Extracting .rar and .zip files
- Creating directories and files

Download

Credits

- devkitPro for providing toolchain.
- XorTroll for the amazing Plutonium which allowed Apollo to look like this and the Goldleaf which is a mine of knowledge.
- GilFerraz for his beautiful Miiverse UI concept which inspired me to create sidebar.
- Lucas Lacerda for his Nintendo Switch UI Concept.
- jaames for the nx-hbmenu mockup which helped me with the design.
- Nintendo for security <3.
 
Last edited by evo-brut3,

fixingmytoys

Well-Known Member
Member
Joined
Jan 4, 2018
Messages
536
Trophies
0
XP
884
Country
Australia
this looks really good,thing would love for this to have, is copying to and from USB and SD card and FTP into both USB and SD card and i would not have to shut down my switch to get "stuff" over
 

chaoskagami

G̷̘̫̍̈́̊̓̈l̴̙͔̞͠i̵̳͊ţ̸̙͇͒̓c̵̬̪̯̥̳͒͌̚h̵̹̭͛̒̊̽̚
Developer
Joined
Mar 26, 2016
Messages
1,365
Trophies
1
Location
↑↑↓↓←→←→BA
Website
github.com
XP
2,262
Country
United States
i think you are misunderstanding what “windowing” means. it’s not having multiple windows up that you can drag around like on a PC. Every UI element is generally it’s own window. Depends on the framework, but generally each window handles it’s own draw events, click events, etc. each button, menu item, frame, menu are their own windows.

Trust me, I'm not misunderstanding anything. What you have described is called a layout manager. It is a common component of almost any UX framework, such as Swing, Win32's GDI API, GTK+, .NET's XAML etc. A window manager or windowing framework is something else entirely, and these two terms don't refer to remotely the same thing. A window manager controls you guessed it: multiple windows. A layout manager controls the contents of a window (or a single application view, if you prefer to look at it like so.)

As for programmatic events, widgets, etc - that is also commonly part of a UX framework (a layout manager would be useless without components to place inside the layout), but these still do not add up to a window manager. They add up to a UX framework.

Also, elements are not in their own window. They're in their own container. Or pane. But not a window.

EDIT: Why am I even bothering to write a coherent reply? You'll just find something to nitpick and won't make any effort to use correct CS terminology.
 
Last edited by chaoskagami,

evo-brut3

Member
OP
Newcomer
Joined
Jun 25, 2019
Messages
23
Trophies
0
XP
496
Country
Poland
I have concerns about your project. You seem to be modeling it after android
I think that I didn't make it clear, my role model is Es File Explorer, but only in terms of functions, design is completely different thing.

I didn’t say i did, or did not like plutonium. plutonium is not a fully featured windowing library, that is a massive undertaking. @XorTroll obly implemented the minimum he needed for goldleaf, which is understandable. but will not get this guy to where he wants to be without a ton of modification.

what most people may not understand is that he got this basic version of the app out very quick because he used pretty much off the shelf plutonium stuff, but he is going to start hitting some hard walls soon.
I must admit that using raw Plutonium out of the box, wouldn't work, I needed to add some changes, even the sidebar couldn't exist without some fixes. But Plutonium is very modular, I can add new things really fast, and I'm not going to have any problems with it, because my app, same as XorTroll's Goldleaf is built from layouts, and that gives me freedom in terms of design. I think you misunderstood this because of me mentioning Es File Explorer earlier, but I meant functions only.

edit: i also agree with joel, i would like to see some innovation from this project to make it worth while. a different GUI is not a worth while basis for a project, there are plenty of unique projects that he could spend his time writing, that the scene needs. But it is his time to spend any way he chooses.
If you have some ideas on what projects should I start next, I'll be happy to listen to them :).

The Black Style that was requested to you, i created one :-) You can Name it Dark Side of the Moon :-P
Thanks mate, but I'm not yet sure whether sidebar should be black or white in the dark theme, I'll think about it in v0.3 :).
 
  • Like
Reactions: chaoskagami

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,784
Trophies
1
Age
44
XP
6,508
Country
Germany
I will definitely look into this. My goal is to implement features that are most requested by the community, so any suggestions are welcomed.
That's cool. Would be nice to have some of Android's ES File Explorer features like accessing network shares, FTP, Cloud Drives (!), viewing/editing text files and so on. :)

I don't know if this is even possible but since there's already a text editor (vgedit), can you redirect certain file types (like *.txt) to open with other homebrew apps like vgedit or pplay? To launch other homebrews you could use hbmenus code but I think you would also have to pass the desired file as an argument to the destination app which might not be possible yet but if it was, then homebrews on the Switch would become a pure mobile OS feel where multiple apps share stuff between each other. :)
 

chaoskagami

G̷̘̫̍̈́̊̓̈l̴̙͔̞͠i̵̳͊ţ̸̙͇͒̓c̵̬̪̯̥̳͒͌̚h̵̹̭͛̒̊̽̚
Developer
Joined
Mar 26, 2016
Messages
1,365
Trophies
1
Location
↑↑↓↓←→←→BA
Website
github.com
XP
2,262
Country
United States
I must admit that using raw Plutonium out of the box, wouldn't work, I needed to add some changes, even the sidebar couldn't exist without some fixes. But Plutonium is very modular, I can add new things really fast, and I'm not going to have any problems with it, because my app, same as XorTroll's Goldleaf is built from layouts, and that gives me freedom in terms of design. I think you misunderstood this because of me mentioning Es File Explorer earlier, but I meant functions only.

If the components you implemented in Plutonium are potentially reusable in other projects and sufficiently generic, it's probably worthwhile to attempt to upstream any code that may be useful to other developers. Just some food for thought.

That's cool. Would be nice to have some of Android's ES File Explorer features like accessing network shares, FTP, Cloud Drives (!), viewing/editing text files and so on. :)

I don't know if this is even possible but since there's already a text editor (vgedit), can you redirect certain file types (like *.txt) to open with other homebrew apps like vgedit or pplay? To launch other homebrews you could use hbmenus code but I think you would also have to pass the desired file as an argument to the destination app which might not be possible yet but if it was, then homebrews on the Switch would become a pure mobile OS feel where multiple apps share stuff between each other. :)

The main barrier to that approach is that homebrew doesn't maintain a stack of launches; were you to launch HBL, then a File Manager, which then launched a video player - executing the return operating would put you in HBL, not the file manager.
 

evo-brut3

Member
OP
Newcomer
Joined
Jun 25, 2019
Messages
23
Trophies
0
XP
496
Country
Poland
That's cool. Would be nice to have some of Android's ES File Explorer features like accessing network shares, FTP, Cloud Drives (!), viewing/editing text files and so on. :)

I don't know if this is even possible but since there's already a text editor (vgedit), can you redirect certain file types (like *.txt) to open with other homebrew apps like vgedit or pplay? To launch other homebrews you could use hbmenus code but I think you would also have to pass the desired file as an argument to the destination app which might not be possible yet but if it was, then homebrews on the Switch would become a pure mobile OS feel where multiple apps share stuff between each other.
That is exactly what I wanted to do! :D The problem is I need to add some changes to the orginal pplay and vgedit to make them able to receive arguments in main, and then the rest should be easy (I'm not yet sure how easy or if even easy). If I will be able to do it, then you can expect this feature :).

If the components you implemented in Plutonium are potentially reusable in other projects and sufficiently generic, it's probably worthwhile to attempt to upstream any code that may be useful to other developers. Just some food for thought.
I thought about it, but as for now these are only minor changes.
edit: If someone is interested, then I uploaded my version of Plutonium to the Apollo's github.

The main barrier to that approach is that homebrew doesn't maintain a stack of launches; were you to launch HBL, then a File Manager, which then launched a video player - executing the return operating would put you in HBL, not the file manager.
That can be fixed by editing the pplay and vgedit code, when it will receive arguments from main, then the exit function won't exit an app but instead it will open Apollo :).
 
Last edited by evo-brut3,
  • Like
Reactions: lordelan

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,784
Trophies
1
Age
44
XP
6,508
Country
Germany
That is exactly what I wanted to do! :D The problem is I need to add some changes to the orginal pplay and vgedit to make them able to receive arguments in main, and then the rest should be easy (I'm not yet sure how easy or if even easy). If I will be able to do it, then you can expect this feature :).
Well, that'd be a revolution to the homebrew screne on the Switch!
 

blawar

Developer
Developer
Joined
Nov 21, 2016
Messages
1,708
Trophies
1
Age
40
XP
4,311
Country
United States
Really? I wasn't aware of that, but that only means that it is possible to implement :).

There is a more elegant way to do it, but this should get you started.


Code:
            memset(g_argBuf, 0, sizeof(g_argBuf));
            snprintf(g_argBuf, ENTRY_ARGBUFSIZE, "%s \"%s\"", nro->url().c_str(), launchParam.c_str());
            if (envSetNextLoad(nro->url().c_str(), g_argBuf))
            {
                error("failed to launch nro.\n"));
            }
            else
            {
                application()->quit();
            }
 
Last edited by blawar,

evo-brut3

Member
OP
Newcomer
Joined
Jun 25, 2019
Messages
23
Trophies
0
XP
496
Country
Poland
Stupid question (This is really nice btw) can we use this to delete accounts on the switch?
Nope, I didn't really planned to implement any of systemwise functions to Apollo, I want to keep it as a file explorer. I'll add method to manage NAND files in the future and a few other things (maybe redirecting nsps to one's favourite nsp installer homebrew), but for stuff like installing nsp, xci, deleting accounts, managing tickets and so on I encourage you to use Goldleaf, Tinfoil or any other homebrew that is better at this.
 
  • Like
Reactions: lordelan and SG911

SG911

Well-Known Member
Member
Joined
Dec 20, 2017
Messages
369
Trophies
0
Location
Bronx, NY
XP
926
Country
United States
Nope, I didn't really planned to implement any of systemwise functions to Apollo, I want to keep it as a file explorer. I'll add method to manage NAND files in the future and a few other things (maybe redirecting nsps to one's favourite nsp installer homebrew), but for stuff like installing nsp, xci, deleting accounts, managing tickets and so on I encourage you to use Goldleaf, Tinfoil or any other homebrew that is better at this.

Gotcha! Thank you.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Psionic Roshambo @ Psionic Roshambo:
    I had a girlfriend who had a twin sister and they would mess with me constantly.... Until one chipped a tooth then finally I could tell them apart.... Lol
  • Psionic Roshambo @ Psionic Roshambo:
    They would have the same hair style the same clothes everything... Really messed with my head lol
  • Psionic Roshambo @ Psionic Roshambo:
    @The Real Jdbye, I could see AMD trying to pull off the CPU GPU tandem thing, would be a way to maybe close the gap a bit with Nvidia. Plus it would kinda put Nvidia at a future disadvantage since Nvidia can't make X86/64 CPUs? Intel and AMD licensing issues... I wonder how much that has held back innovation.
  • The Real Jdbye @ The Real Jdbye:
    i don't think nvidia wants to get in the x64 cpu market anyways
  • The Real Jdbye @ The Real Jdbye:
    you've seen how much intel is struggling getting into the gpu market
  • The Real Jdbye @ The Real Jdbye:
    and nvidia is already doing ARM
  • The Real Jdbye @ The Real Jdbye:
    i don't think they want to take more focus away from their gpus
  • Psionic Roshambo @ Psionic Roshambo:
    Yeah I think Nvidia s future lays in AI GPU acceleration stuff if they can get that going it's going to be super interesting in the long term
  • Psionic Roshambo @ Psionic Roshambo:
    AI assisted game creation might become a thing
  • Psionic Roshambo @ Psionic Roshambo:
    At least that's something I think would be pretty cool.
  • Psionic Roshambo @ Psionic Roshambo:
    Don some VR glasses and gloves and talk to the computer and paint entire worlds
  • Psionic Roshambo @ Psionic Roshambo:
    "OK Cortana I want that mountain a little taller and more snow on top, and I would like some random ancient pine forest around the bottom"
  • Psionic Roshambo @ Psionic Roshambo:
    "Now we need a spring fed river flowing down the north side and add some wild life appropriate for the biome"
  • Psionic Roshambo @ Psionic Roshambo:
    Many TBs of assets and the programming of something like that is going to be tough but I think it's something we might see in 20 years maybe sooner
  • The Real Jdbye @ The Real Jdbye:
    @Psionic Roshambo AI assisted game creation is kinda already here, there was recently that AI that can turn any 2D image into a fully modeled 3D object, it's not perfect, but it's a starting point, beats starting from zero
    +1
  • The Real Jdbye @ The Real Jdbye:
    before that there was one to generate a fully modeled scene from a 2D image
    +1
  • The Real Jdbye @ The Real Jdbye:
    but most recently, there was one that actually generates a working unity scene with terrain and textures already set up that you can import right into unity, that's a huge time saver right there
    +1
  • The Real Jdbye @ The Real Jdbye:
    and using LLMs to generate NPC dialogue and even dynamically generated quests is something i'm sure is already happening
    +1
  • The Real Jdbye @ The Real Jdbye:
    will just take some time for games made using those things to be completed and released
    +1
  • K3Nv2 @ K3Nv2:
    @The Real Jdbye, it's bed bath and beyond you nitwit
  • The Real Jdbye @ The Real Jdbye:
    @K3Nv2 you said instructions with pictures, same difference
  • Psionic Roshambo @ Psionic Roshambo:
    Lol now with 32GBs of VRAM Ken?
    Psionic Roshambo @ Psionic Roshambo: Lol now with 32GBs of VRAM Ken?