diff --git a/src/infra/runners/mod.rs b/src/infra/runners/mod.rs index 8845c20..fa05d17 100644 --- a/src/infra/runners/mod.rs +++ b/src/infra/runners/mod.rs @@ -1,8 +1,8 @@ pub mod r#trait; -pub mod wine_tkg; +pub mod proton_tkg; pub use r#trait::*; -pub use wine_tkg::*; +pub use proton_tkg::*; #[cfg(test)] mod tests; diff --git a/src/infra/runners/wine_tkg.rs b/src/infra/runners/proton_tkg.rs similarity index 99% rename from src/infra/runners/wine_tkg.rs rename to src/infra/runners/proton_tkg.rs index 6384a49..9b92b5f 100644 --- a/src/infra/runners/wine_tkg.rs +++ b/src/infra/runners/proton_tkg.rs @@ -6,11 +6,11 @@ use crate::infra::runners::{Runner, LaunchContext, CommandSpec}; use crate::steam_client::SteamClient; use crate::launch::pipeline::{LaunchError, LaunchErrorKind}; -pub struct WineTkgRunner; +pub struct ProtonTkgRunner; #[async_trait::async_trait] -impl Runner for WineTkgRunner { - fn name(&self) -> &str { "Wine-TKG" } +impl Runner for ProtonTkgRunner { + fn name(&self) -> &str { "Proton-TKG" } async fn prepare_prefix(&self, ctx: &LaunchContext) -> std::result::Result<(), LaunchError> { let library_root = PathBuf::from(&ctx.launcher_config.steam_library_path); @@ -362,6 +362,10 @@ impl Runner for WineTkgRunner { async fn build_env(&self, ctx: &LaunchContext) -> std::result::Result, LaunchError> { let mut env = HashMap::new(); + + // Disables Proton's native lsteamclient bridge to force the use of the Windows Steam Client. + env.insert("PROTON_DISABLE_LSTEAMCLIENT".to_string(), "1".to_string()); + let app_id_str = ctx.app.app_id.to_string(); let library_root = PathBuf::from(&ctx.launcher_config.steam_library_path); diff --git a/src/infra/runners/tests.rs b/src/infra/runners/tests.rs index 19e3cfe..6eb657c 100644 --- a/src/infra/runners/tests.rs +++ b/src/infra/runners/tests.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod tests { - use crate::infra::runners::{LaunchContext, CommandSpec, Runner, WineTkgRunner}; + use crate::infra::runners::{LaunchContext, CommandSpec, Runner, ProtonTkgRunner}; use crate::models::LibraryGame; use crate::steam_client::{LaunchInfo, LaunchTarget}; use crate::config::LauncherConfig; @@ -56,8 +56,8 @@ mod tests { } #[tokio::test] - async fn test_wine_tkg_runner_graphics_policy_autodetect() { - use crate::infra::runners::wine_tkg::WineTkgRunner; + async fn test_proton_tkg_runner_graphics_policy_autodetect() { + use crate::infra::runners::proton_tkg::ProtonTkgRunner; use crate::models::GraphicsBackendPolicy; use crate::config::LauncherConfig; use crate::steam_client::{LaunchInfo, LaunchTarget}; @@ -115,7 +115,7 @@ mod tests { verification_ptr: std::ptr::null_mut(), }; - let runner = WineTkgRunner; + let runner = ProtonTkgRunner; let env = runner.build_env(&ctx).await.unwrap(); // Auto is now CONSERVATIVE: it should NOT have enabled DXVK even if simulated on disk @@ -135,9 +135,9 @@ mod tests { } #[tokio::test] - async fn test_wine_tkg_runner_stubs() { + async fn test_proton_tkg_runner_stubs() { // We can only test stubs that don't hit the filesystem hard or expect real Proton/Wine - let runner = WineTkgRunner; + let runner = ProtonTkgRunner; let ctx = mock_context(); // build_env should succeed without real filesystem diff --git a/src/launch/stages/resolve_components.rs b/src/launch/stages/resolve_components.rs index 3660465..9f789ef 100644 --- a/src/launch/stages/resolve_components.rs +++ b/src/launch/stages/resolve_components.rs @@ -51,7 +51,7 @@ impl Runner for NativeRunner { impl PipelineStage for ResolveComponentsStage { fn name(&self) -> &str { "ResolveComponents" } async fn execute(&self, ctx: &mut PipelineContext) -> std::result::Result<(), LaunchError> { - use crate::infra::runners::WineTkgRunner; + use crate::infra::runners::ProtonTkgRunner; use crate::steam_client::LaunchTarget; if ctx.runner.is_none() { @@ -61,7 +61,7 @@ impl PipelineStage for ResolveComponentsStage { ctx.runner = Some(Box::new(NativeRunner)); } LaunchTarget::WindowsProton => { - ctx.runner = Some(Box::new(WineTkgRunner)); + ctx.runner = Some(Box::new(ProtonTkgRunner)); } } } else {