Nehir 0.5.0-rc.10
Pre-release
Pre-release
Breaking changes
-
improved Niri layout behavior and monitor-specific layout settings with a simplified configuration model.
- Breaking: renamed the Niri balanced-width config from
maxVisibleColumns/niriMaxVisibleColumns(in[niri]/ per-monitor overrides) tobalancedColumnCount/niriBalancedColumnCount. Old keys are not migrated or accepted — update them manually, e.g.maxVisibleColumns = 2→balancedColumnCount = 2(andniriMaxVisibleColumns→niriBalancedColumnCountin monitor overrides). - Breaking: replaced the old
[niri]singleWindowAspectRatio(and per-monitorniriSingleWindowAspectRatio) config with the Lone Window policy. There is no 1:1 aspect-ratio equivalent; express the intent through the new keys: singleWindowAspectRatio = "none"(Fill) →loneWindowPolicy = "fill"- Any ratio (
"16:9","4:3","21:9","1:1") →loneWindowPolicy = "centered"plusloneWindowMaxWidth = <fraction 0.0–1.0>, where the fraction is now of the monitor working-area width (e.g.loneWindowMaxWidth = 0.5for half width). The fixed aspect-ratio presets no longer exist. - In per-monitor overrides use
loneWindowPolicy/loneWindowMaxWidth(theniriSingleWindowAspectRatiokey is gone). - Added per-monitor spacing overrides in Layout settings. You can now customize Inner Gap and per-edge Screen Margins separately for each display, while leaving individual values set to Use Global when you want them to inherit the global defaults.
- Added explicit per-monitor Lone Window overrides. Each monitor can now use Use Global, Fill, or Centered with its own centered width, so a display can intentionally force Fill even when the global default is Centered.
- Fixed lone-window layouts after monitor changes. When a constrained single window is left alone on a smaller or different display, Nehir now keeps it inside the monitor’s visible area instead of letting it leak offscreen.
- Made lone-window scrolling and snapping more predictable. Fill lone windows remain responsive while scrolling but no longer settle one gap off-center; centered lone windows can still snap left, center, or right; and over-constrained lone windows can be scrolled to reveal their overflowing edges.
- Corrected inner-gap semantics for stacked and tabbed columns. Inner gap now means spacing between adjacent tiled windows, not extra top/bottom padding at the monitor edge. Use screen margins/outer gaps for edge padding.
- Preserved proportional column behavior for viewport-fitting layouts such as
50% + 50%and Reveal Partial’sDefaultmode, so existing proportional Niri workflows continue to fit naturally.
- Breaking: renamed the Niri balanced-width config from
Changes
-
Fixed false resize-minimum pin on terminal windows that snap to cell rows.
- Terminal/grid apps such as Ghostty round window geometry to whole cell rows. When a requested fill height fell between grid lines, the app snapped the window up by a few pixels and Nehir misread that small overshoot as a hard app-enforced minimum.
- Nehir then permanently recorded an inferred resize minimum on just that window, over-constrained the Niri solver against its siblings, and pinned the window to the snapped (taller) height. This is why one Ghostty window on a multi-column workspace could end up taller than the others.
- Small
verificationMismatchovershoots (within ~one cell) are now treated as bidirectional cell quantization rather than a one-sided minimum: the observed snapped frame is accepted and confirmed, but no inferred minimum is recorded and the solver is no longer force-pinned. Genuine app minimums are unaffected because they are reported viaAXMinSizeand respected independently.
-
Onboarding, What's New, and config-mismatch migration.
- First-run onboarding — new installs are greeted by a setup wizard that teaches Nehir's core model before the tiling engine activates. Includes an interactive demo of Niri move semantics, a live workspace-bar preview, and an experimental-features step. The layout engine, hotkeys, and workspace bar stay suppressed until you finish so onboarding never moves real windows. Re-run it any time from Settings → General.
- What's New on upgrade — a curated summary appears the first time you launch a new release (once per version), and is always reachable from the status-bar menu.
- Config mismatch detection — when
settings.tomlcontains keys the current schema no longer recognizes, Nehir backs up the original, writes a clean file, and shows a Config Update Required screen with a Copy AI Prompt button that points an assistant at the backup and release notes to migrate the keys. - Window Borders are now off by default for new setups. Existing values are unaffected.
Notes
Nehir is distributed as a signed and notarized app. If macOS still shows a Gatekeeper warning, right-click the app and choose Open.
Nehir requires Accessibility permission to manage windows.