Skip to content

xhu96/Switch7zip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Switch 7zip banner

Platform License Status Built with

โš ๏ธ Pre-1.0 โ€” not fully tested.
Back up your SD card before using any destructive or bulk operations.


๐Ÿ“– Table of Contents


๐Ÿ•น๏ธ Overview

Switch 7zip is a homebrew file manager and archive utility for the Nintendo Switch, designed around the realities of the HAC-001 handheld screen and FAT32 SD cards.

It lets you browse your SD card, inspect and selectively extract archives, compress files to ZIP, and gracefully handle the FAT32 4 GiB file-size ceiling โ€” all through a native SDL2 interface built for the Switch's physical controls.

Not affiliated with Nintendo, 7-Zip, Igor Pavlov, libarchive, or devkitPro.
No 7-Zip binaries or LZMA SDK code are included or redistributed.


โœจ Features

๐Ÿ—‚๏ธ File Management

  • SD card browser with sorting, filtering, and dual-pane helpers
  • File copy, move, rename, new folder and file creation
  • Trash and restore workflow
  • Bookmarks and recent folders

๐Ÿ—œ๏ธ Archive Support

  • Extraction via libarchive
  • Archive preview and selective extraction
  • ZIP compression
  • Multipart archive diagnostics

๐Ÿ’พ Large-File & FAT32 Safety

  • Free-space preflight before large operations
  • FAT32 4 GiB guard
  • Three configurable oversized-file modes (see below)

๐Ÿ” Viewers & Editors

  • Text / log / config viewer with small inline editor
  • Hex viewer
  • PNG / JPG / BMP image viewer (requires switch-sdl2_image)

๐Ÿ“‹ Diagnostics & Logging

  • Operation logs: latest.log and failed_operation.txt
  • One-tap diagnostic bundle export
  • Applet Mode warning for safer large-archive work

๐Ÿ’พ FAT32 Large-File Handling

FAT32 cannot store a single file larger than 4 GiB โˆ’ 1 byte. Switch 7zip exposes three modes to handle oversized files during extraction:

Mode Behavior
BLOCK Default. Refuses to extract any single file that would exceed 4 GiB. Safest choice.
SPLIT Writes oversized files as FAT32-safe .part chunks inside a .split/ folder.
CONCAT Writes oversized files as Switch concatenation folders and attempts to set the archive/concatenation attribute. Switch-specific.

How to enable SPLIT or CONCAT

SPLIT and CONCAT are not triggered by archive size alone. They are only used when an individual file inside the archive is larger than FAT32 allows.

To enable one of these modes:

  1. Launch Switch 7zip.
  2. Press + to open the action menu.
  3. Open Settings.
  4. Find the FAT32 oversized-file handling option.
  5. Change the mode from BLOCK to SPLIT or CONCAT.
  6. Exit Settings.
  7. Select the archive.
  8. Press X to extract.

Use SPLIT when you only need to store or move the oversized output on FAT32. Use CONCAT only when another Switch tool expects Horizon OS concatenated-file folders.

Example output structures

SPLIT mode:

bigfile.bin.split/
  0000.part
  0001.part
  0002.part

CONCAT mode:

bigfile.bin/
  00
  01
  02

CONCAT output is only useful with software that understands Horizon OS's concatenated-file behavior.


๐ŸŽฎ Controls

Button Action
A Open / confirm
B Back / cancel
X Extract / selected operation
Y Mark / unmark item
+ Action menu
- Quick paths / bookmarks
L / R Page or viewer navigation
ZL Log / viewer shortcut (supported screens)
ZR Refresh / secondary action (supported screens)

๐Ÿ”จ Build Instructions

Prerequisites

Install devkitPro and the required Switch portlibs:

sudo dkp-pacman -Syu
sudo dkp-pacman -S switch-dev switch-libarchive switch-sdl2 switch-sdl2_image

Build

make clean && make

This produces Switch7zip.nro. Copy it to your Switch:

sdmc:/switch/Switch7zip/Switch7zip.nro

๐Ÿ“‚ Runtime File Layout

All user data lives under sdmc:/switch/Switch7zip/:

sdmc:/switch/Switch7zip/
โ”œโ”€โ”€ Switch7zip.nro
โ”œโ”€โ”€ config.ini
โ”œโ”€โ”€ logs/
โ”‚   โ”œโ”€โ”€ latest.log
โ”‚   โ”œโ”€โ”€ failed_operation.txt
โ”‚   โ””โ”€โ”€ diagnostic_bundle.txt
โ””โ”€โ”€ .trash/

โšก Applet Mode Warning

Running homebrew in Applet Mode gives the app less available memory. Long operations on large archives may fail partway through as a result.

For large-archive work, launch Switch 7zip in full-memory (title-override) mode. The app will warn you if Applet Mode is detected, but choosing the right launch method is your responsibility.


๐Ÿšง Known Limitations & Roadmap

This section is intentionally candid. Here is what still needs work before 1.0:

๐ŸŽจ UI / UX polish

The SDL2 interface is functional but not final. Planned improvements:

  • Better spacing and visual hierarchy
  • Cleaner modal design
  • Consistent icon set
  • Configurable file-row density
  • Improved touch support
  • Dual-pane polish
  • Clearer operation-state feedback
๐Ÿ“ฆ Extraction destination flow

Extraction works, but choosing a destination is awkward. A proper Extract here / Extract toโ€ฆ flow is planned.

๐Ÿ“„ Log discoverability

The app writes useful diagnostic logs, but surfacing latest.log, failed_operation.txt, and the diagnostic bundle from inside the UI needs to be much more obvious.

โš™๏ธ Background operations

Long archive operations currently block the UI. True background processing is a planned rework:

  • Background worker thread
  • Browsable UI during active jobs
  • Job queue support
  • Pause / resume where feasible
  • Clear cancel / retry / skip controls
๐Ÿ—‘๏ธ Direct delete shortcut

Delete and Trash are available through the action menu, but there is no dedicated delete button or refined delete UX yet.

๐Ÿงน Source structure cleanup

source/main.c is too large and needs splitting into focused modules. This is the biggest code-quality blocker before 1.0:

ui.c        โ€” rendering and layout
input.c     โ€” controller handling
state.c     โ€” application state
overlays.c  โ€” modals and popups
actions.c   โ€” file and archive operations
settings.c  โ€” config persistence
๐Ÿงช Testing gaps

The app has been validated through host smoke tests and build checks, but has not been fully tested across every Switch model, archive type, SD-card format, or homebrew launch mode. Use extra caution with:

  • Very large archives
  • Encrypted or RAR5 archives
  • Multipart archives
  • exFAT SD cards
  • Destructive operations on important data

๐Ÿ›ก๏ธ Safety Scope

Switch 7zip does not include, require, or enable:

  • Nintendo SDK or proprietary files
  • Firmware or encryption keys
  • Copyrighted game files
  • DRM bypass material
  • Piracy workflows of any kind

It is a file and archive utility for user-owned content on a homebrew-enabled Switch.


๐Ÿ“„ License

MIT


About

{under construction} Nintendo Switch homebrew archive manager and file utility focused on 7z/ZIP/RAR extraction

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors