summaryrefslogtreecommitdiff
path: root/py_modules/lsfg_vk/flatpak_service.py
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2026-07-30 21:09:27 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2026-07-30 21:09:27 -0400
commiteb51ec80231cf13accf8af156fa7a4283e2a2f88 (patch)
tree95fd368b42efa29f28b924c8884a8f0d4c80d123 /py_modules/lsfg_vk/flatpak_service.py
parent4390d600ffd35184c4c30bc64480f58e468627de (diff)
downloaddecky-lsfg-vk-feat/lsfg-v2-release.tar.gz
decky-lsfg-vk-feat/lsfg-v2-release.zip
fix: harden lsfg-v2 migration and flatpak supportfeat/lsfg-v2-release
Diffstat (limited to 'py_modules/lsfg_vk/flatpak_service.py')
-rw-r--r--py_modules/lsfg_vk/flatpak_service.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/py_modules/lsfg_vk/flatpak_service.py b/py_modules/lsfg_vk/flatpak_service.py
index 7f7ef07..80dcf5d 100644
--- a/py_modules/lsfg_vk/flatpak_service.py
+++ b/py_modules/lsfg_vk/flatpak_service.py
@@ -8,6 +8,7 @@ from pathlib import Path
from typing import Dict, Any, List, Optional
from .base_service import BaseService
+from .config_schema import ConfigurationManager
from .types import BaseResponse
@@ -66,6 +67,21 @@ class FlatpakService(BaseService):
self.log.debug("Could not read configured DLL path for Flatpak override: %s", error)
return config_path, dll_directory
+ 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"
+ legacy_overrides = [
+ ["override", "--user", "--unset-env=LSFG_CONFIG", app_id],
+ ["override", "--user", f"--nofilesystem={legacy_dll_path}", app_id],
+ ["override", "--user", f"--nofilesystem={self.lsfg_launch_script_path}", app_id],
+ ]
+ errors = []
+ for args in legacy_overrides:
+ result = self._run_flatpak_command(args, capture_output=True, text=True)
+ if result.returncode != 0:
+ errors.append(f"{' '.join(args[2:-1])}: {result.stderr}")
+ return errors
+
def _get_clean_env(self):
"""Get a clean environment without PyInstaller's bundled libraries"""
env = os.environ.copy()
@@ -382,6 +398,14 @@ class FlatpakService(BaseService):
return self._error_response(FlatpakOverrideResponse, error_msg,
app_id=app_id, operation="set")
+ legacy_errors = self._remove_legacy_app_overrides(app_id)
+ if legacy_errors:
+ self.log.warning(
+ "Applied v2 overrides for %s but could not fully remove v1 overrides: %s",
+ app_id,
+ "; ".join(legacy_errors),
+ )
+
self.log.info(f"Successfully set lsfg-vk overrides for {app_id}")
return self._success_response(FlatpakOverrideResponse,
f"lsfg-vk overrides set for {app_id}",
@@ -427,6 +451,8 @@ class FlatpakService(BaseService):
if result.returncode != 0:
removal_errors.append(f"unset-env: {result.stderr}")
+ removal_errors.extend(self._remove_legacy_app_overrides(app_id))
+
if removal_errors:
self.log.warning(f"Some override removals had issues for {app_id}: {'; '.join(removal_errors)}")