DavidoTek / ProtonUp-Qt

Install and manage GE-Proton, Luxtorpeda & more for Steam and Wine-GE & more for Lutris with this graphical user interface.
https://davidotek.github.io/protonup-qt
GNU General Public License v3.0
1.28k stars 41 forks source link

If is Steam, ProtonGE7-49 is available but if is Lutris, ProtonGE7-37 and older is available #191

Open M4rQu1Nh0S opened 1 year ago

M4rQu1Nh0S commented 1 year ago

Why for Lutris the ProtonUp-Qt is not showing the latest versions of Proton GE? for Lutris only version 7-37 and older is available But if is Steam I can install the most recent versions of Proton.

I want to install version 7-49 of ProtonGE for Lutris, but in ProtonUp-Qt is not possible, only manually.

sonic2kk commented 1 year ago

I think there is a slight misunderstanding here and you are looking at two entirely different builds of Wine. GE-Proton is not available for Lutris, what you're looking at is Wine-GE. These are two different tools with two different repositories.

GE-Proton is for use with Steam and is built with the Steam Linux Runtime in mind, where as Wine-GE is a general build of Wine that is for general-purpose use. If I recall correctly it is built using the Lutris build system as opposed to the build instructions for Proton, which use the Steam Linux Runtime.

At the time of writing, the latest GE-Proton release is GE-Proton7-49, and the latest build of Wine-GE is Wine-GE-Proton7-37. Releases of GE-Proton do not always warrant a release of Wine-GE, or a Wine-GE release may be delayed while patches are rebased, which is why there is a version discrepancy between the two builds. As they are two different tools though, the versions should not be expected to line up.

This is likely why you are seeing two different versions. ProtonUp-Qt is offering the latest version of both tools, it is just that they are two separate tools for two different purposes. ProtonUp-Qt does not allow you to install GE-Proton for Lutris and likewise does not allow you to install Wine-GE for Steam.

The descriptions in ProtonUp-Qt mention that one is for Steam and the other is for Lutris, though the build names don't reflect this I guess I never really noticed. The builds on the GitHub repo though still have GE-ProtonX-XX in their name so it isn't a huge deal imo. The "Info" button should also take you to that release on the tool's repo.

image image

DavidoTek commented 1 year ago

Yes, thanks for pointing that out, sonik2kk!


On this topic, I noticed something interesting in the newest Lutris release:

https://github.com/lutris/lutris/releases Add support for Proton

I took a quick look at the code, looks like you can just put the Proton tool folder in ~/.local/share/lutris/runners/wine/

https://github.com/lutris/lutris/blob/ebddf4b36a2e5111752676f3b8ac68f96ecd62a3/lutris/runners/wine.py#L587-L590

I think there was some previous efforst to add Proton support to Lutris. Also there was the environment variable LUTRIS_ENABLE_PROTON.

M4rQu1Nh0S commented 1 year ago

Oh, this explains all, thanks. So... if a want to use the latest ProtonGE in Lutris I need to do this manually. Because for Lutris the ProtonUp-Qt will only work with WineGE.

Anyway, could be good if this tool allowed this possibility, maybe more users want to use ProtonGE in Lutris.

sonic2kk commented 1 year ago

I took a quick look at the code, looks like you can just put the Proton tool folder in ~/.local/share/lutris/runners/wine/

Yes I believe so, though I still don't think you're meant to, see the warning plastered over the Readme for GE-Proton: https://github.com/GloriousEggroll/proton-ge-custom#1-running-non-steam-games-with-proton-outside-of-steam-is-not-supported-do-not-ask-for-help-with-this

Proton is really intended to only be used within Steam.

sonic2kk commented 1 year ago

Do we want to allow GE-Proton for downloading within Lutris? It could be gated behind Advanced Mode with a warning for Lutris though I'm not sure there's currently a good way to gate an option behind advanced mode for one launcher only, and to show a custom message. The cleanest way might be to subclass the GE-Proton compatibility tool specifically for Lutris.

To me personally, it still makes little sense to allow using GE-Proton with Lutris. Wine-GE exists to serve exactly this purpose, it has all of the patches that GE-Proton and is based on the same Proton Bleeding Edge, but doesn't have any Proton-specific components. It is created as the GE-Proton for use outside of Steam, and therefore there should never be any reason to use GE-Proton outside of Steam.

On top of this, Lutris already lists GE-Proton versions downloaded for Steam in its "Wine version" dropdown. So if you use ProtonUp-Qt to download GE-Proton for Steam, it will already show up for Lutris.

image

DavidoTek commented 1 year ago

I'm still not 100% sure about this. As you mentioned, there is little reason to have this as we have Wine-GE and if Lutris can use the compatibility tools that are installed for Steam, advanced users can already use it that way.

Nevertheless, if there is demand, I'd accept to add GE-Proton for Lutris behind advanced mode, probably using the subclass method you described.

sonic2kk commented 7 months ago

With umu, a project to allow a compatible Steam Linux Runtime container to be used with Proton independent of Steam (and thus allowing Non-Steam Games to use Proton reliably), and its adoption by Lutris and also by newer GE-Proton releases internally, I believe we can enable GE-Proton for at least Lutris now or in the very near future. The latest Lutris release v0.5.17 includes experimental support for umu and now requires it to run games with Proton.

It is unclear to me if Lutris installs it, but I assume it would or would facilitate installing it. It would be strange to me if it needed the user to do this manually particularly because umu is not getting consistent releases yet. There is also the case of different Proton versions requiring different Steam Linux Runtime versions, and all of these versions getting semi-regular updates from Valve - And the Steam Client manages all of this. But on the flipside, if it's up to the user to manage, that means there is no need for all these launchers to install all of these different umu versions. Since umu can be installed as Flatpak perhaps different launchers can simply "hook into" the Flatpak, but I have no idea how that would work for mixing and matching Flatpak umu with non-Flatpak Lutris/Heroic/Bottles, or how all the sandboxing would play together if umu and all the launchers were sandboxed. I'm tired and didn't find out too much, and a lot of the umu stuff seems to have come suddenly with a lot of developing info over the last couple of months.

With umu the eventual goal is to negate "Proton-flavoured Wine" releases such as Wine-GE, and instead Proton can be reliably used outside of Steam without any reliance on Steam - Lutris will look for the Steam Linux Runtime but it relies on Steam to do this, but with umu it would not and could use this instead.

I wrote a lengthy reply about my understanding of what umu is over at https://github.com/fastrizwaan/WineZGUI/issues/20#issuecomment-2058022777, it may not be perfect and there are some things I am still not fully clear on, like does GE-Proton look for umu or is it simply able to apply umu fixes/otherwise integrate with it if used? I think GE-Proton actually uses umu in some fashion but I don't believe it includes it as this would balloon the filesize and be redundant. Having said that, it may be able to look for umu if installed on your system, such as via Flatpak.

However for the purposes of Lutris (I think Heroic and Bottles are set to follow suit in future too) I think we can enable GE-Proton, as these launchers will manage UMU the same way Steam manages the Steam Linux Runtime. In my head, UMU essentially takes the place of the Steam Linux Runtime outside of Steam, and launchers that want to use UMU will be the ones to manage it the same way the Steam Client manages Proton.


In short, I think it should be safe to enable GE-Proton for Lutris in the very near future. We may want to consider emphasising that Lutris requires umu to use GE-Proton (and any other Proton flavour we enable for Lutris). I don't think we can easily do this without subclassing solely for the purpose of overriding the warning message to include this (which seems excessive).


If Lutris and other launchers are not the ones responsible for installing umu, there may be a separate discussion around wheter ProtonUp-Qt should include it if it is a case of extracting it to, say, Lutris' runtimes folder. But I don't know enough about how Proton flavours, launchers like Lutris, and umu all interact just yet to say that (see my earlier comments about not even knowing how it gets installed and used properly by launchers).

DavidoTek commented 7 months ago

Interesting, wasn't aware of umu yet.

However for the purposes of Lutris (I think Heroic and Bottles are set to follow suit in future too) I think we can enable GE-Proton, as these launchers will manage UMU the same way Steam manages the Steam Linux Runtime In other words, I don't think WineZGUI has to do anything to allow or enable UMU, it should be handled by GE-Proton

Does that mean, once a game is launched using a specific GE-Proton version, it will know which version of umu is needed and automatically install it or will it just look for it in a known search path?

It would be strange to me if it needed the user to do this manually particularly because umu is not getting consistent releases yet wheter ProtonUp-Qt should include [umu] if it is a case of extracting it to, say, Lutris' runtimes folder

Hmm, I guess we could just add it as a standalone compatibility if there is a known path and GE-Proton doesn't handle the installation. But it would require knowing which version is needed. That would break the user experience.

Since umu can be installed as Flatpak perhaps different launchers can simply "hook into" the Flatpak I am still not fully clear on, like does GE-Proton look for umu or is it simply able to apply umu fixes/otherwise integrate with it if used?

That sounds like there is no standard way yet, if GE-Proton handles that itself and others rely on an already installed versions.

With umu the eventual goal is to negate "Proton-flavoured Wine" releases such as Wine-GE

I guess it would make most sense if Proton builds include the needed umu version in the archive. Can be a few hundred kilobyte at most when looking at the repo, right?


It sounds like a good idea to keep an eye on this and integrate support if necessary once it is "ready".

I guess we can start with GE-Proton, that will probably be the most used one and simple to do iff it handles everything itself.

sonic2kk commented 2 months ago

So having used Lutris a bit more recently, I am not sure what we should do here.

Lutris will pull Proton versions from Steam, and the plan is that Wine-GE will eventually be replaced with umu and GE-Proton (where umu will play rhe role of the Steam Linux Runtime, and Protonfixes will apply fixes based on EXE detection).

Since Lutris pulls Proton versions from Steam already, I'm not sure what we should do here. On one hand, allowing this option will mean users without Steam can still download Proton. On the other hand, we could end up allowing duplication, where a user may not realise Lutris will pull Proton versions and might download them for Lutris unnecessarily. Although I'm not sure that's really "our problem."

I am working on a refactor for how we handle GE-Proton and Wine-GE, and I am looking to open a PR for it soon, so probably this can be further discussed at that point 😄