Skip to content

Nehir 0.5.0-rc.10

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Jun 09:54
442e2aa

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) to balancedColumnCount / niriBalancedColumnCount. Old keys are not migrated or accepted — update them manually, e.g. maxVisibleColumns = 2balancedColumnCount = 2 (and niriMaxVisibleColumnsniriBalancedColumnCount in monitor overrides).
    • Breaking: replaced the old [niri] singleWindowAspectRatio (and per-monitor niriSingleWindowAspectRatio) 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" plus loneWindowMaxWidth = <fraction 0.0–1.0>, where the fraction is now of the monitor working-area width (e.g. loneWindowMaxWidth = 0.5 for half width). The fixed aspect-ratio presets no longer exist.
    • In per-monitor overrides use loneWindowPolicy / loneWindowMaxWidth (the niriSingleWindowAspectRatio key 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’s Default mode, so existing proportional Niri workflows continue to fit naturally.

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 verificationMismatch overshoots (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 via AXMinSize and 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.toml contains 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.