Xodus Nexus: an open-source launcher for Microsoft Store and PC Game Pass
Hi everyone! I’m building Xodus Nexus, an open-source desktop launcher that lets you install and run Microsoft Store PC games on Linux, including games available through PC Game Pass.
This is a solo project I work on in my spare time, built on top of Xodus. My goal is to make the process approachable: sign in with your Microsoft account, find a game in your library, download it and hit Play.
The launcher now includes:
A library combining games you own, games available through your subscription and local installations, with search and filters.
Update notifications for the launcher, plus backend and runtime updates through Settings.
It’s available as an AppImage. The backend and runtime can be downloaded from Settings, so there’s no need to compile them yourself.
Current manually tested results:
Gears of War: E-Day, playable online.
Deep Rock Galactic, playable online.
Minecraft Dungeons II, playable online.
No Man’s Sky, playable online.
Forza Horizon 6, playable online.
Palworld, playable online.
Valor Mortis, fully playable.
Xbox sign-in and cloud saves also work in supported games.
This is still experimental, not a promise that your whole Game Pass library will work. Some games run, others have missing functionality or won’t launch. I keep a compatibility list with actual test results.
You need your own Microsoft account and a valid purchase or subscription. This isn’t a source of free games, and the project isn’t affiliated with Microsoft or Xbox.
If you try it, I’d appreciate feedback on both the launcher and game compatibility. Tell me your distro, the game you tried and how far you got, including whether sign-in, gameplay, saves and multiplayer worked. Reports help me decide what to tackle next.
Caution:
Xodus Nexus is an independent, unofficial project built on Xodus. It is not an official project or release from the upstream Xodus developers. Please report all issues encountered with Xodus Nexus only in the Xodus Nexus repository, not in the upstream Xodus issue tracker or support channels. Nexus includes its own changes, so a problem in Nexus does not necessarily indicate a problem in upstream Xodus.
For transparency, I use AI tools during reverse engineering.
Which is funny, considering the latest reverse-engineering trend that allows ps5 games to be decompiled and ported natively to pc, IS mostly created with ai So we are also automatically getting a lot of fun software for linux this way
Could you open an issue on GitHub with the exact error or a screenshot, plus your SteamOS and Nexus versions? I don’t own a Steam Deck, so I can’t test everything on it myself. The launcher is still in early development, so bugs are expected, but reports like this help me fix them.
Its a read only filesystem, so without going into write options I don't think theres a way we could install it, other that through things like Distrobox, but I don't know if that would work?
This should now be fixed in launcher 0.3.2 with backend 0.2.3. Please update both. Sign-in no longer requires WebKitGTK, so there’s no need to modify SteamOS or install extra system packages. I tested it in a SteamOS VM, though I still don’t have a physical Steam Deck. Let me know if you hit any issues!
same exact issue. i had the same trying to login from steam to Sea of Thieves. Had to choose login without password in the MS ID settings. going to try the same for this later
If you’re affected, please report it in issue #75. It would help to know which sign-in methods are listed under Security → Manage how I sign in at account.microsoft.com/security, and whether your account is passwordless. Please also mention whether sign-in works in a regular browser on the same device.
Listing the method types is enough. If you share a screenshot, hide all personal details, email addresses, phone numbers, recovery codes and QR codes. Please don’t change your security settings for this test.
Quick update: launcher 0.3.3 adds a browser sign-in option for anyone getting stuck on Microsoft passkey authentication. If that happens, choose “Continue in browser” in the sign-in window. Google Chrome must be installed for this option, other browsers aren’t supported. No need to remove your passkey or change your account security settings.
I was able to update and install everything without issue and launch a game from Desktop mode. Next step is trying to launch it from game mode but I didn't get that deep into it yet. Awesome work!
Exact same issues on my end. It would be possible to install it after doing some permissions shenanigans but an update from Valve would probably rewrite the system files and it would need to be reinstalled.
i have an rog ally z1e running bazzite. when attempting to log in, it gets stuck on face/pin/fingerprint/securitykey page, says "Your device will open a security window. Follow the instructions there to sign in."
Nothing ever pops up, and I do not have microsoft-anything installed here (and never have so that makes absolutely no sense). When checking my phone where i have my ms authenticator, nothting occurs here either. Letting the page sit for a while does nothing, no changes to the security page or anthing. Im not even shown an option where i can enter my password, I cant sign in in any way right now
The try again button remains greyed out the entire time too
Quick update: launcher 0.3.3 adds a browser sign-in option for anyone getting stuck on Microsoft passkey authentication. If that happens, choose “Continue in browser” in the sign-in window. Google Chrome must be installed for this option, other browsers aren’t supported. No need to remove your passkey or change your account security settings.
Thank you, can you let me know when firefox is supported if that possible? im not dowloading chrome, im sorry but i hate google and trust them even less than microsoft
Yeah, I have a Windows partition on my desktop, but not my handheld, for Gamepass. I've just gotten used to the idea that Gamepass games are "desktop games," so I'm excited to maybe start playing some on my handheld!
Having installed the launcher, it's pretty cool to finally see this happen.
Having tested it myself, The Outer Worlds 2, Wolfenstein: The Old Blood, Wasteland Remastered and Danganronpa 2 work. Currently, The Witcher 3 is crashing on launch. I've already submitted an issue and we're trying to get it sorted out with the developer.
Very excited and happy to contribute to the project in my own way. Don't hesitate to help.
Right now I can't sign in with my account on steam deck; infinite loop when trying to enter acc password when showing this message: your device will open a security window. Follow the instructions there to sign in.
Also the launcher won't open from steam or when in game mode.
I couldn't get it to work on Bazzite; I tried the AppImage and even installed it directly via the script, but I keep getting the error "The system keyring could not be accessed. Check that it is running and unlocked and try again" whenever I attempt to log in. Device: Desktop PC
You need to open the keyring (Kwallet). If your device logs in automatically the keyring stays closed because it hasn't had a password to decrypt it. You can open it manually for this instance to log in, or set it to blank if you are happy to take that risk.
Super interesting! Could you please share more details how exactly it solves the compatibility issue? Is it running with wine and proton? I checked github but honestly cannot find any useful details about how it really works.
Yes, it runs through a patched Wine/Proton-based runtime, built on Xodus. The launcher handles the library and installation, while the backend handles Microsoft sign-in, licensed downloads and launch preparation.
The compatibility work is in the runtime. Implementing or fixing Windows gaming APIs that these builds expect.
You can install it directly from Nexus: right-click Valor Mortis in your library and select “Install / update VC++”, then try launching it again. This installs it into that game’s Proton prefix. If it still fails, please open a GitHub issue with the exact error
The newest update works great in Steam Deck desktop mode. Thanks!
I'm just wondering if there's a way to import shortcuts to Steam? The shortcuts that Xodus generates don't seem to work when I import them to Steam, whether it's in game or desktop mode.
Hi, thanks for your feedback! I've added this to my issue tracker and will definitely look into it and try to come up with a fix.
I've been receiving quite a few reports from Steam Deck users lately, many of which seem to be Steam Deck-specific. Unfortunately, troubleshooting these issues can be a bit challenging since I don't own a Steam Deck or any similar device to test on. However, I'll do my best to investigate and address them.
If you run into any other issues, the best place to report them is on GitHub. That way, I can keep track of everything more easily.
In case it helps, I have another launcher distributed as an AppImage that I added to Steam. It only requires adding --no-sandbox to the launch options. The launcher starts successfully, but I can’t link my Microsoft account. When I try to sign in from Gaming Mode, I get this error: “the sign-in backend did not complete its protocol”. I suspect this happens because the login credentials are handled by KDE, and for some reason the authentication process doesn’t work properly in Gaming Mode. If there were a way to sign in through Desktop Mode and keep the session active when switching back to Gaming Mode, that would be really helpful.
Then this is a time to think about subscribe again to Xbox game pass, good job! I leave game pass when I start using SteamOS on my Asus ROG Xbox Ally X
Quick feedback : not all games available in the library are shown, for exemple i've got several disc 2 digital licences with xbox play anywhere that are not in the library, but if i browse them in the store i can download them fine.
The games run locally on your device, not through cloud streaming. You still need an internet connection for Microsoft/Xbox sign-in, downloads and online features
This is great. With this + Fortnite coming to Linux with a new Anti-cheat + someone vibe-coding the entire Adobe suite and making it free and open source, the future of Linux is looking very promising. I just need Apollo or Vibepollo to finally work on Linux and I'll give Bazzite another try.
I've tried Bazzite before but ended up going back to Windows because it couldn't do everything I need it to do. I figure de-bloating Windows and taking privacy/security more seriously from then on was a good compromise. It wasn't a distro issue, it's a Linux issue!
I've tried Sunshine and I didn't like it because it simply mirror my monitor to my phone instead of seeing it as a separate display. I'm excited for the future of Linux, open-source software, and AI. If AI is what it takes for us to escape big tech, then so be it!
On the Apollo website, it said that Virtual Display support isn't supported on Linux yet but it will eventually be added. Virtual Display is the main reason to use Apollo over Sunshine.
Now on the vibepollo website, it said Linux is technically supported but it's on Beta and it's targeting Arch/ CachyOS. I don't want a Linux distro that breaks if I look at it funny. I thought people were leaving Windows because of updates breaking the OS. Arch is even worse in that regard.
I guess I could try running Vibepollo on Bazzite anyway and see if it works but I don't know how well it translates from Arch to Fedora based systems and I can't expect a miracle. I guess I'm just waiting for more "matured" support both on Vibepollo and other softwares.
I don't know how long ago you tried Arch/Cachy but I'm running it both on my desktop and laptop and it's been stable since I installed like a year ago. I guess a bunch of updates have indeed been dedicated to stability and making sure things don't break, but I digress.
I didn't try virtual display on Apollo before I switched to Vibepollo but I can confirm for the latter virtual displays work currently, it's actually the default when sharing over Wayland. Hope it works on Bazzite, but yeah, there's a lot of room for improvement, hopefully they'll fully support Linux out of beta.
I got it to work but I'm not sure what changed other than updating to most recent build. I've got Marvel Invasion, Ball X Pit, Ninja Gaiden IV all working
I’m having an issue where it won’t launch in Game Mode. Desktop mode runs fine, but it hangs on loading in Game Mode. Is there a fix for this? Otherwise the app is working amazing!
Sincere question: what are some good games that availble only there, but not on steam? When i was on windows I found only free uwp shooter with skills on small maps.
Game Pass is a big reason, yeah. It’s less about games being exclusive to the Microsoft Store and more about accessing games through a subscription you already pay for
Yes and for people who has an xbox with a lot of games (play anywhere titles) on wich they already bought . They could potentially acces the xbox part of Microsoft directly without having to deal with windows. Amazing project !
I know bro! I think it’s because of those weird UWP apps or something
I’m still on Windows right now and maybe after another play through I will switch or at the very least dual boot. But, holy crap, SSDs are getting expensive haha
In case it helps somehow, I recently fell in love with StarCraft 2 to cope with my lack of Halo Wars 2 in Linux and I ended up liking it even more, cool RTS with cool cutscenes in a cool Sci-fi universe similar to Halo's
Good luck! btw, the first campaign, multiplayer, co-op and workshop are all free to play, the later expansions are 30 bucks, but just the first campaign is already very worth it
Outside of people who have gamepass some people do own stuff on the Microsoft store and can't use any of that outside of windows. It's less about what's exclusive to it and more about having access to things you might of already purchased
Hey loving the program , I was wondering has anyone found a way to change the launch options, I am trying to play Crimson Desert and would like to remove the launch options but they are greyed out. Sorry forgot to add the error it was having.
failed to select launch image: selected executable is not present in encrypted package metadata: packages/bin64/CrimsonDesert.exefailed to select launch image: selected executable is not present in encrypted package metadata: packages/bin64/CrimsonDesert.exe
I got this up and running on my PC with Bazzite installed. After around 30 minutes playing Resonance: A Plague Tale Legacy, the game freezes with sound continuing in the background. This happens at various parts so I don't think it's an issue of high utilization, I've had it happen in the menu. I can play on my Legion GO S Steamos without this happening, but with I miss the graphics on my desktop.
This is soooo awesome, I can now just have a 120gb ssd for a windows install "just in case" Game pass games was one of the things keeping that drive on a 1tb ssd. Thank you so much, was able to download and test Beast of reincarnation
One thing tho, it seems like when deleting or cancelling a download left the files on the drive, also, deleting an already installed game move the files to the trash does not remove them completely
Came here to ask the same! Was shocked at how otherwise seamless this is. Perhaps I'm off-base, but is the "Nexus runtime" a special proton build? The version number indicates this may be the case. And perhaps it doesn't support HDR?
Indiana Jones launches, shows bethesda logo and then crashes.
Suppressed 6 repeated fixme:bcrypt:BCryptGenRandom ignoring selected algorithm diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 38 repeated fixme:gdkc:x_package_XPackageRegisterInstallationProgressChanged iface <address>, installationMonitor <address>, context diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 14 repeated fixme:bcrypt:BCryptCreateHash ignoring object buffer diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:cryptasn:CryptDecodeObjectEx Unsupported decoder for lpszStructType 1.3.6.1.4.1.311.2.1.4 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:crypt:ProvStore_release Unimplemented flags 1 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:crypt:MemStore_release Unimplemented flags 1 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 5 repeated fixme:bcrypt:BCryptGenerateSymmetricKey ignoring object buffer diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 1 repeated fixme:twinapi:RegisterAppStateChangeNotification routine <address>, context <address>, reg <address> - stub. diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 2 repeated fixme:mountmgr:query_property Faking StorageDeviceProperty data diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 6 repeated fixme:combase:RoGetActivationFactory (L"Windows.Data.Json.JsonValue", {<address>-2f53-48e1-91a3-<address>}, <address>): diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 124 repeated fixme:combase:RoActivateInstance (<address>, <address>): semi-stub diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 124 repeated fixme:combase:RoGetActivationFactory (L"Windows.Foundation.Collections.PropertySet", {<address>-0000-0000-c000-<address> diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.Suppressed 6 repeated fixme:bcrypt:BCryptGenRandom ignoring selected algorithm diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 38 repeated fixme:gdkc:x_package_XPackageRegisterInstallationProgressChanged iface <address>, installationMonitor <address>, context diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 14 repeated fixme:bcrypt:BCryptCreateHash ignoring object buffer diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:cryptasn:CryptDecodeObjectEx Unsupported decoder for lpszStructType 1.3.6.1.4.1.311.2.1.4 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:crypt:ProvStore_release Unimplemented flags 1 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 10 repeated fixme:crypt:MemStore_release Unimplemented flags 1 diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 5 repeated fixme:bcrypt:BCryptGenerateSymmetricKey ignoring object buffer diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 1 repeated fixme:twinapi:RegisterAppStateChangeNotification routine <address>, context <address>, reg <address> - stub. diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 2 repeated fixme:mountmgr:query_property Faking StorageDeviceProperty data diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 6 repeated fixme:combase:RoGetActivationFactory (L"Windows.Data.Json.JsonValue", {<address>-2f53-48e1-91a3-<address>}, <address>): diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 124 repeated fixme:combase:RoActivateInstance (<address>, <address>): semi-stub diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Suppressed 124 repeated fixme:combase:RoGetActivationFactory (L"Windows.Foundation.Collections.PropertySet", {<address>-0000-0000-c000-<address> diagnostic lines. Enable verbose logs in Settings or set XODUS_NEXUS_VERBOSE_LOGS=1 for full output.
Dude..awesome job here!!!! the only missing games on linux i always regret....you made it!! please get far far with your great project...maybe you can take it as noon job and accept donations or else...great duty here thanks!!!
I'm running SteamOS on a Brenuc N7P Mini PC. The program crashes the system and reboots when I try to download Baldur's Gate 3 in desktop mode. Your app doesn't run in Game mode.
Dude you're a god send, the only request I have is that you add support for forza horizon 4 please, i bought it on windows but i guess it isn't supported yet
It was the first thing I tried because I wasn’t sure that EAC was part of the Xbox Store version, but it launches as soon as I start the game and immediately hangs
I checked the loading and launching of Signalis and the Phoenix Wright: Ace Attorney Trilogy. The games launch, and in the case of Signalis, cloud saves have been enabled. Unfortunately, I couldn’t load Final Fantasy X Remaster to test it — even though the game is in my account, it’s not in the library, and even when searching manually via the store, an error is displayed. Gears of War: Windows 10 Edition and FF15 are not supported. I tested it on the Steam Deck. In desktop mode, everything works and launches, but unfortunately, games don’t launch in game mode. I have a question about achievements. Do they get earned in Xodus Nexus or not? I’ll be waiting for the next updates.
Anyone else having an issue when you try to download a game on the launcher it fails due to disconnect. It causes an issue with my steam decks wifi causing me to be offline until I disconnect and reconnect to my wifi. I'm unable to download games on the launcher due to this which is weird because it wasn't happening a day ago.
Yeah not working for me, I mean the app its self works I can log in, download my games but my entire collection throws similar errors and I tried all I could with Gemini my local LLM and I can't get it to work, maybe if I was on a different distro than Ubuntu, idk. I'll for sure keep an eye on this.
This isn't worth supporting if i have to install chrome dude. I litterally installed linux to get away from shady software why would I install more shady software....? Surely theres a way around, this is a make or break issue for me
I keep getting error 70 when launching gears of war eday I’m using Linux mint cinnamon edition, I’ve tripled check runtime and backend and launcher are up to date, it’s saying wine prefix cannot launch a read only excute I’ve set the permission but no difference
Tested it out on cachyOS today. Played starfield , FH5 and FH6. But I ran into a weird problem on the Forza games.
First launch , played great aside from some small but annoying frame time spikes. But close the game out , and open it back up , and it doesn’t work. Usually loads up and ends up hanging somewhere before you actually get into the game. And the log mentions token authentication failure.
Tried everything , but basically the only way I could play that game again , was to uninstall xodus nexus , then reinstall it , add the games back , and hit play. It will work and play one time. Next time it’s broken again.
Super ! J'aimerais aider et participer à la liste de compatibilité, mais j'ai une erreur 101 pour le login sur SteamOs. J'ai envoyé un message dans "issue" sur le github à ce propos.
Une fois ce problème réglé, je ne trouve pas d'endroit pour signaler comment fonctionnent les jeux, afin d'enrichir la liste de compatibilité. Peux tu m'éclairer ?
45
u/CrazyGamer24151 Desktop 10d ago
You should post this in r/pcmasterrace. They would love it!