- Before, the executable and its options were joined as a single string to be executed. Instead, prefer separating them as distinct arguments. As a result, the command as an Array becomes something like:
['/home/foo/.local/share/ULWGL/ULWGL', '--verb', 'waitforexitandrun', '--', '/home/foo/GE-Proton8-30/proton', 'waitforexitandrun', '/home/foo/foo.exe', '-foo', '-bar', '-baz']
- After specifying the executable, all arguments following the first were ignored unless they were escaped to be interpreted as part of the first argument.
- Reimplement parse_args to simply return a single positional argument string or a Namespace object. As a result the new usage will be:
$ gamelauncher.py /home/foo/foo.exe
$ gamelauncher.py /home/foo/foo.exe -opengl ...
$ gamelauncher.py --config example.toml
- Everything following the program will be interpreted as a single positional argument and this removes the need for quotes for the envvar usage. The optional arguments: --exe, --options, --store and --verb will no longer be supported.
- Enable users to optionally specify the game's distribution platform (store). This allows them to properly apply a fix from a specific store rather than Steam's to their game's WINE prefix. As a side effect, this allows users to apply a protonfix from other stores (e.g. gog).
- In its current form, executing the gamelauncher script can be tedious especially when not using a modern shell that supports auto completions. For instance:
$ WINEPREFIX=$HOME/Games/epic-games-store GAMEID=egs PROTONPATH=$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28 ./gamelauncher.sh $HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe -opengl -SkipBuildPatchPrereq
- By rewriting the gamelauncher script in Python, we can support reading from a configuration file(s) instead which increases ease of use and provides better organization. This effectively results in this:
$ gamelauncher.py --config example.toml
- Additionally, due to the rich Python ecosystem, the rewrite leaves room for future features and formal testing if needed.