summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2025-09-22 09:47:42 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2025-09-22 09:47:42 -0400
commitd4840935c3612c07c4c69a0fbc4ecdff3051886f (patch)
tree8396ee689512b139b0cb6500cb2e6eabf8076375
parent0da3682755e551a7d3c23fa979686d8dbcdd4f7b (diff)
downloaddecky-lsfg-vk-d4840935c3612c07c4c69a0fbc4ecdff3051886f.tar.gz
decky-lsfg-vk-d4840935c3612c07c4c69a0fbc4ecdff3051886f.zip
add remaining files to importer, fix circular ref
-rw-r--r--py_modules/lsfg_vk/flatpak_service.py128
-rw-r--r--src/components/Content.tsx2
2 files changed, 104 insertions, 26 deletions
diff --git a/py_modules/lsfg_vk/flatpak_service.py b/py_modules/lsfg_vk/flatpak_service.py
index 3fb621d..cdf4a55 100644
--- a/py_modules/lsfg_vk/flatpak_service.py
+++ b/py_modules/lsfg_vk/flatpak_service.py
@@ -306,15 +306,49 @@ class FlatpakService(BaseService):
output = result.stdout
home_path = os.path.expanduser("~")
config_path = f"{home_path}/.config/lsfg-vk"
-
- # Check for filesystem override in the [Context] section
- # Format: filesystems=/home/kurt/.config/lsfg-vk;
- filesystem_override = f"filesystems={config_path}" in output
+ dll_path = f"{home_path}/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll"
+ lsfg_path = f"{home_path}/lsfg"
+
+ # More precise checking - look for exact filesystem entries
+ # Flatpak output format typically shows filesystem entries like:
+ # filesystems=/path1;/path2;/path3
+ filesystem_section = ""
+ in_context = False
+
+ for line in output.split('\n'):
+ line = line.strip()
+ if line == "[Context]":
+ in_context = True
+ elif line.startswith("[") and line != "[Context]":
+ in_context = False
+ elif in_context and line.startswith("filesystems="):
+ filesystem_section = line
+ break
+
+ # Check each required filesystem override
+ has_config_fs = config_path in filesystem_section
+ has_dll_fs = dll_path in filesystem_section
+ has_lsfg_fs = lsfg_path in filesystem_section
+
+ # All three filesystem overrides must be present
+ filesystem_override = has_config_fs and has_dll_fs and has_lsfg_fs
# Check for environment override in the [Environment] section
- # Format: LSFG_CONFIG=/home/kurt/.config/lsfg-vk/conf.toml
- env_override = f"LSFG_CONFIG={config_path}/conf.toml" in output
-
+ env_override = False
+ in_environment = False
+
+ for line in output.split('\n'):
+ line = line.strip()
+ if line == "[Environment]":
+ in_environment = True
+ elif line.startswith("[") and line != "[Environment]":
+ in_environment = False
+ elif in_environment and line.startswith(f"LSFG_CONFIG={config_path}/conf.toml"):
+ env_override = True
+ break
+
+ self.log.debug(f"Override status for {app_id}: filesystem={filesystem_override} ({has_config_fs}/{has_dll_fs}/{has_lsfg_fs}), env={env_override}")
+
return {"filesystem": filesystem_override, "env": env_override}
except Exception as e:
@@ -331,21 +365,35 @@ class FlatpakService(BaseService):
home_path = os.path.expanduser("~")
config_path = f"{home_path}/.config/lsfg-vk"
-
- # Set filesystem override
- result1 = self._run_flatpak_command(
- ["override", "--user", f"--filesystem={config_path}:rw", app_id],
- capture_output=True, text=True
- )
+ dll_path = f"{home_path}/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll"
+ lsfg_path = f"{home_path}/lsfg"
+
+ # Set all filesystem overrides
+ filesystem_overrides = [
+ f"--filesystem={dll_path}",
+ f"--filesystem={config_path}:rw",
+ f"--filesystem={lsfg_path}:rw"
+ ]
+
+ # Apply filesystem overrides
+ for override in filesystem_overrides:
+ result = self._run_flatpak_command(
+ ["override", "--user", override, app_id],
+ capture_output=True, text=True
+ )
+ if result.returncode != 0:
+ error_msg = f"Failed to set filesystem override {override}: {result.stderr}"
+ return self._error_response(FlatpakOverrideResponse, error_msg,
+ app_id=app_id, operation="set")
# Set environment override
- result2 = self._run_flatpak_command(
+ result = self._run_flatpak_command(
["override", "--user", f"--env=LSFG_CONFIG={config_path}/conf.toml", app_id],
capture_output=True, text=True
)
- if result1.returncode != 0 or result2.returncode != 0:
- error_msg = f"Failed to set overrides: {result1.stderr} {result2.stderr}"
+ if result.returncode != 0:
+ error_msg = f"Failed to set environment override: {result.stderr}"
return self._error_response(FlatpakOverrideResponse, error_msg,
app_id=app_id, operation="set")
@@ -370,25 +418,55 @@ class FlatpakService(BaseService):
home_path = os.path.expanduser("~")
config_path = f"{home_path}/.config/lsfg-vk"
+ dll_path = f"{home_path}/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll"
+ lsfg_path = f"{home_path}/lsfg"
- # Remove filesystem override
- result1 = self._run_flatpak_command(
- ["override", "--user", f"--nofilesystem={config_path}", app_id],
+ # First, try to reset all overrides for this app to clean slate
+ reset_result = self._run_flatpak_command(
+ ["override", "--user", "--reset", app_id],
capture_output=True, text=True
)
+
+ if reset_result.returncode == 0:
+ self.log.info(f"Successfully reset all overrides for {app_id}")
+ return self._success_response(FlatpakOverrideResponse,
+ f"All overrides reset for {app_id}",
+ app_id=app_id, operation="remove")
+
+ # If reset fails, try individual removal (fallback)
+ self.log.debug(f"Reset failed, trying individual removal: {reset_result.stderr}")
+
+ # Remove all filesystem overrides individually
+ filesystem_overrides = [
+ f"--nofilesystem={dll_path}",
+ f"--nofilesystem={config_path}",
+ f"--nofilesystem={lsfg_path}"
+ ]
+
+ removal_errors = []
+
+ # Remove filesystem overrides
+ for override in filesystem_overrides:
+ result = self._run_flatpak_command(
+ ["override", "--user", override, app_id],
+ capture_output=True, text=True
+ )
+ if result.returncode != 0:
+ removal_errors.append(f"{override}: {result.stderr}")
# Remove environment override
- result2 = self._run_flatpak_command(
+ result = self._run_flatpak_command(
["override", "--user", "--unset-env=LSFG_CONFIG", app_id],
capture_output=True, text=True
)
- if result1.returncode != 0 or result2.returncode != 0:
- error_msg = f"Failed to remove overrides: {result1.stderr} {result2.stderr}"
- return self._error_response(FlatpakOverrideResponse, error_msg,
- app_id=app_id, operation="remove")
+ if result.returncode != 0:
+ removal_errors.append(f"unset-env: {result.stderr}")
- self.log.info(f"Successfully removed lsfg-vk overrides for {app_id}")
+ if removal_errors:
+ self.log.warning(f"Some override removals had issues for {app_id}: {'; '.join(removal_errors)}")
+
+ self.log.info(f"Completed override removal for {app_id}")
return self._success_response(FlatpakOverrideResponse,
f"lsfg-vk overrides removed for {app_id}",
app_id=app_id, operation="remove")
diff --git a/src/components/Content.tsx b/src/components/Content.tsx
index b76ff59..978f4ed 100644
--- a/src/components/Content.tsx
+++ b/src/components/Content.tsx
@@ -15,7 +15,7 @@ import { FgmodClipboardButton } from "./FgmodClipboardButton";
// import { ClipboardDisplay } from "./ClipboardDisplay";
import { PluginUpdateChecker } from "./PluginUpdateChecker";
import { NerdStuffModal } from "./NerdStuffModal";
-import { FlatpaksModal } from "./index";
+import FlatpaksModal from "./FlatpaksModal";
import { ConfigurationData } from "../config/configSchema";
export function Content() {