Skip to content

About

Download and play Minecraft Legends (Windows edition) on Linux

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

LegendsOnLinux

Play Minecraft Legends (Windows edition) on Linux with the copy you own.

LegendsOnLinux signs in to your Microsoft account, downloads the game from Microsoft's own servers (only if your account owns it), and runs it with a patched WineGDK engine. It also signs the game in to Xbox Live.

The LegendsOnLinux launcher window

Status: early. The game reaches the main menu, signs in to Xbox Live and saves locally. Online multiplayer is untested. Saves stay on this PC and do not sync with your Xbox/Windows cloud saves.

Why Minecraft Legends needs more than Proton

The Microsoft Store build of Legends is a GDK ("Gamecore") title, not a UWP app. It depends on Microsoft's Gaming Runtime (xgameruntime.dll) for Xbox sign-in, the Store license check and save games, and neither Wine nor Proton provides it. WineGDK does, and LegendsOnLinux adds the two parts Legends needs on top of it:

Symptom without it Cause Fix (engine/patches/)
Stuck at the first loading bar The Store license query always fails 0001: answer it with an active license
Stuck at "Loading, please wait" after sign-in WineGDK has no XGameSave 0002: XGameSave on local storage

How it works

Part How
Ownership, licence, download xodus-cli signs in as a Windows Store device and streams the package from the Xbox CDN.
Decryption The game's executable stays encrypted on disk, as on Windows. xodus-cli run decrypts it into memory at every launch.
Xbox Live in the game A Microsoft device-code sign-in. The launcher builds the Xbox Live token chain itself and hands it to WineGDK.
Engine BedrockOnLinux's published WineGDK build, with xgameruntime.dll replaced by our build of the same source plus engine/patches/ (published as a release of this repository).
Network The game's XCurl.dll is swapped for an OpenSSL build, because Azure drops Wine's TLS.

All downloaded components are pinned by SHA-256 in legends_on_linux/config.py.

Requirements

  • x86-64 Linux with a Vulkan GPU driver
  • Python ≥ 3.10 with cryptography, and PySide6 for the launcher window
  • libwebkit2gtk-4.1 (for the Microsoft Store sign-in window)
  • About 13 GB of disk space for the game, plus about 3 GB for the engine and runtime

On Fedora: sudo dnf install python3-cryptography python3-pyside6 webkit2gtk4.1 On Debian/Ubuntu (from a checkout): sudo apt install python3-cryptography python3-pyside6.qtwidgets libwebkit2gtk-4.1-0 (or pip install PySide6 where the distribution has no PySide6 package)

Getting started

Fedora (.rpm)

Download the .noarch.rpm from the latest release and install it (dnf pulls in its dependencies):

sudo dnf install ./legends-on-linux-*.noarch.rpm

Then start LegendsOnLinux from the application menu, or run legends-on-linux. To build the package yourself: scripts/build-rpm.sh (needs rpm-build).

Debian, Ubuntu, Linux Mint (.deb)

Download the _amd64.deb from the latest release and install it (apt pulls in its dependencies):

sudo apt install ./legends-on-linux_*_amd64.deb

It works on Ubuntu 22.04 and newer and Debian 12 and newer. It bundles PySide6, because Ubuntu's LTS releases do not package it. To build it yourself: scripts/build-deb.sh (uses a Debian container through podman or docker when dpkg-deb is not installed).

AppImage (any distribution)

Download LegendsOnLinux-*-x86_64.AppImage from the latest release, make it executable and run it:

chmod +x LegendsOnLinux-*-x86_64.AppImage
./LegendsOnLinux-*-x86_64.AppImage                 # opens the launcher
./LegendsOnLinux-*-x86_64.AppImage desktop-entry   # optional: add it to the menu

It carries its own Python and Qt. It needs glibc 2.34 or newer (Ubuntu 22.04+, Debian 12+, Fedora 35+) and WebKitGTK 4.1 for the Microsoft Store sign-in (Fedora: webkit2gtk4.1, Debian/Ubuntu: libwebkit2gtk-4.1-0); the launcher tells you if it is missing. On SteamOS and other read-only systems, use the Flatpak. To build it yourself: scripts/build-appimage.sh.

Flatpak (any distribution)

Download LegendsOnLinux-*-x86_64.flatpak from the latest release and install it for your user (it pulls in the GNOME 51 runtime from Flathub):

flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./LegendsOnLinux-*-x86_64.flatpak
flatpak run io.github.mdx0111.LegendsOnLinux

The Flatpak keeps its data in the same ~/.local/share/legends-on-linux as the .deb and .rpm, so switching formats keeps your sign-ins, game and saves. It can see your home folder. For a game folder outside it, allow that folder once:

flatpak override --user --filesystem=/path/to/games io.github.mdx0111.LegendsOnLinux

To build it yourself: scripts/build-flatpak.sh (needs org.flatpak.Builder and the GNOME 51 SDK from Flathub; see the script).

Launcher window (from a checkout)

git clone https://github.com/mdx0111/LegendsOnLinux.git
cd LegendsOnLinux
./legends-on-linux                    # opens the launcher
./legends-on-linux desktop-entry      # optional: add it to your application menu

In the window, sign in to the Microsoft Store and Xbox Live, press Install (or Change… to pick a folder you already downloaded the game into), then PLAY. The first play downloads the engine (about 820 MB) and the Steam Linux Runtime (about 900 MB), and creates the Wine prefix. The ⋮ menu opens the game, saves and log folders, and turns on debug logging.

Command line

