Recent Hyprland Update Issue

Some time ago I mentioned I had an issue with cursors:

https://forum.garudalinux.org/t/reset-config-all-garuda-assistant-app-cant-login-black-screen-hyprland/36369/2?u=drit

Unfortunately, the disappearing mouse cursor issue is back for me. Basically, the mouse cursor disappears on most applications or the background. It works on web browsers which is interesting.

Originally, I used the linux - Hyprland mouse icon disappears after Application start - Stack Overflow

Hyprland Wiki states the WLR_NO_HARDWARE_CURSORS is no longer in use:

Has anyone run into this issue and what did you do to fix it? I tried the recommendations in the wiki link but that doesn’t appear to be working. I wonder if I made a mistake with the Hyprland recommendations.

garuda-inxi

╰─λ garuda-inxi
System:
  Kernel: 6.10.2-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.1.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=cc33c017-cb7f-4f7a-884b-ca8051aa585c rw rootflags=subvol=@
    quiet loglevel=3 ibt=off
  Desktop: Hyprland v: 0.41.2-133-ge6732203 with: waybar tools:
    avail: swayidle,swaylock vt: 1 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
  Type: Desktop Mobo: Gigabyte model: B550 AORUS ELITE V2 v: x.x
    serial: <superuser required> uuid: <superuser required> UEFI: American
    Megatrends LLC. v: F13c date: 02/17/2021
CPU:
  Info: model: AMD Ryzen 5 5600X bits: 64 type: MT MCP arch: Zen 3+ gen: 4
    level: v3 note: check built: 2022 process: TSMC n6 (7nm) family: 0x19 (25)
    model-id: 0x21 (33) stepping: 0 microcode: 0xA201009
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
    L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 3 MiB desc: 6x512 KiB
    L3: 32 MiB desc: 1x32 MiB
  Speed (MHz): avg: 4591 min/max: N/A cores: 1: 4591 2: 4591 3: 4591 4: 4591
    5: 4591 6: 4591 7: 4591 8: 4591 9: 4591 10: 4591 11: 4591 12: 4591
    bogomips: 110190
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
  Vulnerabilities: <filter>
Graphics:
  Device-1: NVIDIA GA102 [GeForce RTX 3080 Lite Hash Rate]
    vendor: Micro-Star MSI driver: nvidia v: 555.58.02
    alternate: nouveau,nvidia_drm non-free: 550.xx+ status: current (as of
    2024-06; EOL~2026-12-xx) arch: Ampere code: GAxxx process: TSMC n7 (7nm)
    built: 2020-2023 pcie: gen: 4 speed: 16 GT/s lanes: 16 ports: active: none
    off: DP-3 empty: DP-1,DP-2,HDMI-A-1 bus-ID: 04:00.0 chip-ID: 10de:2216
    class-ID: 0300
  Display: wayland server: X.org v: 1.21.1.13 with: Xwayland v: 24.1.1
    compositor: Hyprland v: 0.41.2-133-ge6732203 driver: X: loaded: nvidia
    gpu: nvidia,nvidia-nvswitch display-ID: 1
  Monitor-1: DP-3 model: Acer XG270HU serial: <filter> built: 2018
    res: 2560x1440 hz: 60 dpi: 109 gamma: 1.2 scale: 1
    size: 597x336mm (23.5x13.23") diag: 685mm (27") ratio: 16:9 modes:
    max: 2560x1440 min: 640x480
  API: Vulkan v: 1.3.279 layers: 11 device: 0 type: discrete-gpu
    name: NVIDIA GeForce RTX 3080 driver: nvidia v: 555.58.02
    device-ID: 10de:2216 surfaces: xcb,xlib,wayland device: 1 type: cpu
    name: llvmpipe (LLVM 18.1.8 256 bits) driver: mesa llvmpipe
    v: 24.1.4-arch1.2 (LLVM 18.1.8) device-ID: 10005:0000
    surfaces: xcb,xlib,wayland
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: NVIDIA GA102 High Definition Audio vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 04:00.1 chip-ID: 10de:1aef class-ID: 0403
  Device-2: AMD Starship/Matisse HD Audio vendor: Gigabyte
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 06:00.4 chip-ID: 1022:1487 class-ID: 0403
  Device-3: Corsair VOID Surround USB Sound Adapter
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 1-2:2 chip-ID: 1b1c:0a30 class-ID: 0300
    serial: <filter>
  API: ALSA v: k6.10.2-zen1-1-zen status: kernel-api tools: N/A
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.2.1 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL8125 2.5GbE vendor: Gigabyte driver: r8169 v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 port: f000 bus-ID: 03:00.0
    chip-ID: 10ec:8125 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IF-ID-1: wg0-mullvad state: unknown speed: N/A duplex: N/A mac: N/A
  Info: services: NetworkManager,systemd-timesyncd
