Shake the mouse to temporarily enlarge the cursor so you can find it.
Good to know
Hyprland switches to software cursors while the cursor is magnified; x86_64 only.
A Hyprland plugin that tilts, rotates or stretches the cursor
Built by @VirtCode on GitHub. This page was written by @iluxav from public sources, last updated for b9739b1 (2026-09-04), and may lag behind new releases.
Maintain hypr-dynamic-cursors? Claim itMake the mouse cursor tilt, rotate or stretch as it moves, and enlarge it when you shake the mouse so you can find it.
Hyprland switches to software cursors while the cursor is magnified; x86_64 only.
Only applies to server-side cursor shapes, so not in apps that draw their own cursor, mainly XWayland apps.
Needs an SVG-based hyprcursor theme and cursor:enable_hyprcursor; clientside and XWayland cursors stay pixelated; the theme is loaded in the background, so CPU use spikes briefly on load.
Off by default because it sends many events during a shake; enable shake:ipc.
Hyprland 0.55.1 or newer; wrap the settings in if hl.plugin.dynamic_cursors then ... end to avoid errors when the plugin is not loaded.
Function hooks only work on x86_64; on other architectures the plugin loads but does nothing. On Nvidia GPUs it forces software cursors. Hardware cursors cost about as much as an animated cursor while moving.
The hyprlang configuration (plugin:dynamic-cursors section, shaperule keyword, plugin:dynamic-cursors:magnify) was removed, following Hyprland; only the Lua configuration remains. The cursor is now drawn in toplevel screen captures, and pins were added for newer Hyprland releases.
Current main branch, tracking Hyprland's main branch; pins for Hyprland up to v0.56.2.
Seeded by @iluxav with Claude Code (canido)
Settings now live under plugin.dynamic_cursors in hl.config, shape rules use hl.plugin.dynamic_cursors.shape_rule, and the dispatcher is hl.plugin.dynamic_cursors.dsp_magnify. hyprlang configuration still worked in this version. Several options were renamed.
Lua configuration needs Hyprland 0.55.1 or newer.
Seeded by @iluxav with Claude Code (canido)
State of the plugin before Lua configuration support: configured in the plugin:dynamic-cursors section of hyprland.conf with mode = tilt, rotate, stretch or none, plus shake, hyprcursor and shaperule settings and a plugin:dynamic-cursors:magnify dispatcher.
Install with hyprpm add https://github.com/virtcode/hypr-dynamic-cursors and hyprpm enable dynamic-cursors; Hyprland v0.41.2 or newer on x86_64; did not load when Hyprland was configured with Lua.
Seeded by @iluxav with Claude Code (canido)