summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2026-09-10 15:05:50 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2026-09-10 15:05:50 -0400
commit29dc8a0a243147c26ca49494155ae089b0c6fd80 (patch)
treed74bb5445bfda5850decdb71d3b82902956b592b
parentbe1feeee76cf4956bc5456e4b2740930750fbedf (diff)
downloaddecky-lsfg-vk-29dc8a0a243147c26ca49494155ae089b0c6fd80.tar.gz
decky-lsfg-vk-29dc8a0a243147c26ca49494155ae089b0c6fd80.zip
fix: use Steam-compatible Flatpak target syntax
-rw-r--r--src/utils/steamLaunchOptions.ts6
-rw-r--r--tests/steamLaunchOptions.test.ts16
2 files changed, 9 insertions, 13 deletions
diff --git a/src/utils/steamLaunchOptions.ts b/src/utils/steamLaunchOptions.ts
index 9f88a9f..ea97a10 100644
--- a/src/utils/steamLaunchOptions.ts
+++ b/src/utils/steamLaunchOptions.ts
@@ -181,12 +181,8 @@ function selectFlatpakExecutable(transport: TargetTransport, candidate?: string
: undefined;
}
-function quoteTargetToken(value: string): string {
- return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
-}
-
function flatpakTargetValue(wrapperPath: string, executable: string): string {
- return `${quoteTargetToken(wrapperPath)} ${quoteTargetToken(executable)}`;
+ return `${wrapperPath} ${executable}`;
}
function managedFlatpakExecutable(target: string, wrapperPath: string): string | undefined {
diff --git a/tests/steamLaunchOptions.test.ts b/tests/steamLaunchOptions.test.ts
index 1a6069f..0559330 100644
--- a/tests/steamLaunchOptions.test.ts
+++ b/tests/steamLaunchOptions.test.ts
@@ -131,12 +131,12 @@ test("reads the matching app-details field and installs/removes Steam integratio
const shortcut = await installWrapperIntegration(43, true, wrapper, false, { kind: "flatpak" });
assert.equal(shortcut.originalExecutable, "/usr/bin/flatpak");
- assert.equal(shortcut.snapshot.target, '"~/.lsfg" "/usr/bin/flatpak"');
+ assert.equal(shortcut.snapshot.target, "~/.lsfg /usr/bin/flatpak");
assert.equal(shortcut.snapshot.options, "--windowed");
- assert.deepEqual(targetWrites, ['"~/.lsfg" "/usr/bin/flatpak"']);
+ assert.deepEqual(targetWrites, ["~/.lsfg /usr/bin/flatpak"]);
const restored = await removeWrapperIntegration(43, true, wrapper, shortcut.originalExecutable, false, { kind: "flatpak" });
assert.equal(restored.target, "/usr/bin/flatpak");
- assert.deepEqual(targetWrites, ['"~/.lsfg" "/usr/bin/flatpak"', "/usr/bin/flatpak"]);
+ assert.deepEqual(targetWrites, ["~/.lsfg /usr/bin/flatpak", "/usr/bin/flatpak"]);
assert.equal(shortcutWrites.length, 0);
const cleaned = await removeWrapperIntegration(42, false, wrapper, undefined, installed.commandTokenAdded);
@@ -177,13 +177,13 @@ test("wraps a split direct Flatpak target while preserving its launch arguments"
try {
const installed = await installWrapperIntegration(46, true, wrapper, false, { kind: "flatpak" });
assert.equal(installed.originalExecutable, "/usr/bin/flatpak");
- assert.equal(installed.snapshot.target, '"~/.lsfg" "/usr/bin/flatpak"');
+ assert.equal(installed.snapshot.target, "~/.lsfg /usr/bin/flatpak");
assert.equal(installed.snapshot.options, shortcutOptions);
- assert.deepEqual(targetWrites, ['"~/.lsfg" "/usr/bin/flatpak"']);
+ assert.deepEqual(targetWrites, ["~/.lsfg /usr/bin/flatpak"]);
const restored = await removeWrapperIntegration(46, true, wrapper, installed.originalExecutable, false, { kind: "flatpak" });
assert.equal(restored.target, "/usr/bin/flatpak");
- assert.deepEqual(targetWrites, ['"~/.lsfg" "/usr/bin/flatpak"', "/usr/bin/flatpak"]);
+ assert.deepEqual(targetWrites, ["~/.lsfg /usr/bin/flatpak", "/usr/bin/flatpak"]);
} finally {
if (previousWindow === undefined) delete (globalThis as Record<string, unknown>).window;
else (globalThis as Record<string, unknown>).window = previousWindow;
@@ -323,7 +323,7 @@ test("restores launch options and shortcut Target when a setter fails after chan
SetShortcutExe(_appId: number, executable: string) {
targetWrites.push(executable);
shortcutTarget = executable;
- if (executable === '"~/.lsfg" "/usr/bin/flatpak"') throw new Error("simulated Target write failure");
+ if (executable === "~/.lsfg /usr/bin/flatpak") throw new Error("simulated Target write failure");
},
};
(globalThis as Record<string, unknown>).window = { setTimeout, clearTimeout };
@@ -335,7 +335,7 @@ test("restores launch options and shortcut Target when a setter fails after chan
await assert.rejects(installWrapperIntegration(43, true, wrapper, false, { kind: "flatpak" }), /simulated Target write failure/);
assert.equal(shortcutTarget, "/usr/bin/flatpak");
- assert.deepEqual(targetWrites, ['"~/.lsfg" "/usr/bin/flatpak"', "/usr/bin/flatpak"]);
+ assert.deepEqual(targetWrites, ["~/.lsfg /usr/bin/flatpak", "/usr/bin/flatpak"]);
} finally {
if (previousWindow === undefined) delete (globalThis as Record<string, unknown>).window;
else (globalThis as Record<string, unknown>).window = previousWindow;