UIX Desktop — Public Beta
2026-04-26
A cross-platform desktop preview of the Xbox dashboard, decompiled from
the 5960 retail binary using Ghidra and binary analysis. Native on
macOS, Linux, and Windows through SDL2 + OpenGL, with an asset
filesystem (xboxfs/) that maps Xbox drive letters to host directories.
This is a public beta. Expect rough edges. Bug reports welcome.
Builds
| Platform | Zip | Binary |
|---|---|---|
| macOS | UIX-Desktop-macOS-Public_Beta_2026-04-26.zip |
theseus |
| Linux | UIX-Desktop-Linux-Public_Beta_2026-04-26.zip |
theseus |
| Windows | UIX-Desktop-Windows-Public_Beta_2026-04-26.zip |
theseus.exe |
The Windows drop ships SDL2.dll, SDL2_mixer.dll, and libwinpthread-1.dll alongside the .exe — keep them together. macOS and Linux dynamically link to system SDL2 / OpenGL.
All three platforms expect the xboxfs/ directory to sit next to the
binary. That's where the dashboard finds its skins, fonts, audio,
language files, and XIP archives at runtime.
What's new in 2026-04-26
Unified launch dispatcher
Five separate launch sites had drifted into platform-specific snippets that handled different subsets of the things you might want to launch. Consolidated into one helper used by every site:
steam://...— Linux invokessteamdirectly to bypass KIO. KDE/Plasma's URL handler chain doesn't always resolve thesteamscheme; this avoids the "Unknown protocol" error path entirely. macOS and Windows still go through their native URL handlers, which work fine there.- Other URLs (
http://,https://,file://, ...) — system URL opener. - Anything else — runs through the shell. Raw executables, paths
with arguments, bash scripts,
.batfiles,firefox --new-window URLstyle commands — all just work.
Title Maker's "Launch" field accepts any of the above. Type or paste a command, click Test Launch.
CLI flags
| Flag | What it does |
|---|---|
--scale N |
UI scale factor for the ImGui debug overlay (e.g. 1.5, 2.0). Useful on high-DPI displays. |
--fullscreen |
Borderless fullscreen at native resolution. |
--4k |
Convenience: --fullscreen + --scale 2.0. |
--no-toolbar |
Start with the menu bar hidden. Toggle back with F10. |
--dashboard |
Start in dashboard mode (skip the preloader picker). |
--development |
Start in development mode. |
--muted |
Start with audio muted. |
Menu bar visibility
| Trigger | Effect |
|---|---|
| F10 | Toggle the menu bar in/out. |
| File → Hide Menu Bar | Same, from the menu (use F10 to bring it back once it's gone). |
--no-toolbar at startup |
Start hidden. |
On a 4K monitor, try ./theseus --4k. Knock the scale back with
--scale 1.5 if 2× feels too big.
Title Maker
- Free-form Launch field (paths, scripts, command lines, URLs)
- File browser with no type filter — pick any binary or script
- Test Launch button now uses the unified dispatcher and is fire-and-forget (won't tear down the dashboard)
Windows refresh (later in the day)
The first Windows zip cut had three Windows-specific gaps that the macOS / Linux builds didn't share. All resolved in the current zip:
- Virtual games from
games.iniweren't appearing in the dashboard. Title Maker showed the entries fine, but the dashboard's directory scan went through real Win32FindFirstFileand never injected the virtual entries. Fixed by wrapping the find handle and walking real entries first, virtual entries after. A wildcard-matching glitch (treating*.*literally as "name with a dot in it") meant testers whose game names had no dots saw zero of N — fixed by collapsing*.*to*on Windows the same way POSIX does it. - Black console window popped open on launch. Switched the PE to
Windows subsystem with
mainCRTStartupas the entry; explorer launches are clean now.AttachConsole(ATTACH_PARENT_PROCESS)at startup keeps stdout/stderr flowing when the binary is launched from acmd/ PowerShell window, so diagnostic logs still work for testers running from a terminal. - Steam Import wasn't downloading icons. The icon resize step
shelled out to ImageMagick's
convert, which isn't installed on stock Windows. Fixed by skipping the resize on Windows and copying the Steam CDN icon as-is — the dashboard scales at render time anyway. To pick up icons for entries that were already imported by the broken version, delete those entries in Title Maker and re-import from Steam.
Quickstart
macOS
unzip UIX-Desktop-macOS-Public_Beta_2026-04-26.zip
cd UIX-Desktop-macOS-Public_Beta_2026-04-26
./theseus
If macOS Gatekeeper complains: xattr -dr com.apple.quarantine theseus,
or right-click → Open the first time.
Linux
unzip UIX-Desktop-Linux-Public_Beta_2026-04-26.zip
cd UIX-Desktop-Linux-Public_Beta_2026-04-26
./theseus
Needs SDL2 and SDL2_mixer installed (apt install libsdl2-2.0-0 libsdl2-mixer-2.0-0 on Debian/Ubuntu, pacman -S sdl2 sdl2_mixer on
Arch). OpenGL is part of any Mesa install.
Windows
Unzip, then run theseus.exe from inside the unzipped folder. The
DLLs and xboxfs/ need to stay next to it.
Known issues
Unable to load texture file (background.xbx) and fallback failedon startup is benign if the active XIP set doesn't include that asset. The dashboard continues without it.- Save game delete confirmation is currently a no-op — the submenu opens but the delete action doesn't fire. Status of fix unknown.
- Working directory matters. Run from inside the unzipped folder;
running from elsewhere won't find
xboxfs/. -
Linux + KDE/Plasma: if
steam://games still don't launch after this build, yoursteam.desktopmay not be onPATH. Verify withwhich steam. The build invokes the binary directly, sosteamneeds to be resolvable. If KDE still refuses to hand offsteam://URLs, register the handler explicitly:xdg-mime default steam.desktop x-scheme-handler/steam
Reporting issues
Include:
- Platform + version (e.g. CachyOS + KDE Plasma 6.x, macOS 14.5, Win11)
- Output of running with no flags from a terminal (the binary prints diagnostics to stderr)
- What you were trying to do
- Whether it's a regression vs. a previous build