From dbc4131ec2118fac01123207c272b0d500288fea Mon Sep 17 00:00:00 2001 From: derrod Date: Tue, 28 Sep 2021 05:23:39 +0200 Subject: [PATCH] [cli] Use new launch command method in Origin launch By doing this support for wrappers (e.g. Proton) is now also included. --- legendary/cli.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/legendary/cli.py b/legendary/cli.py index 8de659b..1d520dd 100644 --- a/legendary/cli.py +++ b/legendary/cli.py @@ -478,7 +478,7 @@ class LegendaryCLI: def launch_game(self, args, extra): app_name = args.app_name if args.origin: - return self.launch_origin(args) + return self._launch_origin(args) igame = self.core.get_installed_game(app_name) if not igame: @@ -576,7 +576,7 @@ class LegendaryCLI: f'{k}={v}' for k, v in params.environment.items()))) subprocess.Popen(full_params, cwd=params.working_directory, env=full_env) - def launch_origin(self, args): + def _launch_origin(self, args): # login is not required to launch the game, but linking does require it. if not args.offline: logger.info('Logging in...') @@ -594,18 +594,20 @@ class LegendaryCLI: return webbrowser.open(origin_uri) # on linux, require users to specify at least the wine binary and prefix in config or command line - wine_pfx, wine_binary = args.wine_pfx, args.wine_bin - if not wine_pfx: - wine_pfx = self.core.lgd.config.get(args.app_name, 'wine_prefix', fallback=None) - if not wine_binary: - wine_binary = self.core.lgd.config.get(args.app_name, 'wine_executable', fallback=args.wine_bin) - env = self.core.get_app_environment(args.app_name, wine_pfx=wine_pfx) + command = self.core.get_app_launch_command(args.app_name, wrapper=args.wrapper, + wine_binary=args.wine_bin, + disable_wine=args.no_wine) + env = self.core.get_app_environment(args.app_name, wine_pfx=args.wine_pfx) + full_env = os.environ.copy() + full_env.update(env) - if not wine_binary or not env.get('WINEPREFIX'): - logger.error(f'In order to launch Origin correctly you must specify the wine binary and prefix ' - f'to use in the configuration file or command line. See the README for details.') + if not command: + logger.error(f'In order to launch Origin correctly you must specify a prefix and wine binary or ' + f'wrapper in the configuration file or command line. See the README for details.') return - subprocess.Popen([wine_binary, origin_uri], env=env) + + command.append(origin_uri) + subprocess.Popen(command, env=full_env) def install_game(self, args): if self.core.is_installed(args.app_name):