hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.1k stars 883 forks source link

Simple mouse capture does not work on Xwayland #6292

Closed TheSunCat closed 4 months ago

TheSunCat commented 4 months ago

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 2ccd45a84475fab46c6fecd2fe226d3173104743 dirty (). Date: 2024-05-12 Tag: , commits: flags: (if any) System Information: System name: Linux Node name: nixos-mat Release: 6.6.32 Version: #1-NixOS SMP PREEMPT_DYNAMIC Sat May 25 14:22:56 UTC 2024 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600] [1002:7480] (rev c1) (prog-if 00 [VGA controller]) c4:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf] (rev c2) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240529.ad57eef" DOCUMENTATION_URL="https://nixos.org/learn.html" HOME_URL="https://nixos.org/" ID=nixos IMAGE_ID="" IMAGE_VERSION="" LOGO="nix-snowflake" NAME=NixOS PRETTY_NAME="NixOS 24.11 (Vicuña)" SUPPORT_URL="https://nixos.org/community.html" VERSION="24.11 (Vicuña)" VERSION_CODENAME="vicuña" VERSION_ID="24.11" plugins: ```

Bug or Regression?

Bug

Description

The mouse is not captured when requested by certain X11 apps.

How to reproduce

c++:

#include <GLFW/glfw3.h>
#include <cstdio>

void error_callback(int error, const char *description) {
  fprintf(stderr, "Error: %s\n", description);
}
int main() {
  glfwSetErrorCallback(error_callback);
  if (!glfwInit()) {
    return -1;
  }
  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  GLFWwindow *window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
  glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);

  glfwMakeContextCurrent(window);
  int width, height;
  glfwGetFramebufferSize(window, &width, &height);
  glViewport(0, 0, width, height);

  while (!glfwWindowShouldClose(window)) {
    glfwPollEvents();
    // Keep running
    glfwSwapBuffers(window);
  }
}

shell.nix:

{ pkgs ? import<nixpkgs> {}}:

pkgs.mkShell {
  inputsFrom = with pkgs; [ glfw-wayland ];
}

cmakelists:

cmake_minimum_required(VERSION 3.13)

project(test)

include(FetchContent)

FetchContent_Declare(
  glfw
  GIT_REPOSITORY https://github.com/glfw/glfw.git
  GIT_SHALLOW TRUE
  GIT_TAG 3.3.8 # Specify the version you need
)

set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)
set(GLFW_DOCUMENT_INTERNALS OFF)

# NOTE: GLFW will still use X11 despite these settings
set(GLFW_BUILD_X11 OFF)
set(GLFW_BUILD_WAYLAND ON)
FetchContent_MakeAvailable(glfw)

add_executable(test test.cpp)
target_link_libraries(test PRIVATE glfw GL)

Crash reports, logs, images, videos

