Open-Wine-Components / umu-launcher

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support running Proton applications without Pressure Vessel/Bubblewrap

ehfd opened this issue · comments

Hi.

This seems like a weird request, but since Lutris, Heroic, Bottles, and others are all working towards ULWGL, I wanted to highlight the requirement of NOT using Pressure Vessel or Bubblewrap to run Proton applications with unified patches.

I am a developer working on using Kubernetes and Docker environments to run Wine/Proton applications.
Because Pressure Vessel/Bubblewrap is another form of sandboxing, along with Flatpak (required with Bottles), it is incompatible with unprivileged container runtimes (containers inside containers don't work well).

Moreover, since containers already isolate the applications, another sandbox inside it is redundant.

Whilst we are already working on patching Steam to have it run games without going through the pressure vessel, I was wondering if an option to easily run Proton without the pressure vessel and other forms of containerization could be supported.

Because Flatpak does not have this option, we cannot use Flatpak in unprivileged Docker/Kubernetes without adding dangerous privileges for multi-user environments (requires seccomp=unconfined and apparmor=unconfined like how Bubblewrap does).

Example of making Proton in Steam work without Pressure Vessel:

Assuming you have Proton Experimental installed in ~/.local/share/Steam/steamapps/common/Proton - Experimental, create ~/.local/share/Steam/compatibilitytools.d/Proton - Experimental (no runtime) and drop two files there, compatibilitytool.vdf that contains

"compatibilitytools"
{
  "compat_tools"
  {
    "proton_experimental_noruntime"
    {
      "install_path" "."
      "display_name" "Proton Experimental (no runtime)"
      "from_oslist"  "windows"
      "to_oslist"    "linux"
    }
  }
}

and toolmanifest.vdf with

"manifest"
{
  "version" "2"
  "commandline" "'/../../steamapps/common/Proton - Experimental/proton' %verb%"
}

CC selkies-project/docker-nvidia-glx-desktop#47

Running binary releases of Proton versions without the Steam Runtime is unsupported as they are built on top of SLR and generally considered a very bad practice. This is one of reason's for ULWGL's existence too, to allow running Proton versions outside of Steam in an environment they were built for. This is also the main point of this disclaimer.

Your best option if you want to follow this way of not using the SLR, is to build Proton for your environment. You can take as much inspiration as you need from proton, proton-experimental and proton-ge-custom AUR packages. Please, strongly note that if you do this, your builds will be considered unsupported by the rest of the community as they will be that much harder to debug.

As noted the whole point of this project is to run Proton using Pressure-vessel/bwrap the way valve does in order to leverage using the runtime to have the same run environment across all distributions. Without using the runtime you then introduce a variation in the libraries games are using -- because they are instead using flatpak's libraries instead without valve's overriding anything. In the future we also plan to build our own runtime based on valve's rather than directly copying it so that we can patch/add things we want in order to make it more robust. Basically, we don't want to lose the advantages that valve's runtimes provide, and we also want to build on top of it, not remove it.

Closing for now because currently there are no intentions or plans on removing or disabling the runtime.

@GloriousEggroll Since you are the maintainer of wine-staging, I have a question. Since wine-ge is discontinued, is there any difference in terms of application support by directly installing wine-staging from WineHQ?
What are some key differences, for the record?