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
19.66k stars 830 forks source link

Mouse cursor leaves a trail of pixels #7173

Closed DonPiotr closed 6 days ago

DonPiotr commented 1 month ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 918d8340afd652b011b937d29d5eea0be08467f5 (flake.lock: update). Date: Tue Jun 25 12:06:02 2024 Tag: v0.41.2, commits: 4886 flags: (if any) System Information: System name: Linux Node name: laptop Release: 6.6.43_1 Version: #1 SMP PREEMPT_DYNAMIC Sun Jul 28 07:18:17 UTC 2024 GPU information: 00:01.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Mullins [Radeon R3 Graphics] [1002:9850] (rev 40) (prog-if 00 [VGA controller]) os-release: NAME="Void" ID="void" PRETTY_NAME="Void Linux" HOME_URL="https://voidlinux.org/" DOCUMENTATION_URL="https://docs.voidlinux.org/" LOGO="void-logo" ANSI_COLOR="0;38;2;71;128;97" DISTRIB_ID="void" plugins: ======Config-Start====== 23:47:49 [210/244] Config File: /home/piotr/.config/hypr/hyprland.conf: Read Succeeded monitor=,preferred,auto,auto # VGA-1 on left side #monitor=VGA-1,preferred,0x0,0.9 #monitor=VGA-1,preferred,auto,auto,mirror,eDP-1 #monitor=HDMI-1,preferred,auto,auto,mirror,eDP-1 env = XDG_CURRENT_DESKTOP, Hyprland env = XDG_SESSION_TYPE, wayland env = XDG_SESSION_DESKTOP, Hyprland exec-once = /usr/libexec/xdg-desktop-portal-hyprland exec-once = dunst exec-once = /usr/libexec/polkit-gnome-authentication-agent-1 exec-once = hyprpaper exec = pkill hypridle || sleep 1 && hypridle & exec = pkill waybar || sleep 1 && waybar exec-once = pipewire & pipewire-pulse & wireplumber workspace=1, monitor:eDP-1, default:true workspace=2, monitor:eDP-1 workspace=3, monitor:eDP-1 workspace=4, monitor:eDP-1 workspace=5, monitor:eDP-1 workspace=6, monitor:VGA-1, default:true workspace=7, monitor:VGA-1 workspace=8, monitor:VGA-1 workspace=9, monitor:VGA-1 workspace=10, monitor:VGA-1 # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # Some default env vars. env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = it,pl kb_variant = kb_model = kb_options = grp:win_space_toggle kb_rules = follow_mouse = 1 touchpad { natural_scroll = no } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 10 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) ### cursor_inactive_timeout = 5 resize_on_border = true layout = master # layout = dwindle } plugin { } misc { # disable_hyprland_logo = yes # disable_splash_rendering = true mouse_move_enables_dpms = no key_press_enables_dpms = yes } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 10 blur { enabled = true size = 3 passes = 1 } active_opacity = 1.0 inactive_opacity = 0.8 fullscreen_opacity = 1.0 drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 bezier = smoothIn, 0, 0, 0, 0 bezier = overshot, 0.05, 0.9, 0.1, 1.15 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 50% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default animation = windowsMove, 1, 4, smoothIn, slide } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more ### new_is_master = true new_status = master } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = off } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more device { name = usb-optical-mouse sensitivity = 0 } cursor { no_hardware_cursors = true inactive_timeout = 5 } windowrule = float,^(pavucontrol)$ windowrule = float,^(alacritty-float)$ windowrule = float,^(org.gnome.Calculator)$ windowrule = opacity 1.0 override, Firefox windowrule = opacity 1.0 override, Brave-browser windowrulev2 = float,class:(evolution),title:(Composizione messaggio) windowrulev2 = float,class:(evolution),title:(Stampa) windowrulev2 = float,class:(xdg-desktop-portal-gtk),title:(Tutti i file) windowrulev2 = float, class:(zenity),title:(Avanzamento) $mainMod = SUPER bind = $mainMod SHIFT, Return, exec, alacritty -e tmux bind = $mainMod Alt_L, T, exec, alacritty bind = $mainMod, O, exec, alacritty --class alacritty-float -e lf bind = $mainMod, B, exec, pkill waybar || sleep 1 && waybar bind = $mainMod, X, killactive, bind = $mainMod SHIFT, X, exit, bind = $mainMod Alt_L, R, exec, hyprctl reload bind = $mainMod, D, exec, fuzzel #bind = $mainMod, D, exec, rofi -show #bind = $mainMod, D, exec, wofi --conf=$HOME/.config/wofi/config --style=$HOME/.config/wofi/wofi.css #bind = $mainMod SHIFT, D, exec, wofi --show run --conf=$HOME/.config/wofi/config --style=$HOME/.config/wofi/wofi.css bind = $mainMod, L, exec, ~/bin/lockscreen.sh bind = $mainMod, F, togglefloating, bind = $mainMod SHIFT, F, fullscreen bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle bind = $mainMod SHIFT, J, exec, hyprctl keyword general:layout dwindle bind = $mainMod SHIFT, M, exec, hyprctl keyword general:layout master bind = $mainMod, M, layoutmsg, swapwithmaster master # Media keys bind = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ bind = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bind = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Screenshots bind = , Print, exec, ~/bin/screenshot.sh bind = SHIFT, Print, exec, ~/bin/screenshot_window.sh bind = $mainMod, Tab, focusmonitor, +1 bind = $mainMod SHIFT, Tab, movewindow, mon:+1 # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d bind = $mainMod SHIFT, left, movewindow, l bind = $mainMod SHIFT, right, movewindow, r bind = $mainMod SHIFT, up, movewindow, u bind = $mainMod SHIFT, down, movewindow, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, Q, workspace, 6 bind = $mainMod, W, workspace, 7 bind = $mainMod, E, workspace, 8 bind = $mainMod, R, workspace, 9 bind = $mainMod, T, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, Q, movetoworkspace, 6 bind = $mainMod SHIFT, W, movetoworkspace, 7 bind = $mainMod SHIFT, E, movetoworkspace, 8 bind = $mainMod SHIFT, R, movetoworkspace, 9 bind = $mainMod SHIFT, T, movetoworkspace, 10 # Scroll through existing workspaces with mainMod + scroll # bind = $mainMod, mouse_down, workspace, e+1 # bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow ======Config-End======== ```

Description

I just upgraded my Hyprland from 0.40 to 0.41.2.

Since that, my mouse leaves a trail of pixels.

It seams to by an issue on dark websites and applications.

Not all cursor forms seams to leave a trail. (hand OK, arrow or Ibeam NOT-OK) Not all applications are affected: kitty, alacritty, brave NOT-OK, firefox, libreoffice OK Not all sites are affected.

How to reproduce

No idea. I would like to know.

Crash reports, logs, images, videos

trail

vaxerski commented 1 month ago

try on git

wrocketdev commented 1 month ago

I actually have the exact same problem

DonPiotr commented 1 month ago

I compiled 0.41.0 and downgrade. There is no problem with mouse.

DonPiotr commented 1 month ago

I compiled 0.41.1 and it is OK. Then I compiled 0.41.2 and it is broken.

Previously I used 0.41.2 packages from repo, this time I compiled it myself from Void templates.

EDIT: here by repo I mean repo of Void template maintainer

vaxerski commented 1 month ago

can you bisect then?

DonPiotr commented 1 month ago

Have some problems with bisecting. Can't build from repo. It stack on applying patches for wlroots-hyprland. Yes, I know that now wlroots is removed, but trail problem appeared before it.

gulafaran commented 1 month ago

does it occur with #7178 ?

DonPiotr commented 1 month ago

Solved problem with building from git repo. "Quickly" I will have bisect results.

DonPiotr commented 1 month ago

After 2 hours of compiling and recompiling:

# git bisect log
git bisect start
# status: waiting for both good and bad commits
# good: [9e781040d9067c2711ec2e9f5b47b76ef70762b3] props: bump version to 0.41.1
git bisect good 9e781040d9067c2711ec2e9f5b47b76ef70762b3
# status: waiting for bad commit, 1 good commit known
# bad: [918d8340afd652b011b937d29d5eea0be08467f5] flake.lock: update
git bisect bad 918d8340afd652b011b937d29d5eea0be08467f5
# good: [9cb3bf1cac1a38fbac3942a60415d7050ffcd2cb] Nix: tidy up derivation
git bisect good 9cb3bf1cac1a38fbac3942a60415d7050ffcd2cb
# bad: [d6de248b0d434a382a7036ff04b3f9b367668cb0] window: expose pseudotiled state and add param to dispatcher (#6583)
git bisect bad d6de248b0d434a382a7036ff04b3f9b367668cb0
# good: [b98e0876d3b54b7625bacf14e3546dd2d0e600d0] hyprctl: avoid using select()
git bisect good b98e0876d3b54b7625bacf14e3546dd2d0e600d0
# bad: [20a465f69d342c5caead27df696d228492ea02e8] pointer: use software rendering when monitor is mirrored (#6587)
git bisect bad 20a465f69d342c5caead27df696d228492ea02e8
# good: [6e5804b53de753f24953d9d647940df66bc68f6d] hyprctl: fix zsh completion (#6467)
git bisect good 6e5804b53de753f24953d9d647940df66bc68f6d
# bad: [fb15b7aa2a9bba0f0693f84d0c65d386942583f8] core: Move to hyprutils for Math
git bisect bad fb15b7aa2a9bba0f0693f84d0c65d386942583f8
# first bad commit: [fb15b7aa2a9bba0f0693f84d0c65d386942583f8] core: Move to hyprutils for Math
# git bisect visualize
commit fb15b7aa2a9bba0f0693f84d0c65d386942583f8 (HEAD)
Author: Vaxry <vaxry@vaxry.net>
Date:   Wed Jun 19 16:20:06 2024 +0200

    core: Move to hyprutils for Math

    Moves CRegion, CBox and Vector2D over to hyprutils.

    Requires hyprutils>=0.1.4
DonPiotr commented 1 month ago

no_hardware_cursors enabled/disabled/commented changes nothing

I didn't set any themes. I have only that:

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
DonPiotr commented 1 month ago

BTW: a trail disappear when I change focus to another window or when I put a cursor on some website element with hover modifier. "Disappear" means that start a new trail.

vaxerski commented 1 month ago

wait, does it still happen on 0.42?

DonPiotr commented 1 month ago

This night I was bisecting. An hour ago I saw there is 0.42. I begin to compile it 30 minutes ago (more less). Last commit (83a) wasn't compiling. I checkout to 9a0 and it still seams to compile. When it finish, I will comunicate how it is working.

DonPiotr commented 1 month ago

So I compiled 0.42. I found cursor in form of hyprland logo. Nice but a little big. On my computer still:

no_hardware_cursors enabled/disabled/commented

and

env = XCURSOR_SIZE,... env = HYPRCURSOR_SIZE,...

change nothing.

Seams that trail of pixels issue is solved.

gulafaran commented 1 month ago

So I compiled 0.42. I found cursor in form of hyprland logo. Nice but a little big. On my computer still:

no_hardware_cursors enabled/disabled/commented

and

env = XCURSOR_SIZE,... env = HYPRCURSOR_SIZE,...

change nothing.

Seams that trail of pixels issue is solved.

yeah that hyprcursor is a default fallback cursor with a fixed size. set a theme.

DonPiotr commented 1 month ago

No, it have to be reopen.

Hyprland logo cursor doasn't leave a trail. BTW: need more documentation about cursor theming.

But when in Brave it come back to form of arrow or in Logseq to form of Ibeam, trail problem return.

This on 0.42.0

gulafaran commented 1 month ago

No, it have to be reopen.

Hyprland logo cursor doasn't leave a trail. BTW: need more documentation about cursor theming.

But when in Brave it come back to form of arrow or in Logseq to form of Ibeam, trail problem return.

This on 0.42.0

are you using monitor scaling?

DonPiotr commented 1 month ago

No

monitor=,preferred,auto,auto

I manage to install that: https://github.com/guillaumeboehm/hyprcursor_dracula_kde But still Brave and some other app fallback to normal arrow with a trail. Firefox also don't use themed cursor, but don't have trail problem as previously.

DonPiotr commented 1 week ago

It seams that affected are only flatpak's applications.

DonPiotr commented 1 week ago

I did: flatpak override --filesystem=~/.icons:ro --user as in hyprland's wiki

This (after reboot) fixed qutebrowser (flatpak) cursor. But Brave and Logseq (flatpaks) still have a cursor trail.

DonPiotr commented 6 days ago

I copied xorg and hyprcursor themes to /usr/shere/icons, /usr/shere/themes, ~/.local/share/icons, ~/.local/share/themes, ~/.icons, ~/.themes (ok, part of that I make symbolic links), then I run full command from wiki: flatpak override --filesystem=~/.themes:ro --filesystem=~/.icons:ro --user

It wasn't working at all.

Then for other reasons I reboot my machine and ... it worked.

I don't know if previous comment was enough. Don't know in which moment was all set right.

But in the end, it's working without any trail, and with same themed cursor everywhere.