Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cursor becomes tiny when switching apps (xcursor) #6983

Closed
sudoAlphaX opened this issue Jul 22, 2024 · 26 comments · Fixed by #7178
Closed

Cursor becomes tiny when switching apps (xcursor) #6983

sudoAlphaX opened this issue Jul 22, 2024 · 26 comments · Fixed by #7178
Labels
bug Something isn't working

Comments

@sudoAlphaX
Copy link

Regression?

Yes

System Info and Version

System/Version info
Hyprland, built from branch main at commit 4c3b03516209a49244a8f044143c1162752b8a7a  (pointer/hw: rollback the swapchain on multiple renders without a commit).
Date: Mon Jul 22 22:49:37 2024
Tag: v0.41.2-75-g4c3b0351, commits: 4961

flags: (if any)


System Information:
System name: Linux
Node name: devbox
Release: 6.9.10-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Thu, 18 Jul 2024 18:06:13 +0000


GPU information: 
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 530 [8086:191b] (rev 06) (prog-if 00 [VGA controller])


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:

======Config-Start======


Config File: /home/alpha/.config/hypr/hyprland.conf: Read Succeeded
# Hyprland config file

# This config file will get the config data from various other files

$confdir = $HOME/.config/hypr

$terminal = alacritty
$terminalOpen = $terminal -e
$fileManager = $terminalOpen yazi
$menu = $HOME/.config/rofi/scripts/launcher_t4
$browser = librewolf
$musicplayer = $terminalOpen musikcube
$powermenu = $HOME/.config/rofi/scripts/powermenu_t1
$lockscreen = hyprlock
$clipboardMenu = rofi -dmenu -theme $HOME/.config/rofi/launchers/type-4/style-2.rasi

env = DESKTOP_SESSION,hyprland

exec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1
exec-once = find $HOME/.config/waybar/ | entr -s "killall waybar; waybar &"
exec-once = nm-applet
exec-once = sleep 5 && keepassxc
exec-once = sleep 5 && $confdir/scripts/hyprpaper-gen.sh -r -s
exec-once = echo $confdir/hypridle.conf | entr -s "killall hypridle; hypridle &"
exec-once = kdeconnect-indicator
exec-once = safeeyes
exec-once = $confDir/scripts/hypr-portals.sh
exec-once = find $HOME/.config/dunst/ | entr -s "killall dunst; dunst &"

exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = cliphist wipe

exec-once=[workspace 2] $browser
exec-once=[workspace 1 silent] $terminalOpen btop
exec-once=[workspace special:s10 silent] thunderbird
exec-once=node $HOME/.dotfiles/assets/utilities/arrpc/src


source = $confdir/display.conf
source = $confdir/looks.conf
source = $confdir/input.conf
source = $confdir/keybinds.conf
source = $confdir/workspaces.conf
source = $confdir/plugins.conf


Config File: /home/alpha/.config/hypr/display.conf: Read Succeeded
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland


monitor=eDP-1,1920x1080,auto,1.25
monitor=,preferred,auto,1


Config File: /home/alpha/.config/hypr/looks.conf: Read Succeeded
# https://wiki.hyprland.org/Configuring/Variables/#general
general { 
    gaps_in = 2
    gaps_out = 10

    border_size = 3 

    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    resize_on_border = true
    extend_border_grab_area = 12
    no_border_on_floating = false

    allow_tearing = false

    layout = dwindle
}

# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
    rounding = 10

    # Change transparency of focused and unfocused windows
    active_opacity = 1.0
    inactive_opacity = 1.0

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

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        passes = 1
        xray = false
        popups = false

        vibrancy = 0.1696
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
    enabled = true
    first_launch_animation = true

    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 = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

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

# https://wiki.hyprland.org/Configuring/Variables/#misc
misc { 
    new_window_takes_over_fullscreen = 2
    force_default_wallpaper = -1
	animate_manual_resizes = true
    disable_hyprland_logo = false
	focus_on_activate = true
	mouse_move_focuses_monitor = false
	close_special_on_empty = true
}

xwayland {
	use_nearest_neighbor = true
	force_zero_scaling = true
}


Config File: /home/alpha/.config/hypr/input.conf: Read Succeeded
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    numlock_by_default = true

    follow_mouse = 2
    natural_scroll = false

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.

    touchpad {
        disable_while_typing = true
        natural_scroll = true
        middle_button_emulation = true
		tap_button_map = lrm
		clickfinger_behavior = true
        tap-to-click = true
		tap-and-drag = true
    }

    touchdevice {
        enabled = true
    
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
    workspace_swipe = true
    workspace_swipe_fingers = 3
    workspace_swipe_touch = false
    workspace_swipe_invert = true
    workspace_swipe_forever = true  # don't clamp at neighbouring workspace
    workspace_swipe_cancel_ratio = 0.35
    workspace_swipe_create_new = true
    workspace_swipe_direction_lock = true 
    workspace_swipe_direction_lock_threshold = 10
}

cursor {
	inactive_timeout = 10
	hide_on_key_press = true
	hide_on_touch = true
}

binds {
	workspace_center_on = 1
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
#device {
#    name = epic-mouse-v1
#    sensitivity = -0.5
#}

$TOUCHPAD_ENABLED = true

device {
	name = dll07d0:01-044e:120b
	enabled = $TOUCHPAD_ENABLED
}


Config File: /home/alpha/.config/hypr/keybinds.conf: Read Succeeded
# https://wiki.hyprland.org/Configuring/Keywords/

$mainMod = SUPER    # Set 'SUPER' Key as Mainmod key

bind = $mainMod, w, exec, $terminal
bind = $mainMod, q, killactive
bind = $mainMod, f, fullscreen, 1
bind = $mainMod + SHIFT, f, fullscreen, 0
bind = $mainMod, p, togglefloating
bind = $mainMod + SHIFT, p, pin
bind = $mainMod, b, exec, $browser
bind = $mainMod, r, exec, $menu
bind = $mainMod + ALT, r, exec, $menu_all
bind = $mainMod, t, togglesplit
bind = $mainMod, TAB, workspace, previous
bind = $mainMod + SHIFT, TAB, movetoworkspace, previous
bind = $mainMod, e, exec, $fileManager
bind = $mainMod + CTRL, x, exec, kill -9 $(hyprctl -j activewindow | jq .pid);

# Navigating and moving windows to workspaces
bind = $mainMod + CTRL, code:35, workspace, r+1  # use ] to go to the next workspace
bind = $mainMod + CTRL, code:34, workspace, r-1  # use [ to go to the previous workspace
bind = $mainMod, code:35, workspace, e+1  # use ] to go to the next open workspace
bind = $mainMod, code:34, workspace, e-1  # use [ to go to the previous open workspace
bind = $mainMod + SHIFT, code:35, movetoworkspace, r+1 # move the current window to the next workspace
bind = $mainMod + SHIFT, code:34, movetoworkspace, r-1 # move the current window to the previous workspace
bind = $mainMod + CTRL +SHIFT, code:35, movetoworkspace, e+1 # move the current window to the next open workspace
bind = $mainMod + CTRL + SHIFT, code:34, movetoworkspace, e-1 # move the current window to the previous open workspace
bind = $mainMod, o, workspace, empty   # go to an empty workspace
bind = $mainMod + SHIFT, o, movetoworkspace, empty   # move current window to an empty workspace

# Move focus with mainMod + vim keybinds
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d

# Move focus with mainMod + vim keybinds
binde = $mainMod + SHIFT, h, exec, echo "l" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, l, exec, echo "r" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, k, exec, echo "u" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, j, exec, echo "d" 20 | $confdir/scripts/window_movement.sh

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

# Resizing current window
binde=$mainMod,right,resizeactive,10 0
binde=$mainMod,left,resizeactive,-10 0
binde=$mainMod,up,resizeactive,0 -10
binde=$mainMod,down,resizeactive,0 10

binde=$mainMod + SHIFT,right,resizeactive,50 0
binde=$mainMod + SHIFT,left,resizeactive,-50 0
binde=$mainMod + SHIFT,up,resizeactive,0 -50
binde=$mainMod + SHIFT,down,resizeactive,0 50

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Scroll through all workspaces with CTRL + mainMod + scroll
bind = $mainMod + CTRL, mouse_down, workspace, e+1
bind = $mainMod + CTRL, mouse_up, workspace, e-1

# Special workspaces
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod + SHIFT, S, movetoworkspace, special:magic
bind = $mainMod, D, exec, hyprctl dispatch togglespecialworkspace && hyprctl dispatch togglespecialworkspace
bind = $mainMod + SHIFT, D, movetoworkspace, e+0     # Move the current window from special workspace to active workspace

bind = $mainMod + CTRL, 1, togglespecialworkspace, s1
bind = $mainMod + CTRL, 2, togglespecialworkspace, s2
bind = $mainMod + CTRL, 3, togglespecialworkspace, s3
bind = $mainMod + CTRL, 4, togglespecialworkspace, s4
bind = $mainMod + CTRL, 5, togglespecialworkspace, s5
bind = $mainMod + CTRL, 6, togglespecialworkspace, s6
bind = $mainMod + CTRL, 7, togglespecialworkspace, s7
bind = $mainMod + CTRL, 8, togglespecialworkspace, s8
bind = $mainMod + CTRL, 9, togglespecialworkspace, s9
bind = $mainMod + CTRL, 0, togglespecialworkspace, s10
bind = $mainMod + CTRL + SHIFT, 1, movetoworkspace, special:s1
bind = $mainMod + CTRL + SHIFT, 2, movetoworkspace, special:s2
bind = $mainMod + CTRL + SHIFT, 3, movetoworkspace, special:s3
bind = $mainMod + CTRL + SHIFT, 4, movetoworkspace, special:s4
bind = $mainMod + CTRL + SHIFT, 5, movetoworkspace, special:s5
bind = $mainMod + CTRL + SHIFT, 6, movetoworkspace, special:s6
bind = $mainMod + CTRL + SHIFT, 7, movetoworkspace, special:s7
bind = $mainMod + CTRL + SHIFT, 8, movetoworkspace, special:s8
bind = $mainMod + CTRL + SHIFT, 9, movetoworkspace, special:s9
bind = $mainMod + CTRL + SHIFT, 0, movetoworkspace, special:s10

# Volume controls
bindel =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_SINK@ 0.02+; notify-send --category=device --urgency=low --hint=int:value:$(pactl get-sink-volume $(pactl get-default-sink) | grep -oP '\d?\d?\d%' | head --lines=1 | sed 's/%//g') volume_event
bindel =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_SINK@ 0.02-; notify-send --category=device --urgency=low --hint=int:value:$(pactl get-sink-volume $(pactl get-default-sink) | grep -oP '\d?\d?\d%' | head --lines=1 | sed 's/%//g') volume_event 
bindel =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle

# mic mute toggle
bindl =, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle

# media controls
bindl =, XF86AudioPlay, exec, playerctl play
bindl=, XF86AudioPause, exec, playerctl pause
bindl=, XF86AudioNext, exec, playerctl next
bindl=, XF86AudioPrev, exec, playerctl previous

# clipboard manager binds (keyboard history)
bind = $mainMod, v, exec, cliphist list | $clipboardMenu | cliphist decode | wl-copy

# power controls
bindl = $mainMod + SHIFT, q, exec, $powermenu
bindl = CTRL + ALT, code:119, exec, hyprctl dispatch exit
bindl = ALT, f4, exec, $powermenu
bind = $mainMod + CTRL + ALT, l, exec, systemd-inhibit bash $confdir/scripts/hyprlock-transparent.sh
bind = $mainMod + ALT, l, exec, $lockscreen

# Brightness controls
bindel =, XF86MonBrightnessUp, exec, val=$(brightnessctl --device='intel_backlight' -m s +1%); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel =, XF86MonBrightnessDown, exec, val=$(brightnessctl --device='intel_backlight' --min-value=75 -m s 1%-); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel = SHIFT, XF86MonBrightnessUp, exec, val=$(brightnessctl --device='intel_backlight' -m s +5%); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel = SHIFT, XF86MonBrightnessDown, exec, val=$(brightnessctl --device='intel_backlight' --min-value=75 -m s 5%-); notify-send --urgency=low --category=device --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event

# Screenshots
bind = $mainMod + CTRL, S, exec, grim -g "$(slurp -d)" - | wl-copy
bind = , Print, exec, grim - | wl-copy; notify-send --urgency=low "Screenshot copied to clipboard"
bind = SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy; notify-send --urgency=low "Screenshot copied to clipboard"
bind = CTRL, Print, exec, window=$(hyprctl activewindow -j); filename="$(date +%Y%m%d_%H%M%S)_$(echo $window | jq -r .class).png"; grim "$HOME/Pictures/Screenshots/$filename"; notify-send --urgency=low "Screenshot saved under: $filename"
bind = CTRL + SHIFT, Print, exec, window=$(hyprctl activewindow -j); filename="$(date +%Y%m%d_%H%M%S)_$(echo $window | jq -r .class).png"; grim -g "$(slurp -d)" "$HOME/Pictures/Screenshots/$filename"; notify-send --urgency=low "Screenshot saved under: $filename"

# Screenrecord
bind = ALT, Print, exec, $confdir/scripts/screen-record.sh true false
bind = ALT + SHIFT, Print, exec, $confdir/scripts/screen-record.sh true true
bind = ALT + CTRL, Print, exec, $confdir/scripts/screen-record.sh false false
bind = ALT + CTRL + SHIFT, Print, exec, $confdir/scripts/screen-record.sh false true

# Change wallpaper
bind = $mainMod + Alt, W, exec, $confdir/scripts/hyprpaper-gen.sh -r -S

# Bind to toggle touchpad
bind =, XF86Search, exec, $confdir/scripts/touchpad-toggle.sh


Config File: /home/alpha/.config/hypr/workspaces.conf: Read Succeeded
workspace = special:music, on-created-empty:[workspace special:music] $musicplayer, persistent:false
bind = $mainMod, m, togglespecialworkspace, music
workspace = special:magic, on-created-empty:$browser --new-window "https://discord.com/channels/@me", persistent:false

layerrule = blur,waybar

windowrulev2 = stayfocused, class:^(org.kde.kwalletd6)$
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.

windowrule = float, title:^(Picture-in-Picture)$
windowrule = pin, title:^(Picture-in-Picture)$

windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(Unlock Database - KeePassXC)
windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(KeePassXC -  Access Request)
windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(KeePassXC - Browser Access Request)


Config File: /home/alpha/.config/hypr/plugins.conf: Read Succeeded
# exec-once = hyprpm reload -n

# bind = ALT, grave, hyprexpo:expo, toggle # can be: toggle, off/disable or on/enable
# bind = $mainMod, grave, overview:toggle

plugin {
    hyprexpo {
        columns = 3
        gap_size = 5
        bg_col = rgb(111111)
        workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1

        enable_gesture = true # laptop touchpad, 4 fingers
        gesture_distance = 300 # how far is the "max"
        gesture_positive = true # positive = swipe down. Negative = swipe up.
    }
	
	# overview {
	# 	disableGestures = true
	# 	reverseSwipe = true
	# 	showSpecialWorkspace = false
	# }
}


======Config-End========

Description

Sometimes, while changing workspaces or while moving the cursor in and out of different apps, the cursor changes its size and becomes tiny.

How to reproduce

Move the cursor into an empty workspace

Crash reports, logs, images, videos

20240722_231419_librewolf.mp4
  • Not using any cursor themes
  • Installed hyprcursor from git (AUR package hyprcursor-git)
@sudoAlphaX sudoAlphaX added the bug Something isn't working label Jul 22, 2024
@BRS5672023
Copy link

BRS5672023 commented Jul 22, 2024

waybar and firefox follows the gsettings, I'd assume qt apps behave like on desktop with tiny cursors.. and I'm not having this issue with hyprcursor-git, since u don't have hyprcursor themes installed, will it help to comment out the line env = HYPRCURSOR_SIZE,24

I still cannot reproduce this issue with this line added to my conf, and I just noticed you're on git branch so disregard my comment..

@sudoAlphaX
Copy link
Author

will it help to comment out the line env = HYPRCURSOR_SIZE,24

I haven't realized this line existed. I yanked an example config from hyprland wiki long ago when I was setting up my config. I have commented out that line and still have the issue. Moreover, that line existed from the very beginning of using hyprland so im sure recent commits have caused the issue.

Instances of the cursor size turning tiny: opening a new workspace with no windows (always), having the cursor on hyprland window border, moving the cursor from firefox (librewolf) to alacritty (terminal emulator). It doesnt turn tiny when moving from waybar to alacritty.

@warrenfalk
Copy link

so im sure recent commits have caused the issue.

Yep, I just came here because immediately after updating to the latest git, I now have this same issue.

@vaxerski
Copy link
Member

You are likely using an XCursor. Have you tried installing a hyprcursor theme?

@vaxerski vaxerski changed the title Cursor becomes tiny when switching apps (hyprcursor) Cursor becomes tiny when switching apps (xcursor) Jul 24, 2024
@coffebar
Copy link
Contributor

I tried installed hyprcursor theme hyprcursor-dracula-kde-git and hyprcursor-git package, and it changes cursor for that half of windows that was with a tiny cursor.

env = HYPRCURSOR_THEME,hyprcursor_Dracula
env = HYPRCURSOR_SIZE,48

I made size bigger, but cursors are different theme from window to window.
How to make them consistent?

Btw theme sucks and there is no variety to choose

@vaxerski
Copy link
Member

you'll have to set the XCursor theme to be the same theme as your hyprcursor theme, just compiled for X.

@vaxerski
Copy link
Member

patch.txt
try this patch for small xcursor

@coffebar
Copy link
Contributor

That's my path to consistent cursors, may be useful for others:

# 1) install the only cursor package that supports x and hyprland at the same time
yay -S bibata-cursor-git

# 2) set cursor for gtk-2
gsettings set org.gnome.desktop.interface cursor-theme Bibata-Modern-Classic

# 3) TODO: set cursors for gtk-3 via lxappearance to Bibata-Modern-Classic

# 4) edit hyprland.conf

hyprland.conf

env = HYPRCURSOR_THEME,Bibata-Modern-Classic
# without HYPRCURSOR_SIZE

without patch sizes ok

@nktnet1
Copy link
Contributor

nktnet1 commented Jul 24, 2024

I had this exact problem - was also a regression when Hyprland switched from wlroots-hyprland to aquamarine. Wrote up this workaround it after some trial and error.

Same as everything mentioned above, but I've documented the full steps here for using the rose-pine theme on Arch:

Perhaps check if this works first before exploring other themes to help isolate the issue.

@HK-Sepuri
Copy link

with normal hyprland packages like hyprland, hyprcursor etc i set both hyrpcursor and xcursor to same theme

env = HYPRCURSOR_THEME, Bibata-Original-Amber
env = HYPRCURSOR_SIZE, 20
env = XCURSOR_THEME,Bibata-Original-Amber
env = XCURSOR_SIZE, 20

but when i installed all git version to use hyprpm the cursor becomes tiny and no theme when moved to different apps

@sudoAlphaX
Copy link
Author

sudoAlphaX commented Jul 26, 2024

You are likely using an XCursor. Have you tried installing a hyprcursor theme?

I dont think im using a xcursor theme. Ive been using this same setup since many months.
I uninstalled the -git versions of hypr suite and installed releases from the arch repos and used it for a few days. The cursor size wasnt a problem. Reinstalling the -git versions beings back the inconsistent cursors.

20240726_193029_Alacritty.mp4

Ive followed @coffebar guide to consistent cursors but it seems either xcursor or hyprcursor themes arent working in some cases. Ive confirmed this by commenting either theme env vars and restarting hyprland. It produces the same results as the video.

Also, all the apps shown in the demonstration are wayland apps (alacritty, librewolf (firefox fork) with MOZ_ENABLE_WAYLAND=1, alacritty terminal emulator, waybar and of course hyprland (built from commit 33a5c8c)

@vaxerski
Copy link
Member

I posted a patch 2 days ago and nobody bothered to try it, so I will ignore your laments

@HK-Sepuri
Copy link

I posted a patch 2 days ago and nobody bothered to try it, so I will ignore your laments

have no idea where to apply that patch , i am newbie . so have zero idea where to paste it or to add into any other file

@nktnet1
Copy link
Contributor

nktnet1 commented Jul 27, 2024

@HK-Sepuri

Here's how you can do it when building from source:

  1. Clone Hyprland and cd into it as per the installation instructions:

    git clone --recursive https://github.com/hyprwm/Hyprland
    cd Hyprland

    (ensure you have all the dependencies as listed on that page for your distribution)

  2. Download the patch.txt file and place it at the root of the Hyprland repository that you've just cloned

  3. Use the patch command to apply this patch file

    patch -p1 < patch.txt
    

    you can sanity-check that the patch has been applied correctly by viewing the changes with

    git diff
  4. Rebuild and re-install Hyprland

    make all && sudo make install
    
  5. Restart Hyprland (note: make sure you are using the version that was built and installed from source, and not one that was installed using a package manager or AUR helper).


As an aside, you can revert the patch with

patch -p1 -R < patch.txt

@HK-Sepuri
Copy link

@nktnet1 i actually installed from aur(Arch) , hyprland-git version , ill revert back to hyprland version (not git one) that works well. Thanks for help :)

@HK-Sepuri
Copy link

@nktnet1
#6320 (comment)
This worked! Thank you ! :)

@sudoAlphaX
Copy link
Author

try this patch for small xcursor

Applied that patch and built Hyprland, still same results.

System/Version info

Hyprland, built from branch main at commit a4b8e3808b29f4861601ffc859241f46da5aa980 (apply xcursor patch).
Date: Sat Jul 27 10:21:35 2024
Tag: v0.41.2-100-ga4b8e380, commits: 4986

flags: (if any)

System Information:
System name: Linux
Node name: devbox
Release: 6.10.1-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Wed, 24 Jul 2024 22:25:43 +0000

GPU information:
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 530 [8086:191b] (rev 06) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/alpha/.config/hypr/hyprland.conf: Read Succeeded

Hyprland config file

This config file will get the config data from various other files

$confdir = $HOME/.config/hypr

$terminal = alacritty
$terminalOpen = $terminal -e
$fileManager = $terminalOpen yazi
$menu = $HOME/.config/rofi/scripts/launcher_t4
$browser = librewolf
$musicplayer = $terminalOpen musikcube
$powermenu = $HOME/.config/rofi/scripts/powermenu_t1
$lockscreen = hyprlock
$clipboardMenu = rofi -dmenu -theme $HOME/.config/rofi/launchers/type-4/style-2.rasi

env = DESKTOP_SESSION,hyprland

