Repository navigation
Releases: robcodedev/onionos-mainui-opensource
Release list
Open MainUI 1.0.7
This release brings MainUI closer to stock, especially in how buttons behave alongside Onion. Y, Select and Start now act when released, as in stock, so Onion's shortcuts and button combos no longer clash with MainUI. Your startup tab, the Expert app, GameSwitcher brightness and the hotspot icon now work as in stock. Wi-Fi also gets an address sooner after it's turned on.
Buttons
- Onion's Expert app opens Expert, as in stock, even when Expert is hidden on the main menu. Before, setting it as the X or Y shortcut only made the screen flash, and starting it from Apps went back to Apps. (#22) Thanks to @fengfrw for the report.
- Y acts when released, as in stock. If an app or tool was set as the Y shortcut in Tweaks, Y on a game could also launch the game, or put it first in Recents, before Onion ran the shortcut.
- When Game List Options is the Y shortcut (Onion's default), Y on a game opens it every time. Shortly after boot or after a game, Onion could miss the press and start the game instead. With no Y shortcut, Y launches the game as A does.
- Select opens the context menu and Start reloads a list when released, as in stock, and not after a combo. While Select or Start is held, the other buttons belong to Onion (brightness, volume boost, CPU clock), so those combos no longer leave the menu open or reload, page or jump in a list.
- On the Mini, a Menu long press shortly after Select with L2 or R2 opens the context menu. Before, it was ignored for up to 1.5 seconds.
Themes and screens
- If you change brightness in GameSwitcher, it stays when you go back to the main menu, also after exiting a game started from GameSwitcher. As stock does on every start, MainUI now loads the settings in
system.jsoninto Onion's live settings. Any setting missing fromsystem.jsontakes stock's default: menu music and Menu sound 8, Sleep timer off. Thanks to Zombiediplomat for the report. - The startup tab set in Tweaks (Recents, Favorites, Games, Expert or Apps) opens at boot, as in stock.
- While Onion's Wi-Fi hotspot runs, the header shows the hotspot icon, as in stock.
Lists
- Game details opened from Favorites or Recents show the genre and description even when the game's system isn't in the open grid.
- Line breaks and runs of spaces in a game's genre no longer split the summary line in its details.
- A
.binis hidden beside its.cueonly when that.cueis a real file. If a console was affected, run Refresh roms for it.
Wi-Fi
- After turning Wi-Fi on, the network address arrives within about a second of joining instead of up to 20 s later. Wi-Fi now also starts in the same order as stock, which joined faster on a noisy channel. Thanks to @Amiga500 for the report.
Documentation
- docs/CATALOG_CACHE.md explains how Refresh all roms and game details differ from stock, and docs/THEMES.md which
fontasciikey is read.
See CHANGELOG.md for full details.
Install
Replace MainUI on your SD card with the one attached below, as described in the installation instructions. MainUI-test-wrapper.sh is optional, and SHA256SUMS lists the checksums of both files.
Open MainUI 1.0.6
This release brings Open MainUI closer to match stock MainUI appearance.
Themes, the Expert section, the Apps list and the buttons now match stock in their fonts, positions, layout and behaviour, checked against stock screenshots and the stock binary. Where stock gets in the way, Open MainUI differs on purpose, and the differences are documented.
Highlights
- Themes and screens:
- Expert labels use stock's font and size, so themes that hide their Games labels, such as ONION PS, show their Expert labels again; the Expert grid now matches stock pixel for pixel
- The battery percentage, page counter, Wi-Fi icon, home screen logo and Apps rows sit where stock puts them, and the Apps list's bottom highlight is no longer cut off
- Full-screen context-menu backgrounds (Super Onion Entertainment System Remix, RetroRama and others) are no longer pushed down by a repeated band
- A theme's own label font keeps its weight instead of being made bold
- The screen behind messages and confirmations is darkened, as in stock
- Buttons:
- X acts as B (back) on every screen, as stock does; search in a ROM list is in the context menu (Select or Menu). Tweaks can still override this.
- The
keymapinsystem.jsonis handed to the button driver at start, as stock does; an invalid mapping falls back to the default
- Lists:
- Apps keep the SD card's folder order, as in stock; an empty
.appsortfile in.tmp_update/configsorts them by name - A
.binis hidden beside its.cue, and files without an extension are left out when theextlistis empty, as in stock (run Refresh roms)
- Apps keep the SD card's folder order, as in stock; an empty
- Sound:
- Theme music recorded at 48 kHz, as in most themes, plays at its proper speed and pitch
Thanks to @Veuks, @QuackWalks and @Zazzago for the reports.
See the changelog for the full list of changes, and docs/CATALOG_CACHE.md for how ROM lists differ from stock.
Install
Replace MainUI on your SD card with the one attached below, as described in the installation instructions. MainUI-test-wrapper.sh is optional, and SHA256SUMS lists the checksums of both files.
Open MainUI 1.0.5
Open MainUI 1.0.5 is a maintenance release. It brings stock behaviour for Y, Menu, theme overrides and several screens, cleans up ROM lists that showed empty or data folders, and adds a few minor fixes.
Highlights
- Buttons:
- Game List Options:
- Shows all its options for games from ROM lists, Favorites, Recents and Search.
- Backing out of it no longer removes a game from Recents.
- Themes and screens:
- Theme overrides made in Tweaks, such as battery percentage size or hidden labels, are now applied (#15).
- Footer hints use the theme's hint font, or stock's default font when it names none.
- The Apps list shows its row counter, and its last row is no longer cut off.
- The screen behind the context menu is darkened, and Expert marks the selected console with the theme's own artwork, as in stock.
- ROM lists:
- A folder is listed only when it holds a ROM of that console somewhere below it, so empty folders and the data folders of ScummVM games and ports no longer fill the list.
Manualsfolders are never listed.- A console with an empty or no
extlistlists all its files instead of none, in Games and Expert (such as fMSX). - Run Refresh roms on an affected console to apply this.
- Speed:
- Games and Expert views decode only the icons a page shows before it appears; other icons follow when needed or while idle.
- The Apps list keeps its icons between redraws.
- Sound:
- Onion's Mute background music now silences MainUI.
- Music that fails to start is tried again when Menu sound is raised.
See the changelog for the full list of changes.
Install
Replace MainUI on your SD card with the one attached below, as described in the installation instructions. MainUI-test-wrapper.sh is optional, and SHA256SUMS lists the checksums of both files.
Open MainUI 1.0.4
Open MainUI 1.0.4 is a maintenance release: it fixes consoles that would not open because of bad characters in gamelist files, lists that rescanned on every entry, and a few display issues, and makes the log useful for bug reports.
Highlights
- Gamelists:
miyoogamelist.xmlis read as stock reads it, so unescaped&or<, unknown entities and Windows-1252 accents no longer make a console show "Catalog unavailable" after Refresh roms. A gamelist that cannot be used at all falls back to the ROM file names. - ROM list caches: a cache whose first page is damaged is repaired once instead of being scanned around on every entry, and a folder scan used during recovery lasts for that visit only. A card or permission error never replaces a cache.
- Lists: reopening Favorites or Recents after removing an entry, or returning from a game to a list that lost entries, no longer leaves an empty row at the bottom.
- Messages too long for one line wrap instead of being cut off at the edge of the panel.
- Logging: with Onion's logging on, the log starts with the version and records, one line each, every message shown on screen, every ROM cache built or removed and why, and failed reads and saves.
See the changelog for the full list of changes.
Install
Replace MainUI on your SD card with the one attached below, as described in the installation instructions. MainUI-test-wrapper.sh is optional, and SHA256SUMS lists the checksums of both files.
Open MainUI 1.0.3
Open MainUI 1.0.3 is a polish release: it brings small features, behaviour closer to stock, and refinements to everyday use.
Highlights
- Search with X now opens Games -> Search with the results, as in stock (#11).
- Settings play the change sound on every Brightness, Menu sound and Sleep timer adjustment, as in stock (#10).
- Favorites folders: paste a game on a folder to put it inside.
- Themes: text with a font size of 0 is hidden, as in stock, which themes such as DS XS and Game Boy Scouts rely on.
- Games and Expert read their consoles each time you open them (which is fast since files are cached by system anyway), so changes to the SD card show up without a restart, and the selected console is kept.
- Game details open right away; the cover appears as soon as it is ready.
- Confirmations (Delete ROM, Clear Recents, Shutdown) need a separate press of A, so a long press can't confirm by accident.
- Large icon packs use less memory.
- Damaged files: MainUI now handles more kinds of damaged or unreadable list and settings files gracefully, and keeps a copy of the original before repairing anything.
Thanks to @Amiga500 for the reports and pull requests behind #10 and #11.
See the changelog for the full list of changes.
Install
Replace MainUI on your SD card with the one attached below, as described in the installation instructions. MainUI-test-wrapper.sh is optional, and SHA256SUMS lists the checksums of both files.
Open MainUI 1.0.2
A performance and safety release. It is recommended for everyone on 1.0.1.
Highlights
- Much lower CPU use in the menus. Static screens are no longer redrawn every half second when nothing has changed. On a Mini Plus, MainUI's idle CPU use dropped from about 5% to about 1%. (#9)
- Scrolling titles are smooth and far cheaper. Only the selected row is redrawn and sent to the display, on evenly paced frames, without pauses for full-screen repaints or Wi-Fi checks. CPU use while a long title scrolls dropped from about 35% to about 6%.
- Longer battery life. In informal tests, battery drain in MainUI dropped roughly by half while idle and several times while a title scrolls. Results depend on brightness, Wi-Fi, theme and battery state.
- Safer ROM deletion. If a ROM's cache entry changed after the list was read, for example through an external rebuild, nothing is deleted and you're asked to reopen the console. Before, the ROM file could be removed while the message said it was kept. (#6)
- Covers load without holding up the UI. Large box art is now scaled in the background decoder. (#8)
Also in this release
- The
.romListTitleScrollspeed is rounded to a whole number of pixels per frame, a multiple of 25 px/s (for example 120 px/s scrolls at 125 px/s), so the motion stays even. - A long title waiting out a long scroll delay no longer holds up battery, Wi-Fi and list updates.
- With logging enabled, timing figures are written once a minute while MainUI runs, so sessions ended by the game switcher still leave them in the log. See docs/TIMING.md.
--helplists all options.
See CHANGELOG.md for the complete list.
Thanks
Special thanks to @Amiga500 for the hardware measurements and other reports. Thanks also to everyone who tested and submitted feedback.
Open MainUI 1.0.1
A reliability and compatibility release. It is recommended for everyone on 1.0.
Highlights
- Your language is used from startup. In 1.0, labels stayed in English until a language was chosen again in Settings, and again after every game.
- Theme backgrounds are the right way up. Onion stores
background.pngupside down; 1.0 showed it as stored. This affected many themes. (#1) - A damaged or unusual SD card no longer stops the launcher. An unreadable
Emufolder, a bad console or appconfig.json, missing theme fonts, an unreadable Favorites or Recents file, or an unusable theme path now falls back gracefully and logs the reason. (#5) - ROMs larger than 2 GiB (for example multi-disc PBP files) are no longer treated as missing. (#2)
- Launching a game no longer fails when the list position cannot be saved, and a damaged
romwinidx.jsonis replaced. (#3)
Also in this release
- Fallback fonts follow the language as in stock, and MainUI restarts itself when a language change needs a different fallback font.
- Settings are no longer reported as failed when the file was saved but flushing the card failed.
- Folder scans no longer follow symlinks. FAT cards are unaffected.
- Test wrapper: logging problems never block startup. (from #4)
- New guide for theme authors: docs/THEMES.md
See CHANGELOG.md for the complete list.
Thanks
Special thanks to @Amiga500 for the detailed startup report and repro script (#5), and for the fixes in #2, #3 and #4. That report started the sweep that led to most of this release. Thanks also to everyone who tested and reported issues.
Open MainUI 1.0
First public release of Open MainUI, an open-source replacement for MainUI, the main launcher screen of Onion on the Miyoo Mini, Mini Plus and Mini Flip. It builds on the features of the patched MainUI project, rewritten from scratch as readable, fixable C.
It is usable day to day, but it is a 1.0: keep a backup of your SD card before installing.
Highlights
- Browsing, Recents, Favorites with folders, search, Apps, game launch and return, themes and the stock settings screens.
- Much faster ROM cache rebuilds: a 5,000-ROM folder with 16,000 images rebuilds in under a second (stock: over 5 minutes).
- Faster list navigation, lower CPU use, and a device binary of about 200 KB (stock: 1.4 MB).
- Letter jump, configurable row count, auto-scrolling titles, gamelist.xml details, custom context menus and a configurable main menu (
main-menu.json). - Safe ROM deletion on FAT32, with automatic recovery after a power cut.
See CHANGELOG.md for the full list and known limitations.
Requirements
- Onion OS (tested on: V4.4.0-beta-20260120). Works with the existing ROM caches, Recents and Favorites; your files stay compatible with stock MainUI.
- Tested most on the Mini Plus. Reports from Mini and Mini Flip owners are especially welcome.
Install
Download MainUI below. It is the file called build/onion/MainUI in the install guide.
- Simple: with the device off, back up your original launcher files in
.tmp_update/bin/(MainUI-283-*,MainUI-354-*,MainUI-285-*), then copyMainUIover each of them, keeping their names. - With a stock switch and logging: use
MainUI-test-wrapper.shas described in the guide.
Full steps, including how to return to stock: docs/BUILDING.md - Installing on a device.
If something goes wrong: docs/TROUBLESHOOTING.md.
Files
MainUI- device binary (ARM, for Onion)MainUI-test-wrapper.sh- optional wrapper for the stock switch and loggingSHA256SUMS- checksums
Notes
Unofficial and not affiliated with Miyoo or the OnionUI team. Much of the code was written with the help of AI; not all of it has been reviewed by humans. Licensed GPL-3.0-only, like Onion.