diff options
Diffstat (limited to 'qutebrowser/misc/pakjoy.py')
-rw-r--r-- | qutebrowser/misc/pakjoy.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/qutebrowser/misc/pakjoy.py b/qutebrowser/misc/pakjoy.py index b1e4b7884..a511034a2 100644 --- a/qutebrowser/misc/pakjoy.py +++ b/qutebrowser/misc/pakjoy.py @@ -29,7 +29,8 @@ import os import shutil import pathlib import dataclasses -from typing import ClassVar, IO, Optional, Dict, Tuple +import contextlib +from typing import ClassVar, IO, Optional, Dict, Tuple, Iterator from qutebrowser.misc import binparsing, objects from qutebrowser.utils import qtutils, standarddir, version, utils, log @@ -201,9 +202,6 @@ def copy_webengine_resources() -> Optional[pathlib.Path]: ) shutil.copytree(resources_dir, work_dir) - - os.environ[RESOURCES_ENV_VAR] = str(work_dir) - return work_dir @@ -227,10 +225,12 @@ def _patch(file_to_patch: pathlib.Path) -> None: log.misc.exception("Failed to apply quirk to resources pak.") -def patch_webengine() -> None: +@contextlib.contextmanager +def patch_webengine() -> Iterator[None]: """Apply any patches to webengine resource pak files.""" if os.environ.get(DISABLE_ENV_VAR): log.misc.debug(f"Not applying quirk due to {DISABLE_ENV_VAR}") + yield return try: @@ -239,9 +239,22 @@ def patch_webengine() -> None: webengine_resources_path = copy_webengine_resources() except OSError: log.misc.exception("Failed to copy webengine resources, not applying quirk") + yield return if webengine_resources_path is None: + yield return _patch(webengine_resources_path / PAK_FILENAME) + + old_value = os.environ.get(RESOURCES_ENV_VAR) + os.environ[RESOURCES_ENV_VAR] = str(webengine_resources_path) + + yield + + # Restore old value for subprocesses or :restart + if old_value is None: + del os.environ[RESOURCES_ENV_VAR] + else: + os.environ[RESOURCES_ENV_VAR] = old_value |