aboutsummaryrefslogtreecommitdiff
path: root/libs/nak/src/runtime_wrap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'libs/nak/src/runtime_wrap.rs')
-rw-r--r--libs/nak/src/runtime_wrap.rs58
1 files changed, 0 insertions, 58 deletions
diff --git a/libs/nak/src/runtime_wrap.rs b/libs/nak/src/runtime_wrap.rs
deleted file mode 100644
index 943a329..0000000
--- a/libs/nak/src/runtime_wrap.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-use std::ffi::OsStr;
-use std::process::Command;
-
-/// Build a command to run `exe` with the given environment variables.
-///
-/// If SLR (Steam Linux Runtime) is installed, the command is wrapped inside
-/// the pressure-vessel container via the SLR `run` script. Environment
-/// variables are set on the process and inherited by pressure-vessel into the
-/// container (matching how game launches work via QProcess). This ensures
-/// Wine/Proton commands use the container's libraries instead of potentially
-/// broken host libraries.
-pub fn build_command<S: AsRef<OsStr>>(
- exe: impl AsRef<OsStr>,
- envs: &[(&str, S)],
-) -> Command {
- if let Some(slr_script) = crate::slr::get_slr_run_script() {
- let mut cmd = Command::new(&slr_script);
- // Set env vars on the process — pressure-vessel inherits them
- for (key, value) in envs {
- cmd.env(key, value.as_ref());
- }
- // Expose the executable's parent directory to the container —
- // needed for system-installed Protons (e.g. /usr/share/steam/...)
- // whose files may not be visible inside the container by default.
- if let Some(parent) = std::path::Path::new(exe.as_ref()).parent() {
- if parent.exists() {
- let mut flag = std::ffi::OsString::from("--filesystem=");
- flag.push(parent.as_os_str());
- cmd.arg(flag);
- }
- }
- // Also expose WINEPREFIX if set in env vars
- for (key, value) in envs {
- if *key == "WINEPREFIX" || *key == "STEAM_COMPAT_DATA_PATH" {
- let path = std::path::Path::new(value.as_ref());
- if path.exists() || path.parent().map_or(false, |p| p.exists()) {
- let mut flag = std::ffi::OsString::from("--filesystem=");
- flag.push(value.as_ref());
- cmd.arg(flag);
- }
- }
- }
- cmd.arg("--");
- cmd.arg(exe);
- cmd
- } else {
- let mut cmd = Command::new(exe);
- for (key, value) in envs {
- cmd.env(key, value.as_ref());
- }
- cmd
- }
-}
-
-/// Build a command with no extra environment variables.
-pub fn command_for(exe: impl AsRef<OsStr>) -> Command {
- build_command::<&str>(exe, &[])
-}