summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md8
-rw-r--r--py_modules/lsfg_vk/constants.py1
-rw-r--r--py_modules/lsfg_vk/installation.py4
-rw-r--r--py_modules/lsfg_vk/plugin.py8
4 files changed, 12 insertions, 9 deletions
diff --git a/README.md b/README.md
index 9197b2e..d522691 100644
--- a/README.md
+++ b/README.md
@@ -54,9 +54,11 @@ sets its environment first, then Armada applies the game's settings and launches
Proton normally.
This is an Armada-specific compatibility path, not a change to the standard
-launch flow. It activates only when Armada's
-`/usr/libexec/armada/armada-game-launch` wrapper is present. SteamOS, Bazzite,
-and other systems continue to receive the existing `~/lsfg %command%` option.
+launch flow. Because Decky runs through FEX on Armada, the guest's OS identity
+is not a reliable way to identify the native host. The compatibility path
+therefore activates only when both Armada's native `device-env` marker and its
+`armada-game-launch` wrapper are present. SteamOS, Bazzite, and other systems
+continue to receive the existing `~/lsfg %command%` option.
## Configuration Options
diff --git a/py_modules/lsfg_vk/constants.py b/py_modules/lsfg_vk/constants.py
index a2140b3..023894f 100644
--- a/py_modules/lsfg_vk/constants.py
+++ b/py_modules/lsfg_vk/constants.py
@@ -25,6 +25,7 @@ JSON_EXT = ".json"
BIN_DIR = "bin"
+ARMADA_DEVICE_ENV = Path("/usr/libexec/armada/device-env")
ARMADA_GAME_LAUNCH = Path("/usr/libexec/armada/armada-game-launch")
STEAM_COMMON_PATH = Path("steamapps/common/Lossless Scaling")
diff --git a/py_modules/lsfg_vk/installation.py b/py_modules/lsfg_vk/installation.py
index 29259f7..49ed711 100644
--- a/py_modules/lsfg_vk/installation.py
+++ b/py_modules/lsfg_vk/installation.py
@@ -15,7 +15,7 @@ from typing import Dict, Any
from .base_service import BaseService
from .constants import (
LIB_FILENAME, JSON_FILENAME, ZIP_FILENAME, BIN_DIR,
- SO_EXT, JSON_EXT, ARM_LIB_FILENAME
+ SO_EXT, JSON_EXT, ARM_LIB_FILENAME, ARMADA_DEVICE_ENV
)
from .config_schema import ConfigurationManager
from .types import InstallationResponse, UninstallationResponse, InstallationCheckResponse
@@ -84,7 +84,7 @@ class InstallationService(BaseService):
# Decky runs through FEX on Armada, so Python reports x86_64 even
# though the host is AArch64. Armada exposes this native helper only
# on its ARM image, including inside Decky's FEX rootfs.
- if Path('/usr/libexec/armada/device-env').is_file():
+ if ARMADA_DEVICE_ENV.is_file():
self.log.info("Detected native AArch64 Armada host through device-env")
return True
diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py
index dee2650..74c1677 100644
--- a/py_modules/lsfg_vk/plugin.py
+++ b/py_modules/lsfg_vk/plugin.py
@@ -18,7 +18,7 @@ from .dll_detection import DllDetectionService
from .configuration import ConfigurationService
from .config_schema import ConfigurationManager
from .flatpak_service import FlatpakService
-from .constants import ARMADA_GAME_LAUNCH
+from .constants import ARMADA_DEVICE_ENV, ARMADA_GAME_LAUNCH
class Plugin:
@@ -256,9 +256,9 @@ class Plugin:
Returns:
Dict containing the launch option string and instructions
"""
- # Armada-specific: other distributions do not ship this wrapper and
- # continue through the unchanged generic launch option below.
- if ARMADA_GAME_LAUNCH.is_file():
+ # Decky runs through FEX on Armada, so the guest OS identity is not a
+ # reliable host check. Require both Armada's native marker and wrapper.
+ if ARMADA_DEVICE_ENV.is_file() and ARMADA_GAME_LAUNCH.is_file():
return {
"launch_option": f"~/lsfg {ARMADA_GAME_LAUNCH} %command%",
"instructions": "Use this combined command in Steam Properties, preserving Armada's game-launch wrapper",