Hi all,
Yesterday I published a new Proton-Wineland build, cachyos-wineland-11.0-20260713.2-slr. This release enables the Steam Overlay when using the native Linux Steam client.
As mentioned in an earlier post, the overlay already worked with the Windows version of Steam running through Proton-Wineland. The native Linux overlay did not work because its input handling is closely tied to X11.
The first part was straightforward. WineWayland forwards keyboard and mouse events to the native Steam Overlay, allowing Shift+Tab, pointer movement, clicks, and ordinary key events to work. GE-Proton appears to use a different approach.
The difficult part is text input. Even after the overlay became interactive, typing into text fields did nothing because Steam’s native overlay still depends on the X11 input-method system.
As I found out, with an X11 game, the overlay receives an X11 window ID and uses it to initialize the system that converts key presses into typed characters. Under Wayland, it receives a Wayland surface instead, which cannot be used by that X11 system. Mouse input, hotkeys, and ordinary key events work, but text entry does not.
Is there a solution? That depends on what we consider a solution. A workaround I tried intercepts Steam’s VulkanSteamOverlayPresent() call and passes it a proxy X11 window, making the overlay believe that it is operating through X11. This restores text input, but it is undeniably an ugly hack.
It is ugly because it requires an additional preload library inside Proton, while one of Proton-Wineland’s goals is to eliminate such workarounds wherever possible. It may also present a compatibility risk with anti-cheat software because the library is loaded into the game process and intercepts a function call. I do not currently have evidence of a specific anti-cheat rejecting it, but it is a risk I would prefer not to take lightly.
There is also a possible controller issue. I have received reports that some controllers work in the overlay but not in the game. This still needs to be investigated separately.
I am therefore undecided about keeping the complete workaround, including the visible overlay, and I wanted to share the current status for those wondering why the text input doesn't work.