Sphaira как альтернатива стандартному hbmenu для Nintendo Switch
Если вы хоть раз запускали кастомную прошивку Atmosphere на Switch, то наверняка помните стандартное меню hbmenu. Оно аскетичное, серое и делает ровно одну вещь: выводит сетку из иконок .nro файлов. Годами с этим все мирились, потому что альтернатив особо не было. Для установки пакетов приходилось держать отдельный софт, для передачи файлов по сети поднимать sys-ftpd, а темы оформления искать через третий инструмент.
Недавно наткнулся на репозиторий Sphaira от разработчика NaGaa95. Проект позиционируется как полноценная замена hbmenu, но по факту объединяет в одной оболочке сразу несколько привычных утилит.
| | |
| :---: | :---: |
|
|
|
|
|
|
|
|
|
|
|
|
Что внутри оболочки
Sphaira построена на базе легковесного графического интерфейса с поддержкой аппаратного ускорения через deko3d. Визуально интерфейс напоминает нативные системные меню консоли, но работает намного шустрее многих аналогов на базе Electron или тяжелых webview.
Внутри разработчики собрали неплохой набор повседневных функций:
- Встроенный браузер приложений, интегрированный с каталогом hb-appstore и базой тем Themezer.
- Встроенные сетевые сервисы FTP и протокол MTP для прямой переброски файлов на ПК через кабель.
- Полноценный файловый менеджер с поддержкой ассоциаций расширений.
- Модуль установки пакетов (nsp, xci, nsz, xcz, msp) прямо из сетевых и локальных источников.
Файловые ассоциации и запуск ромов
Одна из приятных мелочей, которой сильно не хватало в стандартном загрузчике, это поддержка файловых ассоциаций.
Раньше для запуска игры в mGBA или RetroArch нужно было сначала открыть сам эмулятор, а затем долго блуждать по его внутреннему файловому дереву на microSD. В Sphaira сделали механизм через простые INI-конфиги. Вы описываете, какое приложение отвечает за конкретные расширения, и после этого можете кликать по файлам прямо в файловом менеджере. Оболочка передаст путь к файлу как аргумент argv[1] при запуске .nro.
Пример конфигурационного файла для ассоциаций:
path=/switch/your_app.nro
supported_extensions=jpg|png|mp4|mp3
Поле path указывать необязательно. Если назвать файл mgba.ini, система сама попытается найти исполняемый файл в /switch/mgba.nro или в папке /switch/folder/mgba.nro. В кодовой базе репозитория в папке assets/romfs/assoc/ уже лежат готовые шаблоны для популярных эмуляторов.
Установка пакетов и передача файлов
Для работы с памятью консоли Sphaira предлагает несколько путей. Если включить MTP в сетевом меню, консоль определяется компьютером как обычный накопитель через стандартный системный драйвер Haze.
Для беспроводной работы интегрирован FTP-сервер, который делит формат настроек с утилитой ftpsrv (конфиг лежит по пути /config/ftpsrv/config.ini). Загруженные по FTP файлы в специальную папку install можно сразу отправлять на установку.
Что касается кабеля, Sphaira использует протокол USB, совместимый с Tinfoil. Это значит, что для пакетной отправки игр и хоумбрю с компьютера подойдут привычные утилиты вроде ns-usbloader и Fluffy. В самом репозитории авторы также приложили готовый вспомогательный скрипт на Python (tools/usb_install_pc.py), если не хочется ставить сторонние GUI-клиенты.
Сборка из исходников
Проект написан на чистом C с подключением быстрых C-библиотек вроде yyjson для парсинга JSON и minIni для конфигов. Если захотите собрать проект локально или внести свои правки, потребуется настроенный тулчейн devkitPro.
Сначала ставим окружение и зависимости под Switch:
sudo pacman -S switch-dev deko3d switch-cmake switch-curl switch-glm switch-zlib switch-mbedtls
После этого стандартная сборка через CMake в релизном пресете занимает буквально пару минут:
git clone https://github.com/ITotalJustice/sphaira.git
cd sphaira
cmake --preset MinSizeRel
cmake --build --preset MinSizeRel
Скомпилированный исполняемый файл появится по пути build/MinSizeRel/sphaira.nro.
Кому проект пригодится
Sphaira вряд ли перевернет индустрию с ног на голову, но как аккуратный швейцарский нож для домашней консоли выглядит очень цельно. Она закрывает сразу три типичные задачи: быстрый запуск NRO, передачу файлов без извлечения карты памяти и установку софта из сети.
Если вам надоело жонглировать пятью разными NRO-утилитами ради базовых операций с файлами, Sphaira стоит закинуть на флешку и проверить в деле. Ссылка на исходники открыта, лицензия GPL-3.0, а баги автор активно разбирает в GitHub Issues.
