Update to Proton 10#17
Conversation
| RUN adduser --disabled-password --gecos '' user \ | ||
| RUN useradd -m user \ | ||
| && echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf \ | ||
| && echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf |
There was a problem hiding this comment.
I'd assume this (nvidia specific stuff) can be deleted? I expect mesa/archlinux to handle this already?
|
|
||
| readonly WINE_USER_HOME="/home/user/.wine/drive_c/users/user" | ||
| readonly ZWIFT_HOME="/home/user/.wine/drive_c/Program Files (x86)/Zwift" | ||
| readonly WINE_USER_HOME="/home/user/Games/umu/umu-zwift/drive_c/users/user" |
There was a problem hiding this comment.
Default Path from umu-launcher/proton for games.
| def main() -> None: | ||
| util.protontricks('corefonts dotnet48 d3dcompiler_47 webview2') | ||
|
|
||
| util.regedit_add('HKCU\\Software\\Wine\\Drivers', name='Graphics', value='x11,wayland') |
There was a problem hiding this comment.
Are we certain this is still necessary? From what i've seen this looks like this was the way to opt-in when wayland was very experimental but maybe not necessary anymore?
There was a problem hiding this comment.
Indeed not needed anymore, just tried both wayland and x11 without setting that registry key.
| msgbox info "Enabling Wayland support" | ||
| wine reg.exe add 'HKCU\Software\Wine\Drivers' /v Graphics /d x11,wayland || return 1 | ||
|
|
||
| if [[ ${WINE_DISABLE_EGL} -eq 1 ]]; then |
There was a problem hiding this comment.
I'm not sure how to do that in protonfixes. I assume by reading the env vars in python and then dynamically doing that. However, if EGL works, i'd argue we should just drop it.
There was a problem hiding this comment.
I only added that so I could experiment locally with EGL and GLX. No need to keep it once EGL is working.
|
Also would be highly interested in @netbrain's opinions |
…en container launches
|
So i successfully ran:
Also the image seems to be smaller: localhost/zwift latest abc9fc463591 39 minutes ago 5.62 GB
docker.io/netbrain/zwift latest d34f89415fb4 10 days ago 11.8 GB |
| ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 | ||
| # ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 | ||
|
|
||
| ADD --chown=user:user https://cdn.zwift.com/app/ZwiftSetup.exe /home/user/ZwiftSetup.exe |
There was a problem hiding this comment.
tbf, i added this here, but after thinking about it, i'm not entirely sure about the legal situation here, given we would suddenly redistribute zwifts setup binary via docker images/container registry
…2 again (umu-launcher pulls in lib32-vulkan-driver), fix file permissions for zwiftsetup, create stable path for PROTONPATH, no need to write proton download into a file, extract directly
…nerate it as well but prints a warning that startup is faster if it's already generated on OS level)
|
This is very interesting, but a very large refactor, will probably break the game for many. Ill look into it in greater detail this week. I have been way too busy and also have the flu, so I don't trust myself to do a proper review right now. |
|
Hey @netbrain - first, hope u feel better soon :) no worries, i think this is something that doesn't need to be rushed (besides the pain from keeping a bigger PR around for a while). It's a draft anyway and needs some local testing beforehand, so no need for a "big review" right now. Will convert away from draft if it's ready (or split into multiple non-draft PRs depending on how we go about all these changes). We can also definitely split this up in smaller PRs about the changes to keep it less breaking, it's just removing a lot of the launcher hacks was kinda easier than to rewrite and i think the less code to maintain the better. Even the update check for the docker container can be replaced by the Also i have some trouble navigating the bash scripts, for me the whole structure seems kinda unintuitive and weird and i think also some bugs are in that - for example it checks for gamemode on the host, to decide to run gamemode in the container? Otherwise it's very nice actually with how the commands are built (tbh i would refactor this into a single function that's used for running, building etc.) - i would gladely help with that, but i honestly hate bash scripting and avoid when i can :D Looking forward to more feedback and help on this. :) Thank you! |
54c28c5 to
b237e2e
Compare
| from protonfixes import util | ||
|
|
||
| def main() -> None: | ||
| util.protontricks('corefonts dotnet48 d3dcompiler_47 webview2') |
There was a problem hiding this comment.
Fyi the webview2 verb was added to winetricks after the latests release. But it's probably fine to use a commit from master for winetricks.
2c20166 to
8b4f77f
Compare
112fc5c to
1d8e972
Compare
I had a quick try, cloned your repo, checked out your branch and ran
|
|
Hey, thanks for trying this out. I guess i can't really help here very well, as i have no nvidia card and researching the error seems to bring up a lot of threads from people with nvidia cards. You can try this fix if you want. Edit: i just saw that this is not a fix but what enables it to reproduce it. Maybe try setting it explicitly to something else, like wayland? https://wiki.libsdl.org/SDL2/FAQUsingSDL#linux |
|
I also found workarounds by trying to explicitly unsetting the env: basecamp/omarchy#1047 (comment) ¯_(ツ)_/¯ although i'm not sure if it is set anywhere at all inside the container (or outside). |
99eb9de to
4e2e9d8
Compare
Hey hey,
so i got a bit nerdsniped by this whole updating wine thing.
I hacked together more or less a POC to completely replace debian + wine with archlinux+proton (valve)+umu-launcher.
It works on my machine, however the code is obv. not in any finished state.
Here are some quick thoughts:
Why ArchLinux
Way more up-to-date packages than debian (current mesa (debian 13 uses mesa 25.0.7, from more or less exactly a year ago, archlinux has the latest (currently 26.1.1, 5 days old)) for example) and also steamos uses archlinux and that's basically where proton lives and gets developed (and run). Also it natively provides the umu-launcher package.
Why Proton
(I used the cachyos fork, as it applies even more fixes and also provides binaries for x86_64v3 (for future updates).)
Benefits
This means the following stuff can be removed:
Misc
What can be cherry-picked already
No need to install WebView by hand. Just run
winetricks webview2and it does it for you (plus it applies additionalUpstream Protonfixes
Obv. next TODOS
As mentioned in another PR, maybe we could skip webview and the whole lib32 packages if we run the ZwiftSetup silently? Seems to be the only 32bit binaryno benefit, umu-launcher pulls in lib32-vulkan-* packages, we might install the "correct" ones anyways.As i'm too poor to have an NVIDIA GPU, maybe you can check it out and try it on your machine. I have some left-overs in the Dockerfile which i'm pretty sure can be removed but i don't know.
If there is a general interest in going that direction, i'd sink more hours into this. (i already spent quite some time on this).
Known Issues