sirmentio / protontricks Goto Github PK
View Code? Open in Web Editor NEWA simple wrapper that does winetricks things for Proton enabled games, requires Winetricks.
License: GNU General Public License v3.0
A simple wrapper that does winetricks things for Proton enabled games, requires Winetricks.
License: GNU General Public License v3.0
After installing Proton 3.16 in the recent update, trying to use protontricks with any application gives me this output:
[INFO] Found Steam directory at /home/mario/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
[INFO] WINETRICKS environment variable is not available. Falling back to /usr/bin/winetricks
[INFO] Found 0 Steam library folders
[INFO] Found active Proton installation: Proton 3.16 Beta
[ERROR!] Proton installation could not be found!
[FATAL] Sorry, one or more errors prevents this script from being used, check the console for details...
I think the issue is that despite being regarded as Proton 3.16 Beta
the folder in steamapps/common simply is named Proton 3.16
, however I don't know Python well enough to personally fix this
You can no longer install dotnet with this script (and winetricks infact) because the scripts are broken and cause dotnet to insist its already installed even when its clearly not!
This is not a new issue, been present for months...
I have two steam libraries, one on my HDD and one for particularly read-heavy games on my SSD. Because of how valve set it up, proton installs to the last library you installed to rather than letting you pick or targeting your primary library. In my case, Proton landed on my SSD, in /usr/local/steam/.... As far as I can tell, there's no way to configure protontricks to locate proton in one library when the game itself resides in another (such as ~/.steam/steam/...). I manually moved proton back to my main library for the time being, but having to move it each time I need to use protontricks... well, will make me not use it.
EDIT: And while I could likely remedy this for myself with a symlink (both partitions are ext4), people with libraries on filesystems that don't support symlinks properly won't have that luxury.
replace and add
os.path.join(os.environ.get("HOME"), ".local", "share", "Steam"),
os.path.join(os.environ.get("HOME"), ".var", "app", "com.valvesoftware.Steam", "data", "Steam")
in protontricks file
The current Debian stable does not properly run steam, and only the flatpak version runs. I have tried modifying the script myself to get it to work properly with the way flatpak installs steams and where the directories go but I have had no success.
After running the command:
protontricks 359320 dotnet40 win7
I get the following response:
[INFO] Found Steam directory at /home/$USER/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
[INFO] WINETRICKS environment variable is not available. Falling back to /usr/bin/winetricks
[INFO] Found 1 Steam library folders
Traceback (most recent call last):
File "/usr/bin/protontricks", line 310, in
steam_apps = get_steam_apps(steam_lib_dirs)
File "/usr/bin/protontricks", line 250, in get_steam_apps
steam_app = SteamApp.from_appmanifest(path)
File "/usr/bin/protontricks", line 93, in from_appmanifest
appid = int(re.search(r'(\t"appid"\s+")([0-9]+)', content).group(2))
AttributeError: 'NoneType' object has no attribute 'group'
As title says, I used the APPID or the number provided in the .steam/steam compatdata folder after running a non-steam added game assuming it was assigned that number, but protontricks just says you don't have game with that ID.
Also tried the game ID given in terminal when launching said non-steam game and that doesn't help.
Perhaps add a function where it just searches for the compatdata folder and assumes that as the APPID ?
I think latest commit introduced a bug, which makes protontricks fail with python syntax error.
$ python3 -V
Python 3.5.3
$ ./protontricks
File "./protontricks", line 364
combo_values = "|".join([f'{app.name}: {app.appid}' for app in steam_apps])
^
SyntaxError: invalid syntax
Hey there,
Running protontricks on a game, or even the gui, produces the following error:
Traceback (most recent call last):
File "/usr/bin/protontricks", line 309, in
steam_lib_dirs = get_steam_lib_dirs(steam_dir)
File "/usr/bin/protontricks", line 222, in get_steam_lib_dirs
with open(folders_vdf_path, "r") as f:
UnboundLocalError: local variable 'folders_vdf_path' referenced before assignment`
Any ideas on how to resolve this?
It seems Steam on Windows creates libraries with SteamApps instead of steamapps, it would be nice to include that variation since many people (such as I) will have imported those libraries on Linux.
Several dir+dir operations are done with the + operator and wind up with invalid values, e.g. when STEAM_DIR does not end with /
Even though this script is only for Linux, using os.path.join takes care of this nicely.
Hello
I try to install Media Foundation for Resident Evil 2, but I got stuck at an uncommon message.
/data/steam/steamapps/common/Proton 5.0/dist/bin/wine cmd.exe /c echo '%AppData%' returned empty string, error message ""
[rmoritz@ArchLinux ~]$ protontricks --no-runtime --gui
winetricks GUI enabled, using zenity 3.32.0
Executing mkdir -p /data/steam/steamapps/compatdata/883710
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
------------------------------------------------------
WINEPREFIX INFO:
Drive C: insgesamt 36
drwxr-xr-x 8 rmoritz rmoritz 4096 16. Feb 2020 .
drwxr-xr-x 4 rmoritz rmoritz 4096 14. Sep 14:49 ..
drwxr-xr-x 4 rmoritz rmoritz 4096 16. Feb 2020 ProgramData
drwxr-xr-x 6 rmoritz rmoritz 4096 16. Feb 2020 Program Files
drwxr-xr-x 7 rmoritz rmoritz 4096 16. Feb 2020 Program Files (x86)
drwxr-xr-x 6 rmoritz rmoritz 4096 16. Feb 2020 users
drwxr-xr-x 3 rmoritz rmoritz 4096 16. Feb 2020 vrclient
drwxr-xr-x 20 rmoritz rmoritz 4096 13. Sep 15:35 windows
-rw-r--r-- 1 rmoritz rmoritz 9 16. Feb 2020 .windows-serial
Registry info:
/data/steam/steamapps/compatdata/883710/pfx/system.reg:#arch=win64
/data/steam/steamapps/compatdata/883710/pfx/userdef.reg:#arch=win64
/data/steam/steamapps/compatdata/883710/pfx/user.reg:#arch=win64
------------------------------------------------------
Diese Option steht nicht zur Verfügung. Bitte verwenden Sie »--help« für alle Anwendungsmöglichkeiten.
------------------------------------------------------
/data/steam/steamapps/common/Proton 5.0/dist/bin/wine cmd.exe /c echo '%AppData%' returned empty string, error message ""
------------------------------------------------------
I know it is warning me about using a 64bit prefix but the error message intend there is another problem. So I tried to enter the command manually and it returned "C:\users\steamuser\Application Data" instead of an empty String. It appeared after installing the Media Foundation for the first time. In the system folder of windows where the prefix of Resident Evil 2 is directed to I can see the mf*.dll's
[rmoritz@ArchLinux ~]$ /data/steam/steamapps/common/Proton\ 5.0/dist/bin/wine cmd.exe /c echo '%AppData%'
wineserver: using server-side synchronization.
0034:err:module:__wine_process_init L"C:\\windows\\system32\\winemenubuilder.exe" not found
002c:err:wineboot:process_run_key Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (126).
006c:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\wineusb": c0000142
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"wineusb" failed to start: 1114
C:\users\steamuser\Application Data
[rmoritz@ArchLinux system32]$ pwd
/data/steam/steamapps/compatdata/883710/pfx/drive_c/windows/system32
[rmoritz@ArchLinux system32]$ ls -l mf*.dll
-rw-r--r-- 1 rmoritz rmoritz 1544 13. Sep 15:29 mf3216.dll
-rw-r--r-- 1 rmoritz rmoritz 46760 7. Feb 2017 mfc140chs.dll
-rw-r--r-- 1 rmoritz rmoritz 46760 7. Feb 2017 mfc140cht.dll
-rw-r--r-- 1 rmoritz rmoritz 75432 7. Feb 2017 mfc140deu.dll
-rw-r--r-- 1 rmoritz rmoritz 6031520 7. Feb 2017 mfc140.dll
-rw-r--r-- 1 rmoritz rmoritz 65704 7. Feb 2017 mfc140enu.dll
-rw-r--r-- 1 rmoritz rmoritz 74408 7. Feb 2017 mfc140esn.dll
-rw-r--r-- 1 rmoritz rmoritz 75432 7. Feb 2017 mfc140fra.dll
-rw-r--r-- 1 rmoritz rmoritz 73384 7. Feb 2017 mfc140ita.dll
-rw-r--r-- 1 rmoritz rmoritz 54952 7. Feb 2017 mfc140jpn.dll
-rw-r--r-- 1 rmoritz rmoritz 53928 7. Feb 2017 mfc140kor.dll
-rw-r--r-- 1 rmoritz rmoritz 71336 7. Feb 2017 mfc140rus.dll
-rw-r--r-- 1 rmoritz rmoritz 6060704 7. Feb 2017 mfc140u.dll
-rw-r--r-- 1 rmoritz rmoritz 105120 7. Feb 2017 mfcm140.dll
-rw-r--r-- 1 rmoritz rmoritz 105640 7. Feb 2017 mfcm140u.dll
-rw-r--r-- 1 rmoritz rmoritz 4120064 12. Sep 21:08 mf.dll
-rw-r--r-- 1 rmoritz rmoritz 213096 13. Sep 15:29 mferror.dll
-rw-r--r-- 1 rmoritz rmoritz 3324 13. Sep 15:29 mfmediaengine.dll
-rw-r--r-- 1 rmoritz rmoritz 9736 13. Sep 15:29 mfplat.dll
-rw-r--r-- 1 rmoritz rmoritz 1544 13. Sep 15:29 mfplay.dll
-rw-r--r-- 1 rmoritz root 206848 16. Feb 2020 mfps.dll
-rw-r--r-- 1 rmoritz rmoritz 257024 16. Feb 2020 mfreadwrite.dll
If I will select another game/gamid with protontricks and i think in the backend there is winetricks - everything is working correctly.
protontricks --no-runtime 17460 --gui
It would be incredibly useful if protontricks could be used to execute a program or installer in a game's wine prefix.
This could be used to run an installer in the game's prefix, run a command, or most importantly regedit.
You can make a simple GUI wrapper that will use Winetricks GUI and add this option:
https://i.imgur.com/WihvvGO.png
I can then go ahead and select whatever dependencies i want to install using Winetricks GUI which will install it all to the typed Steam Game ID.
Steam allows adding custom versions of Proton using the compatibilitytools.d
directory in $STEAM_DIR.
Example:
/home/$USER/.local/share/Steam/compatibilitytools.d/Proton 3.16 dxvk-master/
Inside Proton 3.16 dxvk-master/
is a file compatibilitytool.vdf, which Steam reads to register the installed version.
compatibilitytool.vdf:
"compatibilitytools"
{
"compat_tools"
{
"Proton 3.16 dxvk-master" // Internal name of this tool
{
// Can register this tool with Steam in two ways:
//
// - The tool can be placed as a subdirectory in compatibilitytools.d, in which case this
// should be '.'
//
// - This manifest can be placed directly in compatibilitytools.d, in which case this should
// be the relative or absolute path to the tool's dist directory.
"install_path" "."
// For this template, we're going to substitute the display_name key in here, e.g.:
"display_name" "Proton 3.16 dxvk-master"
"from_oslist" "windows"
"to_oslist" "linux"
}
}
}
The "display_name" key is optional. If not set, Steam will use the internal name as display name
hey so I tried to install xact for a hat in time but I got this error
wine client error:0: version mismatch 557/560.
edit: full log of the wine part
/home/fantoro/.steam/steam/steamapps/compatdata/253230/pfx/dosdevices/c:/windows/temp/_xact/oct2006_xact_x86.cab: WARNING; possible 5960 extra bytes at end of file.
Using native,builtin override for following DLLs: xaudio2_0 xaudio2_1 xaudio2_2 xaudio2_3 xaudio2_4 xaudio2_5 xaudio2_6 xaudio2_7
Executing /home/fantoro/.steam/steam/steamapps/common/Proton 3.7/dist/bin/wine regedit C:\windows\Temp\_xact\override-dll.reg
/home/fantoro/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver: Symbol `wine_casemap_upper' has different size in shared object, consider re-linking
/home/fantoro/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver: Symbol `wine_casemap_lower' has different size in shared object, consider re-linking
wine client error:0: version mismatch 557/560.
Your wineserver binary was not upgraded correctly,
or you have an older one somewhere in your PATH.
Or maybe the wrong wineserver is still running?
0009:err:process:start_wineboot failed to start wineboot, err 1359
Executing /home/fantoro/.steam/steam/steamapps/common/Proton 3.7/dist/bin/wine64 regedit C:\windows\Temp\_xact\override-dll.reg
/home/fantoro/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver: Symbol `wine_casemap_upper' has different size in shared object, consider re-linking
/home/fantoro/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver: Symbol `wine_casemap_lower' has different size in shared object, consider re-linking
wine client error:0: version mismatch 557/560.
Your wineserver binary was not upgraded correctly,
or you have an older one somewhere in your PATH.
Or maybe the wrong wineserver is still running?
------------------------------------------------------
Note: command /home/fantoro/.steam/steam/steamapps/common/Proton 3.7/dist/bin/wine64 regedit C:\windows\Temp\_xact\override-dll.reg returned status 1. Aborting.
------------------------------------------------------
When attempting to execute protontricks on a system that does not have wine installed winetricks is unable to execute as the WINE environment variable is missing.
The same is true for WINESERVER environment variable under these conditions. protontricks and winetricks shouldn't rely on a local installation of wine.
[redneck@pylesos ~]$ protontricks 891660 allfonts
[INFO] Found Steam directory at /home/redneck/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
[INFO] WINETRICKS environment variable is not available. Falling back to /usr/bin/winetricks
Traceback (most recent call last):
File "/bin/protontricks", line 161, in <module>
proton_version = get_proton_version(steam_dir + "/steamapps")
File "/bin/protontricks", line 42, in get_proton_version
dirs = os.listdir(steam_dir + "/common")
FileNotFoundError: [Errno 2] No such file or directory: '/home/redneck/.steam/steam/steamapps/common'
There is no "steamapps" directory but there is "SteamApps" one
The only way I can install them to play games that need them, is by downloading from the official microsoft website, which is a bit of a pain.
And yes, I install on 64bit, it has good support now.
As-is, the script will only look for games in the steam install directory, ignoring any other library paths set in steam.
The location of extra library paths can be found in steam/steamapps/libraryfolders.vdf,
When attempting to use protontricks to install either foss_corefonts or corefonts (protontricks 644560 foss_corefonts) I recieve this output:
[INFO] Found Steam directory at /home/user/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
[INFO] Winetricks path is set to /home/user/Downloads/protontricks/winetricks
[INFO] Found proton version 3.7. You can also define the proton version manually using $PROTON_VERSION
[INFO] WINESERVER environment variable is not available Setting WINESERVER environment variable to proton bundled version
[INFO] Found 0 Steam library folders
[INFO] Found the prefix directory at /home/user/.steam/steam/steamapps/compatdata/644560/pfx
------------------------------------------------------
WINE is /home/user/.steam/steam/steamapps/common/Proton 3.7/dist/bin/wine, which is neither on the path nor an executable file
------------------------------------------------------
The fonts don't get installed and as a result, the game is not displaying the needed texts.
I've installed wine, winetricks and have steam setup properly to use proton.
WINE is /home/bill/.steam/steam/steamapps/common/Proton 5.0/dist/bin/wine, which is neither on the path nor an executable file
Hello there!
Unfortunately I am unable to install dotnet anymore, I used to be able to but I can no more, this is what I get when I try, it also happens with winetricks unfortunately.
https://gist.github.com/Evernow/9a76e74288a4bb71f87507eec3d45b00
Any help is greatly appreciated
proton wine is built against the steam runtime and a number of issues with winetricks/wineserver/winebus etc arise if they are ran on a system with incomplete, or mismatching library versions. For example, steam-runtime and thus proton-wine-3.16 is built against libpng-12 while ubuntu 18.04 has libpng-16.
My execution looked like this to get the whole of protontricks into the runtime:
$HOME/.steam/ubuntu12_32/steam-runtime/run.sh protontricks 359320
When I attempt to install dotnet to make Assetto Corsa work I get this kind of error.I saw older issue and tried everything, but it won't work for me.
I'm using most up to date protontricks i think.
I have 2 other proton installations, but protontricks cannot find them.
protontricks 244210 -q dotnet452
Hello there.
i tried protontricks some weeks ago and it worked without a hassle , but now after a clean new install i get following error:
[INFO] Found Steam directory at /home/mike/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
[INFO] WINETRICKS environment variable is not available. Falling back to /usr/bin/winetricks
[INFO] Found 1 Steam library folders
Traceback (most recent call last):
File "/usr/bin/protontricks", line 294, in <module>
steam_apps = get_steam_apps(steam_lib_dirs)
File "/usr/bin/protontricks", line 235, in get_steam_apps
SteamApp.from_appmanifest(path) for path in appmanifest_paths
File "/usr/bin/protontricks", line 235, in <listcomp>
SteamApp.from_appmanifest(path) for path in appmanifest_paths
File "/usr/bin/protontricks", line 88, in from_appmanifest
appid = int(re.search(r'(\t"appid"\s+")([0-9]+)', content).group(2))
AttributeError: 'NoneType' object has no attribute 'group'
i am using proton 3.16-3 beta
any ideas, what i could do?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.