[LOG] Registered signal for owner 17e18e0: 34ec688 -> 17e19f0 (owner: CPointerManager)
[LOG] Registered signal for owner 3155df0: 34abcf8 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 34c1c98 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Callback 17e1a18 -> 17e1a10, CPointerManager removed.
[LOG] Registered signal for owner 17e18e0: 34fcac8 -> 17e19f0 (owner: CPointerManager)
[LOG] Registered signal for owner 3155df0: 34abcf8 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 3212148 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Searching for matching rules for kitty (title: ./Dacite ~/S/G/b/Project)
[LOG] Set keyboard focus to surface 34fbe40, with [Window 34ee620: title: "tail -f $XDG_RUNTIME ~/Downloads"]
[LOG] Searching for matching rules for kitty (title: tail -f $XDG_RUNTIME ~/Downloads)
[LOG] TI ENABLE
[LOG] cursorImage request: shape 9 -> text
[LOG] Callback 17e1a18 -> 17e1a10, CPointerManager removed.
[LOG] Registered signal for owner 17e18e0: 34fbd88 -> 17e19f0 (owner: CPointerManager)
[LOG] Registered signal for owner 3155df0: 3476b28 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 3212148 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] cursorImage request: shape 9 -> text
[LOG] New window contains HL_INITIAL_WORKSPACE_TOKEN: 82db2a9d-d00b-4e87-9772-f69ee23ba421
[LOG] Registered signal for owner 352b3d0: 34f26e8 -> 352b4a0 (owner: CWindow)
[LOG] Searching for matching rules for Vulkan (title: Vulkan)
[LOG] Searching for matching rules for kitty (title: tail -f $XDG_RUNTIME ~/Downloads)
[LOG] Set keyboard focus to surface 34f23f0, with [Window 352b3d0: title: "Vulkan"]
[LOG] Searching for matching rules for Vulkan (title: Vulkan)
[LOG] Registered signal for owner 352b3d0: 3506300 -> 352b640 (owner: XWayland Window Late)
[LOG] Registered signal for owner 352b3d0: 3506310 -> 352b848 (owner: XWayland Window Late)
[LOG] Registered signal for owner 352b3d0: 3506340 -> 352b570 (owner: XWayland Window Late)
[LOG] Registered signal for owner 352b3d0: 35062e0 -> 352b710 (owner: Xwayland Window Late)
[LOG] Registered signal for owner 352b3d0: 35062f0 -> 352b778 (owner: Xwayland Window Late)
[LOG] Registered signal for owner 34f23f0: 34f2708 -> 3503e20 (owner: FractionalScale)
[LOG] Map request dispatched, monitor DP-4, window pos: [3440.00000, 420.00000], window size: [800.00000, 600.00000]
[LOG] [ForeignToplevelWlr] Newly mapped window 000000000352b3d0
[LOG] Searching for matching rules for kitty (title: ./Dacite ~/S/G/b/Project)
[LOG] Searching for matching rules for firefox (title: New Issue · hyprwm/Hyprland — Mozilla Firefox)
[LOG] Searching for matching rules for kitty (title: tail -f $XDG_RUNTIME ~/Downloads)
[LOG] Searching for matching rules for Vulkan (title: Vulkan)
[wlr] [xwayland/xwm.c:1628] xcb error: op ConfigureWindow (no minor), code Value (no extension), sequence 3184, value 0
[LOG] cursorImage request: surface 35a2ae0
[LOG] Registered signal for owner 1802430: 35a2df8 -> 18024b0 (owner: CWLSurface)
[LOG] Registered signal for owner 1802430: 35a2db8 -> 1802518 (owner: CWLSurface)
[LOG] CWLSurface 1802430 called init()
[LOG] Callback 17e1a18 -> 17e1a10, CPointerManager removed.
[LOG] Registered signal for owner 0: 35a2db8 -> 17e1988 (owner: CPointerManager)
[LOG] Registered signal for owner 3155df0: 34abcf8 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 34c1c98 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 34abcf8 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Registered signal for owner 3155df0: 34c1c98 -> 3155df8 (owner: CRenderbuffer)
[LOG] Callback 3155e20 -> 3155e18, CRenderbuffer removed.
[LOG] Searching for matching rules for Vulkan (title: Vulkan)
[LOG] Set keyboard focus to surface 34fbe40, with [Window 34ee620: title: "tail -f $XDG_RUNTIME ~/Downloads"]
[LOG] Searching for matching rules for kitty (title: tail -f $XDG_RUNTIME ~/Downloads)
[LOG] TI ENABLE
[LOG] cursorImage request: shape 9 -> text
[LOG] Callback 17e19b0 -> 17e19a8, CPointerManager removed.
[LOG] Callback 18024d8 -> 18024d0, CWLSurface removed.
[LOG] Callback 1802540 -> 1802538, CWLSurface removed.
[LOG] CWLSurface 1802430 called destroy()
vaxerski commented 4 months ago

is this a regression?

TheSunCat commented 4 months ago

I don't recall having this issue before, but I have not used Hyprland for a while as it stopped working on my old laptop (and this one just arrived). I'm trying to boot up all my old projects and one that captures the mouse just doesn't work on Hyprland.

vaxerski commented 4 months ago

if you got a while it would rock if you could check if this is a regression

TheSunCat commented 4 months ago

Happily, if I figure out how to do that on NixOS haha. Won't be for a week or two since I have exams. Does it repro if you build it?

vaxerski commented 4 months ago

no clue, remind me in 3 days and I'll check