Repository navigation
Conversation
…-pre1) Settings' new Steam client choice (steamClient, "windows" by default) can run Valve's Linux Steam client, which MetalSharp-Wine.app 7.0-pre1 carries as share/steamvm/metalsharp-steam, in place of Windows Steam. Its games run on the Mac in MetalSharp Wine in the Steam prefix. FEX build only; the regular build never takes this path. - Backend (linux_steam.c): Start Steam runs the one-time setup as a background job (logs/linux-steam-setup.log, its "==> " stage in /steam/status), then start and show. Stop and running state follow metalsharp-steam stop and status --json (cached for 2 s). /steam/install is refused in Linux mode. - Play: launch.env, launch-exe and launch-args are written as before. The game's lane goes to the bridge daemon as run/linux-steam/launch-intent/<appid> (mullion, dxvk, vkd3d or wine), and the steam://run link goes to Linux Steam, which is started first if needed (up to 90 s). Direct launches no longer start Windows Steam in Linux mode. - Library: prefix-steam/drive_c/SteamLibrary/steamapps is scanned wherever the Steam roots are. - Quit, the updater and the post-update migration stop the virtual machine with metalsharp-steam stop (60 s bound). krunkit, gvproxy, metalsharp-vmd and LinuxSteam are left out of every path-based Wine kill list. - After a Wine app swap (update migration, startup refresh), the Steam prefix gets wineboot -u -r and wineserver -w, so the first Play does not wait for Wine's own prefix update. This runs only for a FEX-ready prefix with no wineserver. The startup refresh keeps an installed MetalSharp-Wine.app whose version is newer than the carried one. - Pins: MetalSharp Wine 7.0-pre1 for the arm64 runtime download and the FEX release job. The x86_64 runtime stays at 6.0. - Tests: linux_steam_test (a stand-in metalsharp-steam), the updater stop test, migration stubs, Rust tests for the stop and kill-list exclusion, and the node source-contract test linux-steam-client.cjs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Linux Steam, Valve's arm64 client in a small Linux VM shipped inside MetalSharp Wine 7.0-pre1 (metalsharp/MetalSharp-Wine#22), as an experimental Steam client on the FEX build. The regular build is unchanged in behaviour.
What it does
steamClientconfig key, defaultwindows). It only shows when the installed MetalSharp Wine carriesshare/steamvm/metalsharp-steam. Switching stops the running client first.metalsharp-steam installin the background, with progress shown as "Setting up Linux Steam: ". Then it starts the VM and Steam and opens the Linux Steam window. Stop Steam shuts the VM down cleanly. Running and installed state come fromstatus --json, cached for 2 s.~/.metalsharp/prefix-steam(METALSHARP_GAME_PREFIX) as the Mac user, so saves, settings and the already prepared prefix are shared with Windows Steam games. No per-game prefix is created.launch.env,launch-exeandlaunch-argsas today, then a launch intent naming the per-game backend (Mullion, DXVK, VKD3D-Proton or OpenGL), then sendssteam://run/<id>to Linux Steam. MetalSharp's backend choice wins for that launch; a Play from inside Steam uses Steam's tool.prefix-steam/drive_c/SteamLibrary/steamappsis scanned everywhere, so games installed by Linux Steam show up and launch.wineboot -u -rruns once inprefix-steam.metalsharp-steam stop.Tests
make -C app/src-c test, regular and FEX: pass, 0 warnings. That includes the newlinux_steam_test(stand-inmetalsharp-steam) and the updater stop test.cargo test: 128 passed.node --test app/tests/*.cjs: 13 passed.Status: needs end-to-end testing before merge
update.shinstalled it over a signed 1.1.0, with every updater stage passing.app_update; that path and the startup swap still need checking.prefix-steam, as in Windows mode.METALSHARP_LINUX_STEAM_COMMANDoverride is read by the shipped backend.