exec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1
exec-once = find $HOME/.config/waybar/ | entr -s "killall waybar; waybar &"
exec-once = nm-applet
exec-once = sleep 5 && keepassxc
exec-once = sleep 5 && $confdir/scripts/hyprpaper-gen.sh -r -s
exec-once = echo $confdir/hypridle.conf | entr -s "killall hypridle; hypridle &"
exec-once = kdeconnect-indicator
exec-once = safeeyes
exec-once = $confDir/scripts/hypr-portals.sh
exec-once = find $HOME/.config/dunst/ | entr -s "killall dunst; dunst &"

exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = cliphist wipe

exec-once=[workspace 2] $browser
exec-once=[workspace 1 silent] $terminalOpen btop
exec-once=[workspace special:s10 silent] thunderbird
exec-once=node $HOME/.dotfiles/assets/utilities/arrpc/src

source = $confdir/display.conf
source = $confdir/looks.conf
source = $confdir/input.conf
source = $confdir/keybinds.conf
source = $confdir/workspaces.conf
source = $confdir/plugins.conf

Config File: /home/alpha/.config/hypr/display.conf: Read Succeeded
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland

monitor=eDP-1,1920x1080,auto,1.25
monitor=,preferred,auto,1

Config File: /home/alpha/.config/hypr/looks.conf: Read Succeeded

https://wiki.hyprland.org/Configuring/Variables/#general

general {
gaps_in = 2
gaps_out = 10

border_size = 3 

col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)

resize_on_border = true
extend_border_grab_area = 12
no_border_on_floating = false

allow_tearing = false

layout = dwindle

}

https://wiki.hyprland.org/Configuring/Variables/#decoration

decoration {
rounding = 10

# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0

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

# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
    enabled = true
    passes = 1
    xray = false
    popups = false

    vibrancy = 0.1696
}

}

https://wiki.hyprland.org/Configuring/Variables/#animations

animations {
enabled = true
first_launch_animation = true

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 = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default

}

See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more

dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}

https://wiki.hyprland.org/Configuring/Variables/#misc

misc {
new_window_takes_over_fullscreen = 2
force_default_wallpaper = -1
animate_manual_resizes = true
disable_hyprland_logo = false
focus_on_activate = true
mouse_move_focuses_monitor = false
close_special_on_empty = true
}

xwayland {
use_nearest_neighbor = true
force_zero_scaling = true
}

Config File: /home/alpha/.config/hypr/input.conf: Read Succeeded

https://wiki.hyprland.org/Configuring/Variables/#input

input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =

numlock_by_default = true

follow_mouse = 2
natural_scroll = false

sensitivity = 0 # -1.0 - 1.0, 0 means no modification.

touchpad {
    disable_while_typing = true
    natural_scroll = true
    middle_button_emulation = true
	tap_button_map = lrm
	clickfinger_behavior = true
    tap-to-click = true
	tap-and-drag = true
}

touchdevice {
    enabled = true

}

}

https://wiki.hyprland.org/Configuring/Variables/#gestures

gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_touch = false
workspace_swipe_invert = true
workspace_swipe_forever = true # don't clamp at neighbouring workspace
workspace_swipe_cancel_ratio = 0.35
workspace_swipe_create_new = true
workspace_swipe_direction_lock = true
workspace_swipe_direction_lock_threshold = 10
}

cursor {
inactive_timeout = 10
hide_on_key_press = true
hide_on_touch = true
}

binds {
workspace_center_on = 1
}

Example per-device config

See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more

#device {

name = epic-mouse-v1

sensitivity = -0.5

#}

$TOUCHPAD_ENABLED = true

device {
name = dll07d0:01-044e:120b
enabled = $TOUCHPAD_ENABLED
}

Config File: /home/alpha/.config/hypr/keybinds.conf: Read Succeeded

https://wiki.hyprland.org/Configuring/Keywords/

$mainMod = SUPER # Set 'SUPER' Key as Mainmod key

bind = $mainMod, w, exec, $terminal
bind = $mainMod + SHIFT, w, exec, [float] $terminal
bind = $mainMod, q, killactive
bind = $mainMod, f, fullscreen, 1
bind = $mainMod + SHIFT, f, fullscreen, 0
bind = $mainMod, p, togglefloating
bind = $mainMod + SHIFT, p, pin
bind = $mainMod, b, exec, $browser
bind = $mainMod, r, exec, $menu
bind = $mainMod + ALT, r, exec, $menu_all
bind = $mainMod, t, togglesplit
bind = $mainMod, TAB, workspace, previous
bind = $mainMod + SHIFT, TAB, movetoworkspace, previous
bind = $mainMod, e, exec, $fileManager
bind = $mainMod + CTRL, x, exec, kill -9 $(hyprctl -j activewindow | jq .pid);

Navigating and moving windows to workspaces

bind = $mainMod + CTRL, code:35, workspace, r+1 # use ] to go to the next workspace
bind = $mainMod + CTRL, code:34, workspace, r-1 # use [ to go to the previous workspace
bind = $mainMod, code:35, workspace, e+1 # use ] to go to the next open workspace
bind = $mainMod, code:34, workspace, e-1 # use [ to go to the previous open workspace
bind = $mainMod + SHIFT, code:35, movetoworkspace, r+1 # move the current window to the next workspace
bind = $mainMod + SHIFT, code:34, movetoworkspace, r-1 # move the current window to the previous workspace
bind = $mainMod + CTRL +SHIFT, code:35, movetoworkspace, e+1 # move the current window to the next open workspace
bind = $mainMod + CTRL + SHIFT, code:34, movetoworkspace, e-1 # move the current window to the previous open workspace
bind = $mainMod, o, workspace, empty # go to an empty workspace
bind = $mainMod + SHIFT, o, movetoworkspace, empty # move current window to an empty workspace

Move focus with mainMod + vim keybinds

bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d

Move focus with mainMod + vim keybinds

binde = $mainMod + SHIFT, h, exec, echo "l" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, l, exec, echo "r" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, k, exec, echo "u" 20 | $confdir/scripts/window_movement.sh
binde = $mainMod + SHIFT, j, exec, echo "d" 20 | $confdir/scripts/window_movement.sh

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 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, 6, movetoworkspace, 6
bind = $mainMod + SHIFT, 7, movetoworkspace, 7
bind = $mainMod + SHIFT, 8, movetoworkspace, 8
bind = $mainMod + SHIFT, 9, movetoworkspace, 9
bind = $mainMod + SHIFT, 0, movetoworkspace, 10

Resizing current window

binde=$mainMod,right,resizeactive,10 0
binde=$mainMod,left,resizeactive,-10 0
binde=$mainMod,up,resizeactive,0 -10
binde=$mainMod,down,resizeactive,0 10

binde=$mainMod + SHIFT,right,resizeactive,50 0
binde=$mainMod + SHIFT,left,resizeactive,-50 0
binde=$mainMod + SHIFT,up,resizeactive,0 -50
binde=$mainMod + SHIFT,down,resizeactive,0 50

Move/resize windows with mainMod + LMB/RMB and dragging

bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

Scroll through existing workspaces with mainMod + scroll

bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

Scroll through all workspaces with CTRL + mainMod + scroll

bind = $mainMod + CTRL, mouse_down, workspace, e+1
bind = $mainMod + CTRL, mouse_up, workspace, e-1

Special workspaces

bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod + SHIFT, S, movetoworkspace, special:magic
bind = $mainMod, D, exec, hyprctl dispatch togglespecialworkspace && hyprctl dispatch togglespecialworkspace
bind = $mainMod + SHIFT, D, movetoworkspace, e+0 # Move the current window from special workspace to active workspace

bind = $mainMod + CTRL, 1, togglespecialworkspace, s1
bind = $mainMod + CTRL, 2, togglespecialworkspace, s2
bind = $mainMod + CTRL, 3, togglespecialworkspace, s3
bind = $mainMod + CTRL, 4, togglespecialworkspace, s4
bind = $mainMod + CTRL, 5, togglespecialworkspace, s5
bind = $mainMod + CTRL, 6, togglespecialworkspace, s6
bind = $mainMod + CTRL, 7, togglespecialworkspace, s7
bind = $mainMod + CTRL, 8, togglespecialworkspace, s8
bind = $mainMod + CTRL, 9, togglespecialworkspace, s9
bind = $mainMod + CTRL, 0, togglespecialworkspace, s10
bind = $mainMod + CTRL + SHIFT, 1, movetoworkspace, special:s1
bind = $mainMod + CTRL + SHIFT, 2, movetoworkspace, special:s2
bind = $mainMod + CTRL + SHIFT, 3, movetoworkspace, special:s3
bind = $mainMod + CTRL + SHIFT, 4, movetoworkspace, special:s4
bind = $mainMod + CTRL + SHIFT, 5, movetoworkspace, special:s5
bind = $mainMod + CTRL + SHIFT, 6, movetoworkspace, special:s6
bind = $mainMod + CTRL + SHIFT, 7, movetoworkspace, special:s7
bind = $mainMod + CTRL + SHIFT, 8, movetoworkspace, special:s8
bind = $mainMod + CTRL + SHIFT, 9, movetoworkspace, special:s9
bind = $mainMod + CTRL + SHIFT, 0, movetoworkspace, special:s10

Volume controls

bindel =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_SINK@ 0.02+; notify-send --category=device --urgency=low --hint=int:value:$(pactl get-sink-volume $(pactl get-default-sink) | grep -oP '\d?\d?\d%' | head --lines=1 | sed 's/%//g') volume_event
bindel =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_SINK@ 0.02-; notify-send --category=device --urgency=low --hint=int:value:$(pactl get-sink-volume $(pactl get-default-sink) | grep -oP '\d?\d?\d%' | head --lines=1 | sed 's/%//g') volume_event
bindel =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle

mic mute toggle

bindl =, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle

media controls

bindl =, XF86AudioPlay, exec, playerctl play
bindl=, XF86AudioPause, exec, playerctl pause
bindl=, XF86AudioNext, exec, playerctl next
bindl=, XF86AudioPrev, exec, playerctl previous

clipboard manager binds (keyboard history)

bind = $mainMod, v, exec, cliphist list | $clipboardMenu | cliphist decode | wl-copy

power controls

bindl = $mainMod + SHIFT, q, exec, $powermenu
bindl = CTRL + ALT, code:119, exec, hyprctl dispatch exit
bindl = ALT, f4, exec, $powermenu
bind = $mainMod + CTRL + ALT, l, exec, systemd-inhibit bash $confdir/scripts/hyprlock-transparent.sh
bind = $mainMod + ALT, l, exec, $lockscreen

Brightness controls

bindel =, XF86MonBrightnessUp, exec, val=$(brightnessctl --device='intel_backlight' -m s +1%); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel =, XF86MonBrightnessDown, exec, val=$(brightnessctl --device='intel_backlight' --min-value=75 -m s 1%-); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel = SHIFT, XF86MonBrightnessUp, exec, val=$(brightnessctl --device='intel_backlight' -m s +5%); notify-send --category=device --urgency=low --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event
bindel = SHIFT, XF86MonBrightnessDown, exec, val=$(brightnessctl --device='intel_backlight' --min-value=75 -m s 5%-); notify-send --urgency=low --category=device --hint=int:value:$(($(echo $val | cut --delimiter="," --fields=3)*100/$(echo $val | cut --delimiter="," --fields=5))) brightness_event

Screenshots

bind = $mainMod + CTRL, S, exec, grim -g "$(slurp -d)" - | wl-copy
bind = , Print, exec, grim - | wl-copy; notify-send --urgency=low "Screenshot copied to clipboard"
bind = SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy; notify-send --urgency=low "Screenshot copied to clipboard"
bind = CTRL, Print, exec, window=$(hyprctl activewindow -j); filename="$(date +%Y%m%d_%H%M%S)$(echo $window | jq -r .class).png"; grim "$HOME/Pictures/Screenshots/$filename"; notify-send --urgency=low "Screenshot saved under: $filename"
bind = CTRL + SHIFT, Print, exec, window=$(hyprctl activewindow -j); filename="$(date +%Y%m%d
%H%M%S)_$(echo $window | jq -r .class).png"; grim -g "$(slurp -d)" "$HOME/Pictures/Screenshots/$filename"; notify-send --urgency=low "Screenshot saved under: $filename"

Screenrecord

bind = ALT, Print, exec, $confdir/scripts/screen-record.sh true false
bind = ALT + SHIFT, Print, exec, $confdir/scripts/screen-record.sh true true
bind = ALT + CTRL, Print, exec, $confdir/scripts/screen-record.sh false false
bind = ALT + CTRL + SHIFT, Print, exec, $confdir/scripts/screen-record.sh false true

Change wallpaper

bind = $mainMod + Alt, W, exec, $confdir/scripts/hyprpaper-gen.sh -r -S

Bind to toggle touchpad

bind =, XF86Search, exec, $confdir/scripts/touchpad-toggle.sh

Config File: /home/alpha/.config/hypr/workspaces.conf: Read Succeeded
workspace = special:music, on-created-empty:[workspace special:music] $musicplayer, persistent:false
bind = $mainMod, m, togglespecialworkspace, music
workspace = special:magic, on-created-empty:$browser --new-window "https://discord.com/channels/@me", persistent:false

layerrule = blur,waybar

windowrulev2 = stayfocused, class:^(org.kde.kwalletd6)$
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.

windowrule = float, title:^(Picture-in-Picture)$
windowrule = pin, title:^(Picture-in-Picture)$

windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(Unlock Database - KeePassXC)
windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(KeePassXC - Access Request)
windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(KeePassXC - Browser Access Request)

Config File: /home/alpha/.config/hypr/plugins.conf: Read Succeeded

exec-once = hyprpm reload -n

bind = ALT, grave, hyprexpo:expo, toggle # can be: toggle, off/disable or on/enable

bind = $mainMod, grave, overview:toggle

plugin {
hyprexpo {
columns = 3
gap_size = 5
bg_col = rgb(111111)
workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1

    enable_gesture = true # laptop touchpad, 4 fingers
    gesture_distance = 300 # how far is the "max"
    gesture_positive = true # positive = swipe down. Negative = swipe up.
}

# overview {
# 	disableGestures = true
# 	reverseSwipe = true
# 	showSpecialWorkspace = false
# }

}

======Config-End========

To note:

  1. I haven't used any hyprcursor/xcursor themes (see config file).
  2. I didnt do a sudo make install, instead, I did a ./Hyprland inside build/ directory.

@nktnet1
Copy link
Contributor

nktnet1 commented Jul 28, 2024

@sudoAlphaX what do you see in the logs?

e.g.

grep -i 'cursor' "$XDG_RUNTIME_DIR/hypr/$(ls -t $XDG_RUNTIME_DIR/hypr | head -n 1)/hyprland.log"

@sudoAlphaX
Copy link
Author

sudoAlphaX commented Jul 28, 2024

hey @nktnet1, these are the lines containing 'cursor' in my hyprland.log file

[LOG] [CursorShape] Registered global
[LOG] Creating the CursorManager!
[hc] CHyprcursorManager: attempting to find theme from env
[hc] CHyprcursorManager: attempting to find any theme
[hc] CHyprcursorManager: no themes matched
[ERR] Hyprcursor failed loading theme "", falling back to X.
[LOG] XCursor has no shape invalid, skipping
[LOG] XCursor has no shape context-menu, skipping
[LOG] XCursor has no shape progress, skipping
[LOG] XCursor has no shape vertical-text, skipping
[LOG] XCursor has no shape alias, skipping
[LOG] XCursor has no shape copy, skipping
[LOG] XCursor has no shape no-drop, skipping
[LOG] XCursor has no shape not-allowed, skipping
[LOG] XCursor has no shape grab, skipping
[LOG] XCursor failed to find a shape with name n-resize, skipping
[LOG] XCursor failed to find a shape with name ns-resize, skipping
[LOG] XCursor has no shape nesw-resize, skipping
[LOG] XCursor has no shape nwse-resize, skipping
[LOG] XCursor has no shape col-resize, skipping
[LOG] XCursor has no shape row-resize, skipping
[LOG] XCursor has no shape all-scroll, skipping
[LOG] XCursor has no shape zoom-in, skipping
[LOG] XCursor has no shape zoom-out, skipping
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] cursorImage request: shape 1 -> default
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] Hiding the cursor (hl-mandated)
[LOG] cursorImage request: shape 9 -> text
[LOG] cursorImage request: surface 56bd292b9be0
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] cursorImage request: surface 56bd292bd490
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] cursorImage request: surface 56bd292bd490
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] Hiding the cursor (hl-mandated)
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] Hiding the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] cursorImage request: surface 56bd292b9be0
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] cursorImage request: shape 9 -> text
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] Hiding the cursor (hl-mandated)
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] cursorImage request: surface 56bd292b9be0
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] Hiding the cursor (hl-mandated)
[LOG] cursorImage request: shape 1 -> default
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] cursorImage request: shape 9 -> text
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] Hiding the cursor (hl-mandated)
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] Hiding the cursor (hl-mandated)
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] Hiding the cursor (hl-mandated)
[LOG] cursorImage request: shape 9 -> text
[LOG] cursorImage request: shape 1 -> default
[LOG] cursorImage request: shape 9 -> text
[LOG] cursorImage request: shape 1 -> default
[LOG] cursorImage request: shape 9 -> text
[LOG] cursorImage request: shape 1 -> default
[LOG] cursorImage request: shape 9 -> text
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 138
[LOG] Hiding the cursor (hl-mandated)
[LOG] Showing the cursor (hl-mandated)
[LOG] [AQ] drm: Cursor buffer imported into KMS with id 139
[LOG] Hiding the cursor (hl-mandated)
[LOG] Window 56bd29318020 set title to grep --color=auto -i cursor hyprland.log
[LOG] Searching for matching rules for Alacritty (title: grep --color=auto -i cursor hyprland.log)
[LOG] Window rule suppressevent maximize ->  class:.* matched [Window 56bd29318020: title: "grep --color=auto -i cursor hyprland.log"]
[LOG] Window 56bd29318020 set title to grep --color=auto -i cursor hyprland.log | wl-copy
[LOG] Searching for matching rules for Alacritty (title: grep --color=auto -i cursor hyprland.log | wl-copy)
[LOG] Window rule suppressevent maximize ->  class:.* matched [Window 56bd29318020: title: "grep --color=auto -i cursor hyprland.log | wl-copy"]

Just to be on the same page, I do not want to use any specific theme (Hyprcursor or XCursor). Im happy with the current default cursor theme. I just don't want the cursor size inconsistency across various windows and surfaces.

@aljustiet
Copy link

You are likely using an XCursor. Have you tried installing a hyprcursor theme?

How can I find out whether the hyprcursor is working or not?

@sudoAlphaX
Copy link
Author

How can I find out whether the hyprcursor is working or not?

@aljustiet, you can see that in your hyprland.log (make sure to set disable_logs = true under debug).

[ERR] Hyprcursor failed loading theme "", falling back to X.

@aljustiet
Copy link

aljustiet commented Jul 30, 2024

@aljustiet, you can see that in your hyprland.log (make sure to set disable_logs = true under debug).

How Did you make the @aljustiet colored?

@coffebar
Copy link
Contributor

coffebar commented Aug 26, 2024

I had this exact problem - was also a regression when Hyprland switched from wlroots-hyprland to aquamarine. Wrote up this workaround it after some trial and error.

Same as everything mentioned above, but I've documented the full steps here for using the rose-pine theme on Arch:

* [Inconsistent cursor size #6320 (comment)](https://github.com/hyprwm/Hyprland/issues/6320#issuecomment-2243109637)

Perhaps check if this works first before exploring other themes to help isolate the issue.

It was working for me with rose-pine theme until today I updated Hyprland from AUR.

UPD: tried to roll back, but it doesn't help, seems issue is coming not from Hyprland's update

Kooha-2024-08-26-21-52-36.mp4

UPD: workaround: add this on startup (for RosePine theme)

gsettings set org.gnome.desktop.interface cursor-theme BreezeX-RosePine-Linux
gsettings set org.gnome.desktop.interface cursor-size 32

@nktnet1
Copy link
Contributor

nktnet1 commented Aug 27, 2024

@coffebar I couldn't reproduce the issue on the latest hyprland-git and aquamarine-git:

but I've seen the gsettings set org.gnome.desktop.interface ... steps fix the issue for others. Will also edit my linked post. Thanks :).

@coffebar
Copy link
Contributor

coffebar commented Aug 27, 2024

yeah, in my case the problem is gsettings can't save settings - cursor fallbacks to default every time after exit the session. Idk why, but it seems not an issue for hyprland

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants