Unofficial port of Menu Sort (originally by
Yardape8000 and doino-gretchenliev) from the legacy Homebrew Launcher toolchain to the modern
Aroma environment, using wut and
libmocha instead of the old dynamic_libs/libiosuhax stack.
Ported and maintained by Yirr777.
With Menu Sort Aroma you can alphabetically sort icons on the Wii U Menu, per user account - including inside folders, and homebrew icons injected by the Homebrew On Wii U Menu plugin.
The following items will not move (though a folder's contents still get sorted): folders and
system icons (Disc, Settings, etc), the Homebrew Launcher, any IDs listed in dontmove.txt, and any
homebrew app whose name matches an entry in dontmove_homebrew.txt.
Warning: always use the backup option (+) before sorting anything for the first time. Bricked
consoles are not the author's (or this port's) responsibility.
| Button | Action |
|---|---|
B |
Standard sorting |
A |
Standard sorting, ignoring a leading "The" |
X |
Bad naming mode sorting |
Y |
Bad naming mode sorting, ignoring a leading "The" |
+ |
Backup the current order (including folders) |
- |
Restore the last backup (including folders) |
L |
Count items only, no changes |
HOME |
Exit without doing anything |
Whenever an actual sort runs (any of B/A/X/Y — not L), Menu Sort Aroma automatically backs up the
current, unmodified order to sd:/wiiu/apps/menu_sort_aroma/BaristaAccountSaveFile.dat before touching
anything, whether or not you also pressed + first. Press - at any time to restore that backup.
If the Homebrew On Wii U Menu plugin is installed, it redirects the Wii U Menu's save data to its own copy on the SD card so it can inject homebrew icons without touching the real system save. Menu Sort Aroma detects this and reads/writes that same SD-card copy instead of the raw system save file, then mirrors the result back to the system save - so both stay in sync and you never lose folders or icons the plugin hasn't flushed yet.
dynamic_libs(runtime function-pointer loading) → native wut headers (coreinit,vpad/input.h,whb/proc.h).- Raw IOSUHAX /
libiosuhax/ MCP thread hijacking → libmocha (Mocha_MountFS/Mocha_UnmountFS). - Manual SD card FAT mounting → dropped; wut mounts the SD card automatically at
fs:/vol/external01/.... libxml2→ a small hand-rolled XML text extractor (src/utils/xmltext.c), since libxml2 isn't part of the standardwiiu-devpackage group.nn_act_*→src/act_wrapper.cpp, a tinyextern "C"shim, since wut only exposesnn::actin C++.- Output on both the TV and GamePad screens (the original only wrote to the GamePad).
- Builds to a
.wuhb(Aroma Homebrew Launcher) instead of a legacy.elf. - Automatic backup before every real sort, in addition to the original's manual
+backup. - Homebrew icons injected by the
Homebrew On Wii U Menu plugin - which didn't
exist when the original was written - are now sorted too, with their own exclude list
(
dontmove_homebrew.txt) and compatibility with the plugin's SD-card save redirection.
Requires devkitPro with the wiiu-dev package group,
plus libmocha and
libwuhbutils built from source and installed
(git clone each repo, then make install in it).
export DEVKITPRO=/opt/devkitpro
export DEVKITPPC=$DEVKITPRO/devkitPPC
export PATH="$DEVKITPPC/bin:$DEVKITPRO/tools/bin:$PATH"
make
Produces menu_sort_aroma.wuhb.
Don't want to build it yourself? Grab the SD card zip from the latest release and extract it to the root of your SD card - it already contains everything below, laid out correctly.
Copy menu_sort_aroma.wuhb, dontmove.txt, titlesmap.psv and dontmove_homebrew.txt to
sd:/wiiu/apps/menu_sort_aroma/ on your SD card. Edit them as described below, then launch the app
from the Aroma Homebrew Launcher.
Upgrading from an older version installed under sd:/wiiu/apps/menu_sort/? Move that whole
folder to sd:/wiiu/apps/menu_sort_aroma/ (keeping your customized dontmove.txt /
titlesmap.psv / dontmove_homebrew.txt), then delete the old empty menu_sort folder. The
Homebrew Launcher will list it as a new entry either way.
Override dontmove.txt with a list of non-movable icons, identified by the last 4 bytes of the title
ID:
10179B00 # Brain Age: Train Your Brain In Minutes A Day
10105A00 # Netflix
10105700 # YouTube
You can also use dontmoveX.txt (X: 0-9, A, or B) for per-user-profile lists — X is the last
digit of the console's 8000000X save folder for that user (shown by the app as User ID: X).
dontmoveX.txt takes priority over dontmove.txt; only one file is used per profile.
Override titlesmap.psv to sort by group name instead of title name ("bad naming mode"):
titleId#1|groupName
titleId#2|groupName
titlesmapX.psv works the same way as dontmoveX.txt for per-profile overrides.
Homebrew icons injected by the
Homebrew On Wii U Menu plugin don't have a
fixed title ID the way installed titles do (it's a hash of wherever you happen to have installed
them), so dontmove.txt can't target them reliably across different setups. Instead, edit
dontmove_homebrew.txt with one app name (or part of one) per line - any homebrew icon whose
resolved name contains that text (case-insensitive) is left in place:
Aroma Updater
Payload-Loader Installer
NUSspli
Ships with only Menu Sort Aroma itself excluded by default - add whichever other homebrew apps you want left in place, one per line, no rebuild required.
This port is released into the public domain under The Unlicense - do whatever you want with it. The original project it's based on doesn't declare a license of its own.
