Coder Social home page Coder Social logo

joel16 / 3dshell Goto Github PK

View Code? Open in Web Editor NEW
294.0 24.0 21.0 10.15 MB

3DShell - (Pronounced 3D Shell) is a multi purpose file manager for the Nintendo 3DS. Heavily inspired by the CyanogenMod/LineageOS file manager.

Makefile 4.27% C 47.53% C++ 48.20%
cyanogenmod 3ds-homebrew 3ds

3dshell's Introduction

3DShell Github latest downloads

Purpose:

3DShell (3D-Shell) - is a multi-purpose file manager for the Nintendo 3DS that aims towards handling media files. Unlike FBI which specializes more in title management, 3DShell leans towards more of the file management features such as opening and managing various files types and includes the basic necessity of a standard file manager. This program's design elements are clearly inspired by CyanogenMod/LineageOS's built in file manager, and so all credits towards the design go to the CyanogenMod/LineageOS contributors.

3DShell Screenshot

Current features:

  • Storage bar (at the very top, just beneath the current working directory).
  • Precise battery percentage using mcu::hwc.
  • Creating new folders and files.
  • Renaming files/folders.
  • File/folder deletion.
  • Copy/Move files and folders.
  • Multi-select items for delete/cut/copy (using Y button).
  • FTP server (Press select or tap the ftp icon to toggle).
  • Image preview (If the image is around 400 * 480 which is the size of both screens, the image will be split in half and displayed. Support for the following image formats -> BMP, GIF - non animated, JPG, PCX, PNG, PGM, PPM and TGA)
  • Extract various archives such as ZIP, RAR, and 7Z.
  • Searching for directories (allows you to quickly visit a directory by clicking the search icon on the top right (bottom screen).)
  • File properties - lets you view info on current file/folder, such as size, modified time, parent folder etc.
  • File timestamps.
  • Browsing CTRNAND and copying data to/from CTRNAND.
  • Dir list sorting (alphabetical - ascending, alphabetical - descending, size - largest to smallest, and size - smallest to largest).
  • Online updater

Building from source:

  1. Ensure you have the devkitPro, ctrulib and citro3D and citro2D installed correctly. Make sure you have makerom and bannertool installed into your path as well.

  2. Install the following dependecies from devkitPro's pacman:

  • sudo dkp-pacman -Syu 3ds-dev --noconfirm --needed
  • sudo dkp-pacman -Syu 3ds-curl --noconfirm --force
  • sudo dkp-pacman -Syu 3ds-libarchive 3ds-jansson 3ds-libjpeg-turbo 3ds-libpng --noconfirm
  1. Clone the 3DShell repository:
git clone --recursive https://github.com/joel16/3DShell.git
  1. Open the project diretory:
cd 3DShell/
  1. Build the binary using make:
make

Credits:

  • deltabeard/MaK11-12 for the inital ctrmus code port which was used in previous versions.
  • mtheall for ftpd.
  • preetisketch for the banner.
  • FrozenFire for the boot logo.

3dshell's People

Contributors

dratini0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

3dshell's Issues

Select Multiple Files

I may be missing something or am unable to figure it out but can there be a way to select multiple files to operate on (copy/paste/delete/etc)?

Issue with *hax 3DS

Hello @joel16
Thanks for your effort. I want to report an issue starting the 3DShell on my 3DS with *hax 11.7. The app does not start and show the following image.

dsc_0192

Thanks for your feedback

Feature Request : Json Updater

Hey, is it possible, to add a Updater like Multi Updater to 3DShell? That would be great, because we can have then a config.json file, that has the links and the Ordner Structure inside it like Multi Updater ^^ I would like it, if this is possible :)

Suggestions

I'd love to have one app to rule them all, so I do compare this to features of other apps that I use often. For instance, the FTP seems to work a bit better in 3DShell than it does in FTPDB. But there are other areas of the app that I think could benefit from some or all of these suggestions:

  • Button to swap screens so we can scroll and tap files via touch screen.
  • Faster scroll using left/right.
  • Common file operations given key shortcuts (Y = copy, X = delete, etc.) -- see Godmode9 for more details.
  • Enable changing font size and/or distance between items in the file list.
  • Enable sorting of files by different properties (i.e. sorting folders first/files second and sorting them all alphabetically would be better than the current sorting of date created, imo, especially since a lot of homebrew doesn't write correct dates).
  • Play music files. Maybe even with support for bcstm.
  • Randomized theming, including random music selection, for those of us who like something different every startup.
  • Ability to select music of any name (in 3ds/3dshell/music ??) as the bgm.

This program has a LOT of potential. And the interface looks pretty good so far. Can't wait to see what it turns into.

3DShell crash when try exit

3DShell crash system when i push "Home" button to exit. But "Start" button good works and i can exit with start button

P.S Sorry for my English

Searching freezes 3DSX version

Confirming or canceling the prompt with any input string freezes the system (holding power required to turn off) on the 3DSX version, running on Luma3DS 9.0 via Download Play on a New 3DS XL (11.7). This is a fresh install (old files removed beforehand).

Feature Request: Ability to create file-type specific plugins

A great feature (for users as well as for developers) would be the support of file-type specific plugins. These plugins could be developed and installed separately from the main 3DShell application. 3DShell would have to maintain a mapping of file type (or filename extension) to plugin and would call this plugin whenever the user selects a file with a certain actions (e.g. "preview", "view", "edit", ...).
This way, a developer could develop a plugin for viewing e.g. Excel-sheets without bloating the main 3DShell application. The user, on the other hand, could choose which plugins to install depending on the files he stores on his 3DS. Thinkable would also be an online plugin-repository in which 3DShell could load missing plugins when the user selects an unassociated file type.
Most of the current feature requests could be delegated to plugin-writers this way, too :-)
What do you think about that?

[Question] FTP

Would you say the ftp server used in this application is better, the same, or worse than ftpd made by mtheall?

FTP has no date information

FTP function removes the date information when I copy something from the 3DS to computer. It also shows all the date being 1970-01-01 in WinSCP. In GodMode9 I can see the proper date.

I'm using the 3dsx version of 2.00 beta. I'm not sure what you mean by "SM/FS patches", but I have game patching enabled in Luma 3DS 8.1.1.

I like how it combines CTRExplorer and FTPD.

Crash when lid closed while mp3 is playing

Whenever I play an MP3 w/ 3dShell, then close the lid w/ headphones connected, the audio still plays, but when I'm done, I open the lid, and I just see a black screen, even though the audio is still playing.

Enable BGM upon startup won't work

The button for enabling BGM stays off, no matter where I press. There is a valid bgm.ogg in the 3ds/3dshell folder, too. Running 2.0 beta.

Allow setting files and directories as Hidden in Properties

Is there any chance the Properties pane could have a checkbox/slider/some kind of on-off mechanism for making files and directories Hidden (in the Windows attribute sense, not the Unix preceding period sense). Some homebrew does respect the attribute and skips showing hidden files, so it'd be nice to be able to hide things that we don't need homebrew to see, like support directories full of data files.

Crashes upon trying to play MP3. Any MP3.

Self-explanatory- upon trying to play an MP3 file (the files in question all work in ctrmus and 3DS Sound + Music), it crashes my 3ds.
I tried messing with Luma's settings to fix it, and nothing worked.

MP3 Files show information, but don't play

I have mp3 files in a folder(300+ files CBR 320 kbits) and when I select any of them, it show the title, year, etc, and even the cover art, but doesn't play. It just stays at 00:00.

Not showing pictures at all

I got this issue, where I can't view any of the pictures on my SD card, showing instead a black screen or messed up graphics.

Suggestion: login for FTP

It would be nice if we could use FTP authetification to protect the FTP server running on the console

Freeze on properties window

I'm using an o3DS using A9LH Corbenik CFW and a 32GB SD card (I'm just trying to give as much info as possible)

Whenever trying to view the properties of a file (not a folder/directory), that is the first in the list (in all, not just displayed), the properties window hangs and a hard reboot (holding the power button down) is required to exit the application.

installation trouble

I'm new to this whole modding thing for the 3DS, I can't quite grasp the details on what I should do to install 3dshell, I just know the basics of downloading and installing CIAs. But this requires messing around with source code and I'm not familiar with that if there is a video on how to install this I would appreciate a link, thanks

Fix the highlighted row when scrolling down

When you scroll down with enough folders or files, the highlighted row where it denotes the current selectable item does something that is somewhat annoying in appearance IMO.

Let's assume there are 10 folders or files in the current directory you're viewing. You place the highlighted row at item number 10.

You go up with D-Pad or joystick. While your new selected item does up by one, the highlighted row is still at the bottom of the 5 viewable rows.

Can you update the app where pressing up keeps the currently seen 5 items static and the highlighted row only instead goes up by itself until hitting and going past the very first row of those 5?

FTP requires hard reset when used for a second time.

Basically if you use the FTP through the app, and then disable it. Everything's fine, and you can exit without any crashes. However, if you use the ftp button twice. You turn on ftp, disable it, then turn it on again (without exiting the app) and disable it. At this point pressing start (to exit) or pressing the home button triggers a crash,

@mtheall do you know what could possibly cause this? FTPD at least exits the app once you've pressed B on it, so there's not really any way to reactivate FTP again without exiting the app. I'm just wondering if there's something in ftp.c that fails to re-initialize or something. (Thanks for the code btw, I tried implementing FTP myself, but me and networking don't go well together, so I thought I'd use something clean and well supported.)

References:

ftp.c https://github.com/joel16/3DShell/blob/master/source/ftp.c
main.c https://github.com/joel16/3DShell/blob/master/source/main.c#L483 This line is where FTP is handled.

Please let me know if I'm doing something wrong.

[Feature] Page Up/Page Down controls when browsing a folder

Currently, it's possible to scroll through a folder view with four types of input: D-pad up (scroll up 1 item), D-pad down (scroll down 1 item), D-pad left (scroll all the way up to the first item in the folder), and D-pad right (scroll all the way down to the last item in the folder). When you're looking for one thing in a large folder, this leaves you with no choice but to scroll through the entire list one item at a time, which can take a while depending on how big the list actually is.

My thought is to add buttons for scrolling by 5 at a time, as many as will fit on one screen full. L and R will be free for this at times when the folder view is what's capturing inputs.

Trouble with accented characters

The app mostly freezes when trying to access folders containing accented characters (like é). None of the folder's contents get listed and the only input that still responds are the SD, NAND, and Search buttons on the touch screen.
3dshell-2018-07-20_19-10-38 576

Makes it hard to manage Checkpoint save backups of games like Pokémon (renaming the save folders, etc.)

I primarily use the Rosalina version, but tried with the CIA version to make sure it wasn't unique to the 3dsx build.

Hard crash

Not sure if this is related to my recently doing a ctrtransfer, but anytime I start up 3DShell on an O2DS I recently hacked (latest b9s/luma/sys fw), it hard crashes. That same app works fine on my other console, an O3DSXL (also on latest stuff). It doesn't matter if I transfer the app data from my O3DS SD card (both consoles have the same movable.sed), reinstall the ticket, or reinstall the app fresh, 3DShell always crashes the 2DS. I've attached a Luma crash dump. I haven't parsed it myself, but maybe you'll have some luck with this. Thanks for your help.
crash_dump_00000000.zip

Does not display special character properly.

I tried to delete a folder with ® in the name while connected to FTP. It couldn't delete it, I tried it in FTPD and it worked fine. Wanted to check if it was FTP problem or 3DShell problem. When I tried to delete it from 3DShell, I noticed it would not display anything in the folder name starting from ®. It cut off the folder name in the middle. Since it's not recognizing the character, it can't deal with it.

small ui suggestions for image preview

would it be possible to

  • make the top bar with the filename optional when selecting an image to preview? it makes sifting through them quicker when they're screen size and i want to see the entire thing at once
  • use the left/right buttons when in preview mode to alphabetically go through images in a folder

thanks for this tool. it's literally the only decent one available for viewing images as far as i know

Shuffle Loop Decrements

Something seems weird with the shuffle functionality (while on sleep mode). I noticed this earlier today when the app kept on repeating three songs, and (theorizing) the number of songs to loop seems to be decreasing, until it only loops 1 song, and after that song ended, the variable is now 0 so there's no song to loop, and the app crashed

Corrupted Home Menu Extdata???

I have an o2DS on firmware 11.10.0-43U. I installed the latest version of 3DShell. I messed around with renaming and stuff and looked at all the other features in the app.
And so I decided to use the media player. I got a bunch of .mp3 files, put them on my SD card, and used 3DShell to play them. I put my o2ds into sleep mode a bunch of times, changed the volume a lot, and turned the Loop and Shuffle features on and off over and over.
I navigated back to the root of my SD card in the app, tapped the little gear icon, and then pressed START to go back to the Home Menu.
My o2DS showed a few random colored pixels in the corner which always happens when exiting from Homebrew with START, and then it just froze. I waited about ten seconds, and then proceeded to open the Rosalina menu and select the Power Off option, which did nothing.
So I turned off my o2DS forcefully by pressing and holding the Power Off button for about ten seconds. It turned off, and so I turned it back on. My splash was skipped, the blue light was on, but the Home Menu didn't load. I turned it off and back on. The splash loaded, the blue and orange lights turned on, but the Home Menu didn't load.
So, I went online and found this issue on GBATemp: https://gbatemp.net/threads/what-is-wrong-with-my-2ds-it-cant-boot-to-home-menu.506674/
One user suggested deleting the Home Menu extdata, so that's what I did.
And voila, my o2Ds was revived, but all of my 50+ apps were wrapped up in presents again unfortunately.
I'm not sure if what happened is my fault, completely unrelated to 3DShell, or because of 3DShell, but I just thought that I should warn others.
I also thought I would just let the creator of this know, even though I doubt this is still being worked on.

Deleting a single file deletes cfw files from root of sd

I dont know why but this is the 2nd time its happened, I installed luma cfw to my n3ds xl and after installing a theme with anemone I used 3dshell to delete one of themes i didnt like, and it didnt just delete the one file i selected, it deletes my cfw files on the root of my sd as well. The 2nd time i even made sure i didnt select anything other than the desired file.

NFS/SMB client support?

Would be awesome to be able to browse network shares using NFS and or SMB.

libnfs is a mature nfs client that builds on virtually any platform.

libsmb2 is a new client to talk to windows/cifs servers. It is new so it is not as portable as libnfs, yet.

[Feature Request] While using FTP server

While using FTP server it would be nice if the top screen would turn off to save battery since it is just a frozen image that doesn't contribute with any information to the current task.
Also, not sure if possible, but if the FTP server worked with the lit close would be greater.
Even if you don't have the time, thank you for your work as it is already really good.

Not working on old3DS

Not working on old3DS only yellow bottom screen (version v2.0 working great)

use latest ninjhax2 and firmware update

[Feature Request] Add a text/hex editor

Not much that I need to explain past the title, and this results in adding a feature that is in both GodMode9 and CTRExplorer.

Also, while this is an unrelated suggestion, supporting the playback of more music formats would be nice. I know I have a few music files from CTGP7, after all. Of course, I understand the difficulty of supporting more formats, so feel free to ignore this, honestly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.