protonscr

Add custom flag to tell Proton to change its WMClass

protonopen Feature Request
ValveSoftware/Proton#9994 · opened 2026-07-21 by bluesaka111 · updated 2026-07-21 · 0 comments · github
Bbluesaka111 2026-07-21 github

Feature Request
I confirm:
[x] I haven’t found another request for this feature.
[x] I have checked whether system updates already include this feature.

Description

Add the ability to force Proton to override or change its WMClass property.

Justification

Many tiling and dynamic window managers (e.g., Hyprland, i3, Sway) rely on WMClass for rules, layouts, and window handling. When running Proton games outside of Steam, Proton does not expose the actual program file name, resulting in conflicting window rules and making it impossible to handle problematic (“toxic”) windows cleanly.
Example Issues

Incorrect Rule Application
Where Winds Meet installer rules — intended to prevent fullscreen behavior in Scrolling Layout, but Proton’s generic WMClass causes rules to apply incorrectly.

    hl.window_rule ({
        name = "windows-game-wwm-installer-rules",
        match = {
            initial_class = "^(steam_app*|steam_proton*|proton_app*|steam_app_default)$",
            initial_title = "^()$",
        },
        float = true,
        center = true,
        tile = false,
        fullscreen = false
    })

Unusable Overlay Windows: Wuthering Waves login overlay — rule to eliminate the cover window that appear on top of Wuthering Waves' Login Window - Probably bad Z-layer handling - by shoving it to Hyprland Magic Workspace.

    hl.window_rule ({
        name = "windows-games-antitoxic-rules",
        match = {
            initial_class = "^(steam_app*|steam_proton*|proton_app*|steam_app_default)$",
            initial_title = "^()$",
        },
        workspace = "special:magic",
        float = true,
        center = true,
        tile = false,
        size = {1,1},
        fullscreen = false
    })

As you can see, it is impossible to detect what the hell is running when using Proton from the 2 example above

  • Wine exposes the Windows executable name as its InitialClass, allowing clean rule handling.
  • Proton, however, uses generic WMClass values and this leads to window properties being applied incorrectly, incorrect fullscreen states, opacity value being applied when it shouldnt, and in some cases, triggers anti‑cheat systems.

Benefits of adding custom flag to change Proton InitialClass / WMClass:

  • Consistent window handling across tiling/dynamic Windows Managers and Desktop environments.
  • Reduced risk of misbehavior that interferes with gameplay or trigger anti‑cheat.

Nothing extracted yet.