From d3697cd98643d482540f6c7933a060fd91783939 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 18:52:10 +0000 Subject: [PATCH] refactor: rename wine-tkg runner to proton-tkg and inject PROTON_DISABLE_LSTEAMCLIENT - Renamed `src/infra/runners/wine_tkg.rs` to `src/infra/runners/proton_tkg.rs` - Renamed `WineTkgRunner` struct to `ProtonTkgRunner` - Updated runner name to "Proton-TKG" - Injected `PROTON_DISABLE_LSTEAMCLIENT=1` into the runner environment - Updated module exports and pipeline components to use the new runner - Updated relevant tests to reflect the naming changes Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com> --- src/infra/runners/mod.rs | 4 ++-- src/infra/runners/{wine_tkg.rs => proton_tkg.rs} | 10 +++++++--- src/infra/runners/tests.rs | 12 ++++++------ src/launch/stages/resolve_components.rs | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) rename src/infra/runners/{wine_tkg.rs => proton_tkg.rs} (99%) diff --git a/src/infra/runners/mod.rs b/src/infra/runners/mod.rs index 8845c202..fa05d17d 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 6384a493..9b92b5ff 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 19e3cfe4..6eb657cf 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 36604652..9f789ef5 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 {