Skip to content

MangoHud still relies on X11 even when built with_x11=disabled and with_wayland=enabled #1497

@nokia8801

Description

@nokia8801

Describe the bug
When built with with_x11=disabled and with_wayland=enabled, the HUD position is wrong and doesn't follow the config value, RShift_F11 doesn't change the position as none of the shortcuts work, display-server config option also doesn't work.

List relevant hardware/software information

  • OS: Arch Linux
  • MangoHud: 0.7.2
  • GPU: Intel Arc A750
  • Mesa: 24.2.7
  • Wine: wine-tkg-git 9.22.r2.g342b3b81-327 ( TkG Staging NTsync )
  • DE/WM: GNOME 47.2 on Wayland (Mutter)
  • DXVK: 2.5.1
  • Kernel: Linux 6.12.1-arch1-1

To Reproduce
When running a game natively over Wayland, such as Windows games using Wine with the graphics backend set to Wayland (without x11 fallback) or Minecraft with GLFW 3.4 running natively over Wayland, if we build MangoHud with with_x11=disabled and with_wayland=enabled, the HUD position will be wrong, shortcuts won't work and display-server will return empty.

Expected behavior
Shortcuts, display-server and position should work.

Screenshots
image

Additional context
I made this issue back in April, which could be related. #1281

I build Wine with the Wayland driver and set it as the only graphics backend. Wine is also built with and using WoW64. I also use GLFW 3.4 with Minecraft. Both Wine games and Minecraft run natively over Wayland. When the games are running without MangoHud, no xwayland or mutter-x11-frames are spawned/running/sleeping. I guess something got fixed since April and now, because now, even with MangoHud, those processes aren't spawned/running/sleeping at all. So that's exactly what I wanted. Thanks. It can be used without any X11 dependencies or calls. (Hopefully I'm correct in that last part)

But the HUD is stuck and not configurable. That's the issue.

I should also mention that I don't use mangoapp or mangohudctl, so those may affect the building process or using it as Wayland only. Here's my PKGBUILD options:

build() {
    arch-meson "$_pkgname" build \
        -Dmangoapp=false \
        -Dmangohudctl=false \
        -Dwith_nvml=disabled \
        -Dwith_xnvctrl=disabled \
        -Dwith_x11=disabled \
        -Dwith_wayland=enabled \
        -Dwith_dbus=enabled \
        --wrap-mode=default

    meson compile -C build

}

Edit: Actually, none of the shortcuts work.

Edit 2: Ok so I've done some more testing.

Interestingly enough, the position option is honored in Minecraft and Orwell, both OpenGL Linux native games, but again the shortcuts don't work.

In Wine, when using Proton UMU and Fsync, the option is honored but shortcuts don't work.

In Wine, when using Wine TkG Staging with NTSync, the option is honored wrong and shortcuts don't work. But the interesting part is that:

  • top-left is top-center
  • top-center is top-right
  • top-right is middle-left
  • middle-left is middle-right
  • middle-center is top-center
  • middle-right is bottom-left
  • bottom-left is bottom-center
  • bottom-center is bottom-right
  • bottom-right is top-left

Very weird.

Edit 3: Nevermind what I said about MangoHud working without any X11 calls or dependencies. Minecraft, Orwell and other games launched through Proton UMU spawn xwayland and mutter-x11-frames processes and they are running. Only games launched through Wine TkG Staging with NTSync+WoW64+Wayland don't have them. Even though Proton UMU is also using Wayland in my case. Interesting.

I would very much like MangoHud to work without any X11 calls and dependencies, if it is possible of course.

Edit 4: So I've discussed this below but will add it here as well. The position and display-server values work with my custom system Wine. With some new commits, shortcuts also work. No xwayland and mutter-x11-frames processes are triggered too.

But these do not work with Proton and Minecraft. The processes are also triggered. So there still must be some x11 stuff deep in the code?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions