Let me preface this that I understand the need to maintain the general configuration of the Wine prefix.
However, for those who are willing to dig in and solve some issues that are specific to some games (Dark Souls II mouse issue can be solved with a virtual desktop set via winecfg
), it could be very useful. This functionality can be openly stated as unsupported, and if used on technically supported titles there is no guarantee of the behaviour.
I'm going to be making a small edit and submitting a PR, but thought I'd throw an issue for reference first. Let me know what you guys think of the idea!
Looking further I can see that Wine isn't compiled with winecfg
. This would take a little bit more work than adding a mode in proton
. I plan to follow-up after researching further.
Could'nt you run your own winecfg on the prefix of the game in question?
A lot of games require "Automatically capture the mouse in full-screen windows" to function properly, so this would be nice. In the mean time, this seems to work:
WINEPREFIX=/home/doug/Storage/SteamLibrary/steamapps/compatdata/559100/pfx/ winecfg
Replace for path & appid of course. I don't know if there are any adverse effects of doing it this way.
This might change in the future, but for now, you can actually use some debugging scripts we dump in /tmp when running a game. First, run the game you want to config to generate those scripts, then run "/tmp/proton_run winecfg" to configure that game's prefix.
@DougTy
Many thanks this allow configure virtual desktop, csmt on/off (dont all titles needed) and other things
I actually disagree with the OP. Steam Play uses already-existing technologies such as wine, DXVK, etc. The point of Steam Play is to make those technologies more accessible to the average user i.e. just install and play. If there is a workaround required, then that should be upstreamed to Steam Play so that it automatically applies the fix for every single install. For tinkerers, there is always wine or lutris.
EDIT: Actually, I'm having second thoughts now. I suppose it is possible to upstream the game-specific workarounds so that everyone benefits and permit tinkerers to tinker.
Well, valve's patches to fullscreen wine were here to remove the need for virtual desktops (among others), so it probably "just" means this specific issue needs to be addressed. That could be done by exposing a proton option as well.
A lot of games require "Automatically capture the mouse in full-screen windows" to function properly, so this would be nice. In the mean time, this seems to work:
WINEPREFIX=/home/doug/Storage/SteamLibrary/steamapps/compatdata/559100/pfx/ winecfg
Replace for path & appid of course. I don't know if there are any adverse effects of doing it this way.
@DougTy (or anyone) I'm very familiar with linux, but I know next to nothing about wine. Can you provide some context on what to do with that line? Does that belong in a conf file somewhere? I've tried running winecfg
but that command doesn't exist on my SteamOS machine. Is something else required in addition to the vanilla SteamOS install?
winecfg is a tool part of standard Wine, that allows you to set a few things for Wine. You run the tool on a Wine prefix, so that the settings will only apply to that prefix and not everywhere. If you don't specify the prefix the default one is used.
If this is not distributed as part of Proton, you'll need to get it from somewhere else, though I am not sure how compatible that will be.
@stupid-genius Looks like you don't have wine installed. Proton comes with it's own version of wine, so you could use that. Try running the following commands:
export STEAMROOT="$HOME/.steam"
export PATH="$STEAMROOT/steam/steamapps/common/Proton 3.7/dist/bin/:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/bin:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/bin:$PATH"
export WINEDEBUG="-all"
export WINEDLLPATH="$STEAMROOT/steam/steamapps/common/Proton 3.7/dist/lib64/wine:$STEAMROOT/steam/steamapps/common/Proton 3.7/dist/lib/wine"
export LD_LIBRARY_PATH="$STEAMROOT/steam/steamapps/common/Proton 3.7/dist/lib64:$STEAMROOT/steam/steamapps/common/Proton 3.7/dist/lib:$STEAMROOT/ubuntu12_32/steam-runtime/pinned_libs_32:$STEAMROOT/ubuntu12_32/steam-runtime/pinned_libs_64:/usr/lib/x86_64-linux-gnu/libfakeroot:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib:/usr/lib/i386-linux-gnu/i686:/usr/lib/i386-linux-gnu/sse2:/usr/lib/i386-linux-gnu/i686/sse2:$STEAMROOT/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/i386/lib:$STEAMROOT/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/i386/usr/lib:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/lib:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/lib:"
export WINEDLLOVERRIDES="d3d11=n;dxgi=n"
WINEPREFIX=/home/doug/Storage/SteamLibrary/steamapps/compatdata/559100/pfx/ wine winecfg
(Replace "$STEAMROOT/steam/steamapps/common/Proton 3.7" with the actual path if it differs)
I have a _nearly_ vanilla SteamOS install, and there is no winecfg
anywhere in the filesystem. The steamapps/common/Proton 3.7/dist/bin
contains wine
, but no winecfg
.
@stupid-genius That's OK. Even without a winecfg
binary, you can still run wine winecfg
.
@mat8913 Thanks. I ran winecfg
, but it appeared that "Automatically capture the mouse in full-screen windows" was already enabled.
Yes it's been the case in Proton for a while.
I have been able to use wine with this command, which I learned from someone here...
I dont remember if I had to install wine before I got it to work though.
env WINEPREFIX="/mnt/tera/Games/SteamLibrary/steamapps/compatdata/gameID/pfx" WINEPATH="/mnt/tera/Games/SteamLibrary/steamapps/common/Proton 3.7 Beta/dist/bin" winetricks
This topic didn't have this so I though to post it. Game ID is the same id you find in steam store page url.
Another method to looking up the Game ID is to use https://steamdb.info, which I think is easier than Steam's. And gives you plenty of game info.
It will be useful to have, when Proton is enabled, a Protoncfg (winecfg) button per game.
example: right clicking Game--» Properties --» General --» ProtonCFG
Some old games need wine in WinXP mode for to run properly and not the default Win7 mode...
@CSahajdacny Can you list some games that need this?
Looking around the issue tracker, the majority of winxp mentions are for .net redist (#1786) or wmp9/10/11 winetricks.
It's not immediately clear why for AoE3 (#17), Arkham Asylum (#421), Titan Quest (#567), and EVE Online (#1223).
Arkham Asylum
Same as Arkham City: it doesn't install dotnet35 through Steam's pre-launch setup otherwise. Takes about 20 minutes though. I just didn't mention that game in particular because it requires further steps (winetricks) and doesn't exit cleanly (process lingers).
It will be useful to have, when Proton is enabled, a Protoncfg (winecfg) button per game.
example: right clicking Game--» Properties --» General --» ProtonCFG
This would be a really good feature, specially for non-steam games, which don't have an appid, making those harder to distinguish in the compatdata
directory.
The point of Steam Play is to make those technologies more accessible to the average user i.e. just install and play. If there is a workaround required, then that should be up streamed to Steam Play so that it automatically applies the fix for every single install.
Simple script based on the previous answers for whom wants to edit winecfg options, and might also not have an independent wine installation. Simply run it adding first the proton version and the game ID.
Something like: ./protoncfg 4.2 559100
#!/bin/bash
STEAMROOT="$HOME/.steam"
protVer=$1
gameID=$2
export PATH="$STEAMROOT/steam/steamapps/common/Proton $protVer/dist/bin/:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/bin:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/bin:$PATH"
export WINEDEBUG="-all"
export WINEDLLPATH="$STEAMROOT/steam/steamapps/common/Proton $protVer/dist/lib64/wine:$STEAMROOT/steam/steamapps/common/Proton $protVer/dist/lib/wine"
export LD_LIBRARY_PATH="$STEAMROOT/steam/steamapps/common/Proton $protVer/dist/lib64:$STEAMROOT/steam/steamapps/common/Proton $protVer/dist/lib:$STEAMROOT/ubuntu12_32/steam-runtime/pinned_libs_32:$STEAMROOT/ubuntu12_32/steam-runtime/pinned_libs_64:/usr/lib/x86_64-linux-gnu/libfakeroot:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib:/usr/lib/i386-linux-gnu/i686:/usr/lib/i386-linux-gnu/sse2:/usr/lib/i386-linux-gnu/i686/sse2:$STEAMROOT/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/i386/lib:$STEAMROOT/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/i386/usr/lib:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/lib:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:$STEAMROOT/ubuntu12_32/steam-runtime/amd64/usr/lib:"
export WINEDLLOVERRIDES="d3d11=n;dxgi=n"
WINEPREFIX=$STEAMROOT/steam/steamapps/compatdata/$gameID/pfx/ wine winecfg
Today is 1 October 2019, where is this option? This is a simple button to run a command, it not too hard to implement I think
Yes this would be an awesome thing to have, as it would provide more troubleshooting venues to try for games that may not work yet especially if they default to an older version of windows.
It would be a great idea to have a "protoncfg" option when you right click on a game and go to its properties, as mentioned by @CSahajdacny.
This works for now though.
WINEPREFIX="/home/$USER/.steam/steam/steamapps/compatdata/appid/pfx" winecfg
You can also install dll files and other Windows components using winetricks.
WINEPREFIX="/home/$USER/.steam/steam/steamapps/compatdata/appid/pfx" winetricks vcrun2010
Of course, replace "appid" in the directory path with the actual appid of the game you want to tweak. Use this site to find your games appid.
Please use the PROTON_DUMP_DEBUG_COMMANDS
runtime option if you need this.
Most helpful comment
This might change in the future, but for now, you can actually use some debugging scripts we dump in /tmp when running a game. First, run the game you want to config to generate those scripts, then run "/tmp/proton_run winecfg" to configure that game's prefix.