Cursor invisible, wrong size, or a black box on Omarchy
Mouse pointer missing, tiny, huge, or drawn as a black square on Omarchy 4. Force software cursors in looknfeel.lua and set the size where Hyprland reads it.
If the pointer is invisible, glitchy, or a black box, force software cursors: add an hl.config block with cursor.no_hardware_cursors = true to ~/.config/hypr/looknfeel.lua, then run hyprctl reload. If the size is wrong, do not use ~/.config/hypr/envs.lua, which Omarchy 4 never loads. Put hl.env("XCURSOR_SIZE", "32") at the bottom of ~/.config/hypr/hyprland.lua and log out.
Three different problems share the same symptom bucket here: the pointer is gone, the pointer is drawn as a black square or a smear, or the pointer is the wrong size. The first two are the same class of bug on different GPU drivers. The third is a config plumbing problem specific to Omarchy 4.
The fix
Pointer invisible, a black box, or glitchy (Omarchy 4.0.x)
- Open
~/.config/hypr/looknfeel.luaand append:
-- The GPU's hardware cursor plane does not display the pointer here.
hl.config({
cursor = {
no_hardware_cursors = true,
},
})
- Run
hyprctl reload.
That is the exact block Omarchy itself appends on nouveau machines in install/user/hardware/fix-nouveau-cursor.sh, shipped since 4.0.0. It is also the block BigNatoDemon verified on a VMware guest in issue #7918.
Do not put a cursor { ... } section in hyprland.conf on 4.x. A legacy .conf block is ignored once a hyprland.lua config exists.
Do not reach for hyprctl keyword cursor:no_hardware_cursors true either. On 4.x it prints keyword can't work with non-legacy parsers. Use eval. and changes nothing, still exiting 0. Issue #8797 records that message, and also a session on an AMD iGPU that died with SIGABRT the moment omarchy-capture-screenshot ran its hyprctl eval of this same setting. The triage on that issue traced the faulting frame to a stale keybind handle in Hyprland 0.56.2 rather than to the cursor option, but the crash was real, and editing the file and reloading avoids the question.
Pointer invisible, a black box, or glitchy (3.8.4 and earlier)
Append to ~/.config/hypr/looknfeel.conf:
cursor {
no_hardware_cursors = true
}
Then hyprctl reload. This is the pre-Quattro form of the same setting. theswampdawg put it in input.conf and it fixed #4847 on an AMD RX 6700 XT dual-monitor desktop; commenters who hit the same black box right after updating to 3.4.1 fixed it the same way. Any personal .conf file that hyprland.conf sources will do.
Pointer is the wrong size (Omarchy 4.0.x)
The default is 24. Do not create ~/.config/hypr/envs.lua: nothing requires that module, so anything you set there is silently dropped. Issue #9902 documents this, and the triage comment on that issue reproduced it on a clean 4.0 worker: variables set in a personal envs.lua never reached a spawned client, while the XCURSOR_SIZE=24 from default/hypr/envs.lua did.
- Open
~/.config/hypr/hyprland.luaand add this at the very bottom, under the “Add any other personal Hyprland configuration below” comment:
hl.env("XCURSOR_SIZE", "32")
hl.env("HYPRCURSOR_SIZE", "32")
- Set the GTK side too, because Omarchy never touches it:
gsettings set org.gnome.desktop.interface cursor-size 32
- Log out and back in. Environment variables reach applications when they launch, so
hyprctl reloadis not enough.
The tail of hyprland.lua is evaluated after require("default.hypr.omarchy"), so your value wins over the 24 in default/hypr/envs.lua. The triage on #9902 checked exactly this: an XCURSOR_SIZE of 99 set after the defaults replaced the 24 in a spawned client.
Pointer is the wrong size (3.8.4 and earlier)
~/.config/hypr/envs.conf is not sourced by the shipped hyprland.conf on 3.8.4 either. Put env = XCURSOR_SIZE,32 at the bottom of ~/.config/hypr/hyprland.conf and log out.
Wrong cursor theme
Omarchy installs no cursor theme package of its own and never sets org.gnome.desktop.interface cursor-theme. Discussion #8428 asks how to make Bibata the default and has no answer beyond another user asking the same thing. Install a theme, then apply it in both places:
gsettings set org.gnome.desktop.interface cursor-theme "Bibata-Modern-Classic"
hyprctl setcursor Bibata-Modern-Classic 24
To make the Hyprland half survive a relogin, XCURSOR_THEME is the standard variable clients read, so hl.env("XCURSOR_THEME", "Bibata-Modern-Classic") alongside the size lines at the bottom of hyprland.lua uses the same channel as the size override. Nobody on the tracker has confirmed that exact line, so check a fresh client’s environment afterwards as described below. Check your theme actually provides a cursor named default: on discussion #10947 a reporter saw imv 5.0.1 crash with a theme that does not.
Verify it worked
hyprctl getoption cursor:no_hardware_cursors
hyprctl configerrors
The first should report the value you set, the second should be empty. For the size, read the environment of a freshly launched application rather than trusting the config:
tr '\0' '\n' < /proc/$(pgrep -n ghostty)/environ | grep -i cursor
If the hardware cursor plane was the problem, the error spam stops. Check the session log at /run/user/$UID/hypr/$HYPRLAND_INSTANCE_SIGNATURE/hyprland.log for drmCloseBufferHandle in cursor failed, which BigNatoDemon counted over 1700 times in a few hours before applying the fix.
Why it happens
Hyprland normally hands the pointer to a dedicated DRM cursor plane on the GPU. Several drivers accept the buffer and then fail the commit, so the plane shows nothing, a stale black buffer, or a partial smear. Confirmed on nouveau (Omarchy automates the fix there), on VMware’s vmwgfx, and on AMD dual-monitor desktops in #4847 and #4934. Software cursors cost almost nothing on a desktop and simply sidestep the plane. The AMD case was expected to get a Hyprland-side fix at the time, and #4847 was closed in a bulk review in July 2026 rather than by a change in Omarchy, so a current Hyprland may not need the setting on that hardware.
The size problem is unrelated. Omarchy 4 moved Hyprland config to Lua, and the personal override files that hyprland.lua requires are monitors, input, bindings, looknfeel and autostart. There is no envs in that list and Omarchy has never shipped a config/hypr/envs.lua, so a file you create there is dead code. The session environment channel the manual points at, ~/.config/uwsm/env.d/*, is exported before Hyprland starts, so it cannot override anything Omarchy sets with hl.env afterwards.
If your pointer fix vanished during the 3 to 4 upgrade, that is expected: hypr/looknfeel.lua is on the upgrade’s always-copy list, and your old looknfeel.conf is deliberately left on disk unread so you can port it by hand.
If that did not work
- The pointer comes back and then breaks again in the same session. That is #11943, still open on 4.0.3 with
no_hardware_cursorsalready set, on a hybrid Intel plus NVIDIA laptop driving four outputs.hyprctl setcursor Adwaita 24re-renders it each time, but only until the next recurrence. - The pointer is visible but laggy across monitors rather than missing. Give each output an explicit rule instead of a generic one, as al3rez did in #2132. Ignore the
WLR_NO_HARDWARE_CURSORSline in that issue: that variable is ignored by current Hyprland, and the rest of that config is 3.x.confsyntax you would have to port. - The pointer disappears only while you are dragging a screenshot selection. That is #8240, open:
omarchy-capture-screenshotforces hardware cursors back on before opening the picker so the software pointer is not baked into the capture, which hides it on exactly the hardware that needs software cursors. - Night light does not tint the pointer. Cosmetic and open as #4973.
- If you lose the pointer on a big screen rather than seeing it broken, discussion #5833 is where people compare the
hypr-dynamic-cursorsplugin. Third party plugins are not covered by Omarchy support.
Related
Upstream threads about this error
210 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.
| Issue | State | Comments | Opened |
|---|---|---|---|
| #688 After upgrade to 1.13 and reboot, I am asked for LUKS password, then Hyprland doesn't start | closed | 73 | 2025-08-11 |
| #26 System Freeze on Wake-up | closed | 56 | 2025-07-02 |
| #5478 Hard Crash with AMD GPU on 3.6 since upgrade. Triggered by Chromium use - | closed | 60 | 2026-04-28 |
| #1150 Blank black screen using new 2.0 ISO - blinking cursor - `libabsl_log_internal_check_op.so.2565.0.0: cannot open shared file` | closed | 32 | 2025-08-26 |
| #1485 The system doesn't boot after install | closed | 33 | 2025-09-06 |
| #1887 Black screen after post installation update on Thinkpad T460s | closed | 28 | 2025-09-22 |
| #4847 Cursor on second monitor is displayed as a black box | closed | 7 | 2026-03-01 |
| #6762 ttfx dumps core on every idle lock: omarchy-system-lock kills the screensaver terminal before the renderer · fixed by #6764 #6773 #18 #160 | closed | 22 | 2026-08-12 |
| #1115 Use $mainMod instead of SUPER for keybinds | closed | 6 | 2025-08-26 |
| #1210 Omarchy bricked with the latest update! | closed | 12 | 2025-08-27 |
Accepted answers upstream
- macOS to Linux Keyboard Configuration Guide · answered by followbl
- Hide the mouse cursor when idle or on key press · answered by presidentecarter
- How are omarchy's repo packages updated? · answered by Hexoplon
- System becomes laggy over time: cursor and compositor slowdowns without high CPU/memory usage · answered by abbas-taqvi
Questions people ask
- What cursor size does Omarchy use by default?
- 24. default/hypr/envs.lua sets both XCURSOR_SIZE and HYPRCURSOR_SIZE to 24, and Omarchy never sets a GNOME cursor-size or cursor-theme key, so GTK apps fall back to their own defaults.
- Does WLR_NO_HARDWARE_CURSORS=1 still work?
- No. That environment variable is ignored by the Hyprland builds Omarchy 4 ships. Use cursor.no_hardware_cursors in looknfeel.lua instead.
- Why did my cursor fix disappear after upgrading to Omarchy 4?
- The Quattro upgrade always writes a fresh hypr/looknfeel.lua. Your old looknfeel.conf is left on disk for reference but Hyprland never reads it, so any cursor block in it stops applying.
Sources and credit
Fixes on this page were worked out by theswampdawg (Pinned the black-box pointer on a second monitor to the hardware cursor plane), BigNatoDemon (Traced the invisible pointer under VMware to failing vmwgfx cursor commits and confirmed the Lua fix), Makedayz (Showed that ~/.config/hypr/envs.lua is never loaded in 4.0.x), stephentaylor-com (Contributed the nouveau software-cursor fix shipped in 4.0.0). Text here is our own paraphrase; follow the links for the original threads.
- issueIssue #4847: Cursor on second monitor is displayed as a black box · theswampdawg · 2026-03-01
- issueIssue #4934: Cursor renders as a large black square on secondary monitor · joao1barbosa · 2026-03-08
- issueIssue #7918: Invisible mouse cursor in VMware guest: vmwgfx hardware cursor plane fails to commit (needs no_hardware_cursors) · BigNatoDemon · 2026-08-23
- issueIssue #11943: Hardware cursor intermittently stops rendering on hybrid Intel/NVIDIA multi-monitor laptop (recurs despite no_hardware_cursors=true) · Cousint98 · 2026-09-15
- issueIssue #9902: 4.0.x: user ~/.config/hypr/envs.lua is never loaded · Makedayz · 2026-09-02
- issueIssue #8240: Screenshot picker runs with hardware cursors forced on, hiding the pointer on nouveau/vmwgfx while you select · Chessing234 · 2026-08-25
- issueIssue #8797: omarchy-capture-screenshot kills the compositor: hyprctl eval of cursor:no_hardware_cursors faults in hl.config() (SIGABRT) · jeffsidekick · 2026-08-28
- issueIssue #2132: Cursor lag on dual monitor setup with NVIDIA (RTX 4090) - Solution included · al3rez · 2025-10-01
- issueIssue #4973: Night light does not apply to cursor · thomasboom · 2026-03-10
- discussionDiscussion #8428: How can I change the default mouse cursor to Bibata Modern Classic? · sunbyte · 2026-08-26
- discussionDiscussion #10947: Consider Oxygen White as the default cursor · zain1806481 · 2026-09-09
- discussionDiscussion #5833: shake to find cursor · ramzlab000 · 2026-05-15
- releaseOmarchy v4.0.0 release notes (Force software cursors on nouveau) · 2026-08-14
- manualOmarchy manual: Keyboard, mouse and trackpad