summaryrefslogtreecommitdiff
path: root/py_modules
diff options
context:
space:
mode:
authorxXJsonDeruloXx <danielhimebauch@gmail.com>2026-08-01 13:53:52 -0400
committerxXJsonDeruloXx <danielhimebauch@gmail.com>2026-08-01 13:53:52 -0400
commit63d758abe6318c5877e658c7a56282a7d90ede51 (patch)
treeffaa3450eee1ad5d88b1992d949a5fe623199720 /py_modules
parenteb51ec80231cf13accf8af156fa7a4283e2a2f88 (diff)
downloaddecky-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.py42
-rw-r--r--py_modules/lsfg_vk/plugin.py6
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