diff options
| author | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-08-01 13:53:52 -0400 |
|---|---|---|
| committer | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-08-01 13:53:52 -0400 |
| commit | 63d758abe6318c5877e658c7a56282a7d90ede51 (patch) | |
| tree | ffaa3450eee1ad5d88b1992d949a5fe623199720 /py_modules | |
| parent | eb51ec80231cf13accf8af156fa7a4283e2a2f88 (diff) | |
| download | decky-lsfg-vk-63d758abe6318c5877e658c7a56282a7d90ede51.tar.gz decky-lsfg-vk-63d758abe6318c5877e658c7a56282a7d90ede51.zip | |
feat: bundle v2 Flatpak runtime assetsagent/bundle-v2-flatpak-assets
Diffstat (limited to 'py_modules')
| -rw-r--r-- | py_modules/lsfg_vk/flatpak_service.py | 42 | ||||
| -rw-r--r-- | py_modules/lsfg_vk/plugin.py | 6 |
2 files changed, 36 insertions, 12 deletions
diff --git a/py_modules/lsfg_vk/flatpak_service.py b/py_modules/lsfg_vk/flatpak_service.py index 80dcf5d..5832cf4 100644 --- a/py_modules/lsfg_vk/flatpak_service.py +++ b/py_modules/lsfg_vk/flatpak_service.py @@ -9,6 +9,12 @@ from typing import Dict, Any, List, Optional from .base_service import BaseService from .config_schema import ConfigurationManager +from .constants import ( + BIN_DIR, + FLATPAK_23_08_FILENAME, + FLATPAK_24_08_FILENAME, + FLATPAK_25_08_FILENAME, +) from .types import BaseResponse @@ -67,6 +73,21 @@ class FlatpakService(BaseService): self.log.debug("Could not read configured DLL path for Flatpak override: %s", error) return config_path, dll_directory + def _get_bundled_extension_path(self, version: str) -> Path: + """Return the checksum-pinned Flatpak bundle shipped with this plugin.""" + filenames = { + "23.08": FLATPAK_23_08_FILENAME, + "24.08": FLATPAK_24_08_FILENAME, + "25.08": FLATPAK_25_08_FILENAME, + } + try: + filename = filenames[version] + except KeyError as error: + raise ValueError(f"Unsupported Flatpak runtime version: {version}") from error + + plugin_dir = Path(__file__).resolve().parent.parent.parent + return plugin_dir / BIN_DIR / filename + def _remove_legacy_app_overrides(self, app_id: str) -> list[str]: """Remove only the v1 overrides previously created by this plugin.""" legacy_dll_path = self.user_home / ".local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll" @@ -207,14 +228,14 @@ class FlatpakService(BaseService): if not self.check_flatpak_available(): return self._error_response(BaseResponse, "Flatpak is not available on this system") - if version == "23.08": - return self._error_response( - BaseResponse, - "Flathub supplies the lsfg-vk v2 extension for runtimes 24.08 and 25.08; install 23.08 manually.", - ) + bundle_path = self._get_bundled_extension_path(version) + if not bundle_path.is_file(): + error_msg = f"Bundled Flatpak extension not found at {bundle_path}; reinstall the plugin" + self.log.error(error_msg) + return self._error_response(BaseResponse, error_msg) result = self._run_flatpak_command( - ["install", "--user", "--noninteractive", "flathub", f"org.freedesktop.Platform.VulkanLayer.lsfgvk//{version}"], + ["install", "--user", "--noninteractive", str(bundle_path)], capture_output=True, text=True ) @@ -223,8 +244,11 @@ class FlatpakService(BaseService): self.log.error(error_msg) return self._error_response(BaseResponse, error_msg) - self.log.info(f"Successfully installed lsfg-vk Flatpak extension {version}") - return self._success_response(BaseResponse, f"lsfg-vk {version} runtime extension installed successfully") + self.log.info("Successfully installed bundled lsfg-vk Flatpak extension %s", version) + return self._success_response( + BaseResponse, + f"lsfg-vk {version} runtime extension installed successfully from the bundled asset", + ) except Exception as e: error_msg = f"Error installing Flatpak extension {version}: {str(e)}" @@ -465,4 +489,4 @@ class FlatpakService(BaseService): error_msg = f"Error removing overrides for {app_id}: {str(e)}" self.log.error(error_msg) return self._error_response(FlatpakOverrideResponse, error_msg, - app_id=app_id, operation="remove")
\ No newline at end of file + app_id=app_id, operation="remove") diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py index aefec3e..c2f22e3 100644 --- a/py_modules/lsfg_vk/plugin.py +++ b/py_modules/lsfg_vk/plugin.py @@ -354,7 +354,7 @@ class Plugin: """Check status of lsfg-vk Flatpak runtime extensions Returns: - FlatpakExtensionStatus dict with installation status for both runtime versions + FlatpakExtensionStatus dict with installation status for all supported runtime versions """ return self.flatpak_service.get_extension_status() @@ -362,7 +362,7 @@ class Plugin: """Install lsfg-vk Flatpak runtime extension Args: - version: Runtime version to install ("23.08" or "24.08") + version: Runtime version to install ("23.08", "24.08", or "25.08") Returns: BaseResponse dict with success status and message/error @@ -373,7 +373,7 @@ class Plugin: """Uninstall lsfg-vk Flatpak runtime extension Args: - version: Runtime version to uninstall ("23.08" or "24.08") + version: Runtime version to uninstall ("23.08", "24.08", or "25.08") Returns: BaseResponse dict with success status and message/error |
