From 0e4675f4d25e7db8091e24639558609c15e544e7 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Mon, 15 Mar 2021 11:28:38 -0500 Subject: [PATCH] proton: Add PROTON_NO_XIM runtime config option --- README.md | 1 + proton | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index 1b7e6a38..05414c6c 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,7 @@ the Wine prefix. Removing the option will revert to the previous behavior. | nod3d10 | PROTON_NO_D3D10 | Disable d3d10.dll and dxgi.dll, for d3d10 games which can fall back to and run better with d3d9. | | noesync | PROTON_NO_ESYNC | Do not use eventfd-based in-process synchronization primitives. | | nofsync | PROTON_NO_FSYNC | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) | +| noxim | PROTON_NO_XIM | Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7. | | nativevulkanloader | | Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. | | forcelgadd | PROTON_FORCE_LARGE_ADDRESS_AWARE | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | | gamedrive | PROTON_SET_GAME_DRIVE | Create an S: drive which points to the Steam Library which contains the game. | diff --git a/proton b/proton index 95a18d49..67f7ac72 100755 --- a/proton +++ b/proton @@ -712,6 +712,9 @@ class Session: #default wine-mono override for FNA games self.env.setdefault("WINE_MONO_OVERRIDES", "Microsoft.Xna.Framework.*,Gac=n") + #disable XIM support until libx11 >= 1.7 is widespread + self.env.setdefault("WINE_ALLOW_XIM", "0") + if "wined3d11" in self.compat_config: self.compat_config.add("wined3d") @@ -726,12 +729,16 @@ class Session: self.check_environment("PROTON_NO_WRITE_WATCH", "nowritewatch") self.check_environment("PROTON_HIDE_NVIDIA_GPU", "hidenvgpu") self.check_environment("PROTON_SET_GAME_DRIVE", "gamedrive") + self.check_environment("PROTON_NO_XIM", "noxim") if "noesync" in self.compat_config: self.env.pop("WINEESYNC", "") else: self.env["WINEESYNC"] = "1" + if not "noxim" in self.compat_config: + self.env.pop("WINE_ALLOW_XIM") + if "nofsync" in self.compat_config: self.env.pop("WINEFSYNC", "") else: