parent
f84fa74171
commit
2a0e42fb5b
@ -1,74 +0,0 @@ |
||||
/* |
||||
* SPDX-License-Identifier: GPL-3.0 |
||||
* Vesktop, a desktop app aiming to give you a snappier Discord Experience |
||||
* Copyright (c) 2023 Vendicated and Vencord contributors |
||||
*/ |
||||
|
||||
// Based on https://github.com/gergof/electron-builder-sandbox-fix/blob/master/lib/index.js
|
||||
|
||||
const fs = require("fs/promises"); |
||||
const path = require("path"); |
||||
let isApplied = false; |
||||
|
||||
const hook = async () => { |
||||
if (isApplied) return; |
||||
isApplied = true; |
||||
if (process.platform !== "linux") { |
||||
// this fix is only required on linux
|
||||
return; |
||||
} |
||||
const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget"); |
||||
const oldBuildMethod = AppImageTarget.default.prototype.build; |
||||
AppImageTarget.default.prototype.build = async function (...args) { |
||||
console.log("Running AppImage builder hook", args); |
||||
const oldPath = args[0]; |
||||
const newPath = oldPath + "-appimage-sandbox-fix"; |
||||
// just in case
|
||||
try { |
||||
await fs.rm(newPath, { |
||||
recursive: true |
||||
}); |
||||
} catch {} |
||||
|
||||
console.log("Copying to apply appimage fix", oldPath, newPath); |
||||
await fs.cp(oldPath, newPath, { |
||||
recursive: true |
||||
}); |
||||
args[0] = newPath; |
||||
|
||||
const executable = path.join(newPath, this.packager.executableName); |
||||
|
||||
const loaderScript = ` |
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "\${BASH_SOURCE[0]}" )" && pwd )" |
||||
IS_STEAMOS=0 |
||||
|
||||
if [[ "$SteamOS" == "1" && "$SteamGamepadUI" == "1" ]]; then |
||||
echo "Running Vesktop on SteamOS, disabling sandbox" |
||||
IS_STEAMOS=1 |
||||
fi |
||||
|
||||
exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] && echo '--no-sandbox')" "$@" |
||||
`.trim();
|
||||
|
||||
try { |
||||
await fs.rename(executable, executable + ".bin"); |
||||
await fs.writeFile(executable, loaderScript); |
||||
await fs.chmod(executable, 0o755); |
||||
} catch (e) { |
||||
console.error("failed to create loder for sandbox fix: " + e.message); |
||||
throw new Error("Failed to create loader for sandbox fix"); |
||||
} |
||||
|
||||
const ret = await oldBuildMethod.apply(this, args); |
||||
|
||||
await fs.rm(newPath, { |
||||
recursive: true |
||||
}); |
||||
|
||||
return ret; |
||||
}; |
||||
}; |
||||
|
||||
module.exports = hook; |
Loading…
Reference in new issue