1.54.0 (2026-09-13)
Overview
Most of this release fixes Windows. The overlay now draws through Direct2D, text and grid cells follow display scaling, idle overlays keep answering, and a held click drags. On Wayland, a chord matches while the activation modifier is still down, a hotkey click lands under the cursor without the modifier, and a bare modifier bind keeps reaching the compositor. You can now tune the contour hint strategy in [hints.contour].
Migration Guide
Warning
Every valid config still loads, but five behaviours change.
The Wayland layer-shell namespace is now neru-overlay.
The overlay names itself neru-overlay on every platform. On Wayland that replaces the namespace neru, so update any compositor rule that matches the old name. On Hyprland with a Lua config:
hl.layer_rule({
match = { namespace = "neru-overlay" }, -- was "neru"
blur = true,
})Windows overlay sizes follow the monitor's DPI.
Neru drew font sizes, padding, borders and radii as physical pixels, so at 150% everything came out a third too small. If you raised font sizes to compensate, set them back.
recursive_grid.min_size_width and min_size_height count apparent pixels on scaled Windows and X11 displays.
At 150%, a value of 10 is 15 physical pixels. The defaults behave the same.
A bare modifier tap inside a mode reaches the compositor on Wayland.
If GNOME or KDE opens the launcher on Super, tapping Super alone in a mode now opens the launcher and also toggles sticky Super. Chords behave as before. Windows already works this way.
Float options refuse nan and inf.
These values passed every range check and quietly turned the option off. The config now fails to load, and the error names the field.
Hints
- You can set the contour detector's edge thresholds, target size limits, and container and icon heuristics in
[hints.contour]. The newrequest_timeout_ms(default 2000) makes a slow pass stop instead of drawing a late overlay. The defaults are the values the detector used before.docs/CONFIGURATION.mdlists every option
Overlay
- The overlay window is named
neru-overlayon every platform. X11 sets it asWM_CLASSand the window name, Wayland as the layer-shell namespace, Windows as the window class, and macOS as the panel title. picom rules, shaders and window manager scripts can match on it - On Windows and Linux, only hint labels, the mode and sticky-modifier badges, and the monitor-select label are bold, as on macOS
Windows
Note
Windows implementations are mainly contributor driven, feel free to help improving it!
- The overlay draws through Direct2D. A wrong interface ID made every overlay fall back to GDI, and nothing reported it. With the ID fixed, frames no longer pile on top of each other and clicks go through the overlay to the app below. If the overlay still falls back to GDI, it logs the reason, and
neru doctorprints anOverlay backendline while the daemon runs - The overlay scales to each monitor's DPI. Badges that follow the cursor use the DPI of the monitor they are on
- Idle overlays keep answering. Windows no longer marks them "Not responding" or leaves a ghost window behind
- A held click drags. With
left_click --toggle, a warp while the button is down moves the cursor over about 120ms, so apps register a drag. Text selection in Notepad and Edge now covers the whole range, where before it stopped at one line or one word - The grid picks its cell count from the scaled screen size. A 4K monitor at 150% gets the same grid as a 2560x1440 monitor at 100%. X11 gets the same fix, using
Xft.dpi
Linux
Note
Linux implementations are mainly contributor driven, feel free to help improving it!
- Chords match with the activation modifier still down. Open a mode with
Alt+Space, pressSpaceagain before you releaseAlt, and an"Alt+Space"binding in the mode now fires on Wayland, as on macOS and X11. Withpassthrough_unbounded_keys = true, an unbound key pressed beforeAltcomes up goes to the app withAltheld - Hotkey clicks on Wayland land under the cursor without the modifier.
"Alt+Space" = "action left_click"used to click at an old cursor position and send alt+click. Without a writable/dev/uinput, the click still carries the modifier - A bare modifier bind keeps working in a mode. A Hyprland
bindron Super that runsneru grid -tno longer leaves you stuck in grid once Neru captures the keyboard
Every platform
- With smooth cursor on, a held-button selection in grid or recursive grid releases on the chosen cell. Before, it released wherever the cursor was mid-animation
Features
Bug Fixes
- config: reject NaN and infinite floats in every option (#1652) (94a6a13)
- grid: plan cell sizes in apparent units on scaled Windows and X11 displays (#1658) (496313c)
- linux: make a bare modifier tap reach the compositor while a mode is open (#1666) (69f3dad)
- linux: make a hotkey click on Wayland land where the cursor is, unmodified (#1656) (2cb6a2a)
- linux: name mode chords with the activation modifier still held (#1653) (e9a57cb)
- overlay: draw only hint labels and badges bold on Windows and Linux (#1657) (c976d44)
- overlay: identify the overlay window as
neru-overlayon every platform (#1661) (995800b) - windows: keep idle overlays responsive (#1648) (33f4997)
- windows: post drag motion so a held click selects and drags across a warp (#1664) (fb832ed)
- windows: scale overlay fonts and geometry to the monitor's DPI (#1655) (6132dd8)
- windows: use Direct2D for the overlay instead of silently falling back to GDI (#1660) (2695e17)