Skip to content

A custom launcher for the Miyoo Mini and Miyoo Mini Plus handheld devices

License

Notifications You must be signed in to change notification settings

goweiwen/Allium

Repository files navigation

Allium

Allium is a custom launcher for the Miyoo Mini and Miyoo Mini Plus handheld devices, similar to OnionOS and MiniUI.

Project Goals

The goal of Allium is to replace MainUI (stock UI) with a faster and more user-friendly UI.

  • Fast
  • Clean, user-friendly UI
  • RetroArch (with Netplay, achievements)
  • Box art
  • Support running on both Miyoo Mini and Miyoo Mini Plus without changes

Screenshots

Main menu Ingame menu Guide Settings Themes Localization

Installation

Allium supports both the Miyoo Mini and Miyoo Mini Plus on the same SD card.

First Install

  1. Format the SD card to FAT32.
  2. Download the latest release and extract into your SD card. e.g. E:/.
  3. Eject the disk (important!).

Updating

  1. Download the latest release and extract these folders into your SD card. e.g. E:/:
    • .allium
    • .tmp_update
    • Apps
    • RetroArch
  2. Eject the disk (important!).

Features

  • Supports stock/Onion/DotUI SD card layout
  • Works without configuration
  • Box art (250px wide, PNG, JPG, GIF)
  • Supports gameslist.xml with nested folders
  • Recents list (sort by last played or playtime)
  • Search games by name
  • Activity tracker
  • RetroArch for all supported cores
  • Volume & Brightness (menu + l/r/u/d) control
  • In-game menu (save & load with screenshots, reset, access RetroArch menu, guide, disk changer, quit)
  • Automatic resume when powering off/on
  • Suspend
  • Settings page
    • WiFi (IP Address, NTP, Telnet, FTP)
    • Date, time, timezone
    • Change LCD settings
    • Customize theme colours, font
    • Change system language

Planned Features

(roughly in order of priority)

  • Favorites
  • Theme manager
    • Built-in themes
    • Save current theme to file
    • Background images
  • UI improvements:
    • Folder icon
    • Volume indicator
    • Brightness indicator
    • Error toast (e.g. no core found for game)
    • Anti-aliased circles
  • WiFi stuff (wifi stuff is deprioritized because I mainly carry a MM without wifi):
    • OTA update
    • Metadata/box art scraper
    • Cloud save sync
    • Seamless netplay from ingame menu

Development

Allium comes with a simulator that can be used for development. The simulator requires SDL2 to be installed.

Requirements

  1. make, cargo, zip, clang (libclang-dev)
  2. SDL2 (optional, if simulator is not used)
  3. cross: cargo install cross --git https://github.com/cross-rs/cross (optional, for cross-compilation)

Architecture

Allium is split into several binaries:

  • alliumd (daemon that handles launcher/game/menu launching, vol/brightness hotkeys, poweroff)
  • allium-launcher (main menu, including games, recents, settings)
  • allium-menu (ingame menu, including guide reader)
  • activity-tracker (gui for looking at game activity/playtime)
  • screenshot
  • say (draws text onto the screen, using Allium's theme settings and exits)
  • show (draws an image to screen, or darkens the screen and exits)
  • show-hotkeys (draws a list of hotkeys onto the screen and exits)
  • myctl (manipulates hardware like volume. This relies on the MM's proprietary libraries.)

Shared code is located in the common crate.

Simulator

There is no simulator for alliumd (no UI, only logic).

# Run main menu (allium-launcher)
make simulator bin=allium-launcher

# Run ingame menu (allium-menu)
make simulator bin=allium-menu

Building

Running make will build Allium and RetroArch, then copy the built and static files into dist/.

make all
cp -r dist/. <sdcard>

Acknowledgements

Allium is only possible thanks to the Miyoo Mini community, including but not limited to:

  • eggs: RetroArch port, many code samples, answering questions on Discord
  • Onion team (Aemiii91, Schmurtz, Totofaki, and more): Maintaining a sane-defaults RetroArch configuration, and the huge village
  • kebabstorm: Miyoo Mini resources
  • shauninman: Allium is heavily inspired by MiniUI's simplicity and clean design
  • steward-fu: miraculous DraStic port
  • Early adopters and testers of Allium