./legends-on-linux setup              # engine, umu, xodus-cli, Wine prefix
./legends-on-linux login              # Store sign-in window, then an Xbox Live code
./legends-on-linux install            # download the game (~12 GB)
./legends-on-linux play

If you already downloaded the game with xodus-cli, point the launcher at that folder instead of downloading it again:

./legends-on-linux use "/path/to/Minecraft Legends"

./legends-on-linux status shows what is set up.

Two Microsoft sign-ins

login runs two sign-ins with the same account, as BedrockOnLinux does:

  1. Microsoft Store (login --store): a sign-in window from xodus-cli. It proves ownership and decrypts the game. The first time, it registers this PC as one of the (up to ten) Store devices on your account.
  2. Xbox Live (login --xbox): open the link shown and enter the code. This is the account the game itself plays as.

Security and privacy

LegendsOnLinux needs your Microsoft account, so here is exactly what it does with it. The code is small and readable: the sign-ins are in legends_on_linux/auth.py and legends_on_linux/store.py.

Your password

  • Xbox Live uses Microsoft's device-code sign-in, the same flow consoles and TVs use. You type your password and code into microsoft.com/link in your own browser; the launcher never sees the password, only the token Microsoft hands back.
  • Microsoft Store sign-in is done by xodus-cli (GPL-3.0), the same tool BedrockOnLinux uses. It opens Microsoft's sign-in page in its own window. The first time, your system may also ask for an administrator password: xodus-cli reads the firmware's system information to register this PC as a Store device. Cancelling that prompt is fine.

What is stored, and where

Everything stays on your computer, in folders only your user can open:

What Where (under ~/.local/share/legends-on-linux/)
Xbox Live refresh token, a device key, short-lived Xbox tokens account/
A copy of the Xbox Live refresh token, which the game reads the Wine prefix's registry, prefix/system.reg
Microsoft Store sign-in xodus-cli's keyring in xodus-home/

Nothing is stored in the system keyring, in the cloud, or anywhere else.

What the launcher connects to

  • Microsoft and Xbox Live: login.live.com and *.xboxlive.com to sign in, and the Microsoft Store (through xodus-cli) to check ownership and download the game.
  • Downloads of its components: GitHub releases (this project, BedrockOnLinux, umu-launcher) and curl.se for CA certificates. Every download is checked against a SHA-256 checksum pinned in legends_on_linux/config.py.

The launcher has no analytics or telemetry and no server of its own. The game itself talks to Microsoft, Xbox Live and PlayFab, as it does on Windows.

Signing out and revoking access

  • legends-on-linux logout --xbox deletes the Xbox Live tokens, including the copy in the Wine prefix.
  • legends-on-linux logout --store signs xodus-cli out; add --forget-device to also drop this PC's Store device registration.
  • To cut off access from Microsoft's side, remove the PC under account.microsoft.com/devices, or revoke app access under account.live.com/consent/Manage.

Debug logs

play --debug writes HTTP logs (xcurl.log in the game folder) that can contain sign-in tokens. Don't post them publicly as they are: remove the token values first, or ask in the issue for a private way to share them.

Files

Everything lives under ~/.local/share/legends-on-linux (override with LOL_HOME):

Path Contents
game/ the game (default install location)
prefix/pfx/ the Wine prefix
prefix/pfx/drive_c/users/steamuser/AppData/Local/WineGDK/XGameSave/ your saves
account/ Xbox Live sign-in (refresh token, device key, preauth)
xodus-home/ the Microsoft Store sign-in (xodus-cli keyring)
engine/, umu/, xodus/, xcurl/ runtime components
engine-overlay/ the Legends xgameruntime.dll (downloaded, or a local build)
logs/ logs (play --debug adds Proton and HTTP logs)

Building the engine patch yourself

The launcher downloads a prebuilt, SHA-256-pinned xgameruntime.dll. To build it from source instead (for development, or to check the published one):

# Fedora: sudo dnf install git gcc make flex bison mingw64-gcc
./legends-on-linux setup                 # the build takes BoL's patches from the engine
scripts/build-xgameruntime.sh            # ~1 minute; writes engine-overlay/xgameruntime.dll
LOL_XGAMERUNTIME_DLL=~/.local/share/legends-on-linux/engine-overlay/xgameruntime.dll \
    ./legends-on-linux setup             # install your build instead of the published one

A local build is also used automatically when the published one cannot be downloaded. Wine embeds a build timestamp, so a rebuild has the same code but a different hash from the release.

Troubleshooting

  • ./legends-on-linux play --debug writes logs/steam-*.log (WineGDK traces) and game/xcurl.log (every HTTP request and its status). The HTTP log can contain sign-in tokens; see Debug logs before sharing it.
  • "does not own Minecraft Legends": sign in with the account that bought the Windows edition (Store ID 9N98Z825TNFW). A Steam copy cannot be downloaded this way.
  • "ten Store devices": remove an old device at https://account.microsoft.com/devices.

Credits and licences

LegendsOnLinux is MIT-licensed. It builds on BedrockOnLinux (MIT), whose Xbox Live token chain, offline registry writer and launch wrapper were ported or vendored here. Its engine is built from WineGDK (LGPL-2.1), and the game is acquired with xodus-cli (GPL-3.0), which is run as a separate program and not linked. See THIRD_PARTY.md.

Minecraft and Minecraft Legends are trademarks of Microsoft. This project is not affiliated with Microsoft or Mojang. It does not distribute any game files. You need to own the game.

About

Download and play Minecraft Legends (Windows edition) on Linux

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages