diff --git a/legendary/cli.py b/legendary/cli.py index b23146d..de91645 100644 --- a/legendary/cli.py +++ b/legendary/cli.py @@ -372,7 +372,7 @@ class LegendaryCLI: params, cwd, env = self.core.get_launch_parameters(app_name=app_name, offline=args.offline, extra_args=extra, user=args.user_name_override, wine_bin=args.wine_bin, wine_pfx=args.wine_pfx, - language=args.language) + language=args.language, wrapper=args.wrapper) logger.info(f'Launching {app_name}...') if args.dry_run: @@ -771,6 +771,9 @@ def main(): help='Print the command line that would have been used to launch the game and exit') launch_parser.add_argument('--language', dest='language', action='store', metavar='', help='Override language for game launch (defaults to system settings)') + launch_parser.add_argument('--wrapper', dest='wrapper', action='store', metavar='', + help='Wrapper command to launch game with') + if os.name != 'nt': launch_parser.add_argument('--wine', dest='wine_bin', action='store', metavar='', default=os.environ.get('LGDRY_WINE_BINARY', None), diff --git a/legendary/core.py b/legendary/core.py index 3f35e66..0004214 100644 --- a/legendary/core.py +++ b/legendary/core.py @@ -230,7 +230,8 @@ class LegendaryCore: def get_launch_parameters(self, app_name: str, offline: bool = False, user: str = None, extra_args: list = None, wine_bin: str = None, wine_pfx: str = None, - language: str = None) -> (list, str, dict): + language: str = None, wrapper: str = None + ) -> (list, str, dict): install = self.lgd.get_installed_game(app_name) game = self.lgd.get_game_meta(app_name) @@ -251,6 +252,9 @@ class LegendaryCore: params = [] + if wrapper := self.lgd.config.get(app_name, 'wrapper', fallback=wrapper): + params.extend(shlex.split(wrapper)) + if os.name != 'nt': if not wine_bin: # check if there's a default override