-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
One-Time Run: Add support for Native Linux executables #801
Conversation
This should include scripts, AppImages, native binaries, etc. The logic used to detect native Linux executables is the same as for custom commands, which means that it's not fool-proof. For custom commands, we have an option to force Proton with custom executables, should the check be incorrect. Currently one time run does not have support for this, but it is planned to be added before this feature is merged. The other remaining issue is that we still require a STEAM_COMPAT_DATA_PATH, as the setOneTimeRunVars function still looks for this, and we rely on having this for Proton games. Instead, we need to change the logic to return a warning instead of an error, and then only check for this path if we're using a Wine executable.
A command line option, Adding to the GUI might require a refactor of how we pass arguments. It should be feasible, but will just take a little bit of work (and a refactor of that code would be nice anyway). |
Instead of the crazy repeated conditionals, we now build an array of arguments to pass to commandlineOneTimeRun from OneTimeRunGui. Proton cannot be forced yet, but this is the first step to allowing the --forceproton flag. This should also be tested some more. I tested briefly and the arguments seem to work correctly, but more testing is needed."
Good progress so far:
The remaining work is to allow One-Time Run for native Linux games running with STL, and then to update the remaining langfiles. Allowing One-Time Run when using the GUI with a native Linux game might be a bit tricky, as the current logic expects |
If ISGAME -eq 3 then we can assume a native Linux game, and ignore STEAM_COMPAT_DATA_PATH being undefined.
One-Time Run can now be used with native Linux games. When Now this PR just requires further testing, synced langfiles and a version bump. |
Langfiles are updated. PR needs some further testing and then a version bump, then ready to merge. |
Dammit, The reason this doesn't work is that |
…e is given; remove ISGAME check
Removed the I re-tested with the games from the OP with this change and things appear to still work, including with the mix of options (STEINS;GATE Improvement Patch is a good test candidate because it requires This PR should be ready to merge now. |
Forgot to apply these changes to the |
To recap the changes for anyone reading this PR (including future me):
|
Part of work for #788.
This should include scripts, AppImages, native binaries, etc.
The logic used to detect native Linux executables is the same as for custom commands, which means that it's not fool-proof. For custom commands, we have an option to force Proton with custom executables, should the check be incorrect. Currently one time run does not have support for this, but it is planned to be added before this feature is merged.
The other remaining issue is that we still require a STEAM_COMPAT_DATA_PATH, as the setOneTimeRunVars function still looks for this, and we rely on having this for Proton games. Instead, we need to change the logic to return a warning instead of an error, and then only check for this path if we're using a Wine executable.
Currently this PR has been tested to ensure GUI and command-line functionality still works for Proton games, as well as testing native Linux games from the GUI and commandline:
There is also still currently no option to use the Steam Linux Runtime for One-Time Run. This would require some additional work as the logic for detecting the SLR is not very "portable", and so should be split out somehow. Another reason is that some of the new One-Time Run logic could be improved or simplified (there is a lot of nesting which annoys me), adding another conditional to check for and append the SLR might get messy.
So the SLR option will come in probably two separate PRs: One to split the SLR logic and make it more portable, and another to add SLR functionality to One-Time Run.
TODO:
STEAM_COMPAT_DATA_PATH
)