Bluetooth:
  Device-1: Broadcom BCM20702A0 Bluetooth 4.0 driver: btusb v: 0.8 type: USB
    rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-6.3:7
    chip-ID: 0a5c:21e8 class-ID: fe01 serial: <filter>
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.1
    lmp-v: 7 status: discoverable: no pairing: no class-ID: 6c0104
Drives:
  Local Storage: total: 931.51 GiB used: 64.68 GiB (6.9%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/sda maj-min: 8:0 vendor: Mushkin model: MKNSSDRE1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: 5C scheme: GPT
Partition:
  ID-1: / raw-size: 429.69 GiB size: 429.69 GiB (100.00%)
    used: 64.65 GiB (15.0%) fs: btrfs dev: /dev/sda5 maj-min: 8:5
  ID-2: /boot/efi raw-size: 100 MiB size: 96 MiB (96.00%)
    used: 31 MiB (32.3%) fs: vfat dev: /dev/sda2 maj-min: 8:2
  ID-3: /home raw-size: 429.69 GiB size: 429.69 GiB (100.00%)
    used: 64.65 GiB (15.0%) fs: btrfs dev: /dev/sda5 maj-min: 8:5
  ID-4: /var/log raw-size: 429.69 GiB size: 429.69 GiB (100.00%)
    used: 64.65 GiB (15.0%) fs: btrfs dev: /dev/sda5 maj-min: 8:5
  ID-5: /var/tmp raw-size: 429.69 GiB size: 429.69 GiB (100.00%)
    used: 64.65 GiB (15.0%) fs: btrfs dev: /dev/sda5 maj-min: 8:5
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 15.56 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 12 dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 44.5 C mobo: 38.0 C
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB available: 15.56 GiB used: 1.37 GiB (8.8%)
  Processes: 269 Power: uptime: 19m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 6.18 GiB services: upowerd Init: systemd
    v: 256 default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1477 libs: 451 tools: octopi,pacseek,paru
    Compilers: clang: 18.1.8 gcc: 14.1.1 Shell: garuda-inxi default: fish
    v: 3.7.1 running-in: foot inxi: 3.3.35
Garuda (2.6.26-1):
  System install date:     2024-04-28
  Last full system update: 2024-07-29
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut nvidia-dkms
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:

My Hyprland Config:

########################################################################################
#AUTOGENERATED HYPR CONFIG.
#PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
#OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
########################################################################################

#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#

#autogenerated = 1 # remove this line to remove the warning

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor= DP-3, 2560x1440@59.95100, 0x0, 1.00

# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox

# Add networkmanager applet to tray in waybar
exec-once = nm-applet --indicator

# Set keyboard layout
exec-once = .local/bin/garuda-locale.sh

# Set monitor values. For own values, please comment with #
exec-once = .local/bin/mon.sh

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/

env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia

cursor {
    no_hardware_cursors = true
    allow_dumb_copy = true
}

input {
kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =
    numlock_by_default= true
    follow_mouse = 1

touchpad {
    natural_scroll = true
    tap-to-click = true
    disable_while_typing = true
}


    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(8f00ffee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    blur {
       enabled = true
       size = 5
       passes = 1
    }

    drop_shadow = true
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = true

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = true # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    #below line broke config and errored - commented out
    #new_is_master = true
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
}
misc {
	disable_hyprland_logo = true
	vrr=1
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
    #sensitivity = -0.5
}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, R, exec, hyprctl reload
bind = $mainMod, 36, exec, footclient
bind = $mainMod, T, exec, footclient
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, E, exec, nwgbar
bind = $mainMod, N, exec, thunar
bind = $mainMod SHIFT, 65, togglefloating,
bind = $mainMod, D, exec, wofi --show drun --allow-images
bind = $mainMod SHIFT, D, exec, nwg-drawer
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle

# Mainmod + Function keys
bind = $mainMod, F1, exec, firedragon
bind = $mainMod, F2, exec, thunderbird
bind = $mainMod, F3, exec, thunar
bind = $mainMod, F4, exec, geany
bind = $mainMod, F5, exec, github-desktop
bind = $mainMod, F6, exec, gparted
bind = $mainMod, F7, exec, inkscape
bind = $mainMod, F8, exec, blender
bind = $mainMod, F9, exec, meld
bind = $mainMod, F10, exec, joplin-desktop
bind = $mainMod, F11, exec, snapper-tools
bind = $mainMod, F12, exec, galculator

# 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

# 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, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move to workspace with focused container with ALT + SHIFT + [0-9]
bind = ALT SHIFT, 1, movetoworkspace, 1
bind = ALT SHIFT, 2, movetoworkspace, 2
bind = ALT SHIFT, 3, movetoworkspace, 3
bind = ALT SHIFT, 4, movetoworkspace, 4
bind = ALT SHIFT, 5, movetoworkspace, 5
bind = ALT SHIFT, 6, movetoworkspace, 6
bind = ALT SHIFT, 7, movetoworkspace, 7
bind = ALT SHIFT, 8, movetoworkspace, 8
bind = ALT SHIFT, 9, movetoworkspace, 9
bind = ALT SHIFT, 0, movetoworkspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 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

#background
exec-once = wpaperd

#status bar
exec-once = waybar
layerrule = blur , waybar
layerrule = ignorezero , waybar

# set volume (laptops only and may or may not work on PCs)
bind = ,122, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = ,123, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = ,121, exec, pactl set-sink-volume @DEFAULT_SINK@ 0%
# other bindings
bind = $mainMod, O, exec, firedragon
bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, F, fakefullscreen
bind = ,232,exec,brightnessctl -c backlight set 5%-
bind = ,233,exec,brightnessctl -c backlight set +5%
bind = $mainMod SHIFT,C, exec, killall -9 wpaperd && wpaperd

# Screenshots:

# https://github.com/hyprwm/contrib/blob/main/grimblast/grimblast.1.scd
# Print: All outputs
# SHIFT+Print: Select area
# $mainMod+Print: Current window
# $mainMod+Shfit+Print: Current output

bind = ,Print, exec, grimblast save screen && notify-send Screenshot captured
bind = SHIFT, Print, exec, grimblast save area && notify-send Selected\ area captured
bind = $mainMod, Print, exec, grimblast save active && notify-send Active\ window captured
bind = $mainMod SHIFT, Print, exec, grimblast output active && notify-send Output captured

# for resizing window
# will switch to a submap called resize
bind=$mainMod,R,submap,resize

# will start a submap called "resize"
submap=resize

# sets repeatable binds for resizing the active window
binde=,right,resizeactive,10 0
binde=,left,resizeactive,-10 0
binde=,up,resizeactive,0 -10
binde=,down,resizeactive,0 10

# use reset to go back to the global submap
bind=,escape,submap,reset

# will reset the submap, meaning end the current one and return to the global one
submap=reset

# to move window
bind = $mainMod SHIFT,up, movewindow, u
bind = $mainMod SHIFT,down, movewindow, d
bind = $mainMod SHIFT,left, movewindow, l
bind = $mainMod SHIFT,right, movewindow, r

# other blurings
blurls = wofi
blurls = thunar
blurls = gedit
blurls = gtk-layer-shell # for nwg-drawer
blurls = catfish
# window rules
windowrule = opacity 0.85 override 0.85 override,^(thunar)$
windowrule = opacity 0.85 override 0.85 override,^(gedit)$
windowrule = opacity 0.85 override 0.85 override,^(catfish)$
#window rules with evaluation
windowrulev2 = opacity 0.85 0.85,floating:1

exec-once = mako
exec-once =/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = foot --server
# experimental(might work might won't)

#pre executions (under development)
exec-once=exec xrdb -load ~/.Xresources
exec-once=copyq
exec-once=wl-paste -t text --watch clipman store
exec-once=wl-clipboard-history -t

#video play paues bindings
bind=,172,exec,playerctl play-pause
bind=,171,exec,playerctl next
bind=,173,exec,playerctl previous

# Use gtk-settings
exec-once = apply-gsettings

# Install Garuda Hyprland
bind = $mainMod, I, exec, .local/bin/calamares.sh

There might be a far more better solution than my suggestion so do this as a last resort.

  1. Do not follow any mouse setting tutorial for hyprland e.g modifying the config
  2. Uninstall anything to do with hyprland > everything {pacman -Rcs}
  3. Re-install hyprland '{pacman -S garuda-hyprland-settings
  4. Is the mouse working? No?
  5. Uninstall anything to do with hyprland
  6. Install another desktop environement like ‘garuda-cinnamon-settings’
  7. Set your preffered mouse from there
  8. Install ‘{garuda-hyprland-settings}’ then you can remove the desktop environment you installed
  9. Does it work Yes/No

N.b do this as a last resort
I have no resonable explanation why this worked for me

1 Like

@Yada was correct. Something happened to one of my hyprland packages. What I did specifically to fix the issues was run these commands and select yes on all questions:

pacman -Scc hyprland
pacman -S hyprland
pacman -Scc garuda-hyprland-settings
pacman -S garuda-hyprland-settings
pacman -Scc hyprcursor
pacman -S hyprcursor

Then I removed the Hyprland Wiki recommended lines from my hyprland config:

env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia

cursor {
    no_hardware_cursors = true
}

This step wasn’t really necessary. Having these lines in my config had no effect. I forgot to remove these lines before restarting my machine and my mouse cursor returned to normal anyway. However, I still removed these lines anyway.

Then restart your machine. My mouse cursor returned to normal.

Thank you @Yada! Cheers!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.