github y3owk1n/neru v1.60.0

3 hours ago

1.60.0 (2026-10-25)

This release lets one config file serve every machine. The modifier behind Primary, the shell exec steps run, and the keyboard layout can each take their own value on macOS, Linux and Windows.

Migration Guide

Warning

Hotkey conflicts are now checked in every table. A duplicate binding, or a key that shadows a longer sequence (such as g and gg), in [monitor_select.hotkeys] or in a [[grid.app_configs]] or [[recursive_grid.app_configs]] entry used to load silently. That config is now refused. neru config validate names the bindings that clash.

Note

general.exec_shell and general.exec_shell_args are deprecated and are removed in v2. They still work for now. Move them to general.shell.


One config for every platform

  • general.primary_modifier sets the modifier behind Primary. The defaults stay Cmd on macOS and Ctrl on Linux and Windows
  • general.shell sets the shell and arguments an exec step runs
  • general.kb_layout_to_use now takes a per-platform table too. Existing single values still load
  • A table only changes the platforms it names. Any platform it leaves out keeps its default
[general]
primary_modifier = { darwin = "Cmd", linux = "Super", windows = "Ctrl" }

[general.shell]
darwin = ["/bin/zsh", "-lc"]
linux = ["/bin/bash", "-lc"]

Fixes

  • Enabling hints with a reload works without a restart. Before, the hints hotkey did nothing until Neru restarted
  • A failed startup shows the real error instead of crashing with a nil-pointer panic
  • The grid picks the same shape every time for a given screen, and works it out faster
  • macOS: Return in hint search acts on what you typed last, not the query from before your last edit
  • macOS: keyboard layouts are read and switched only on the main thread, as macOS requires
  • Linux: the Nix package installs again on current nixpkgs
  • Windows: the overlay no longer gets stuck at its old position when it is moved while being recreated

Features

  • config: configurable primary modifiers (#1854) (b553a66)
  • config: per-platform shell and keyboard layout (#1856) (8067a80)

Bug Fixes

  • app: unwind startup cleanly when an early phase fails (#1862) (073fd59)
  • config: check every hotkey table for conflicts (#1865) (97b5ab5)
  • config: name the real ui key in grid validation errors (#1864) (8effd9e)
  • darwin: never apply the reference keyboard layout off the main thread (#1875) (7b08065)
  • darwin: read keyboard layouts on the main thread (#1881) (6282e67)
  • grid: make grid sizing deterministic and tolerate a nil logger (#1874) (cb15419)
  • hints: build the hints context when a reload enables hints (#1878) (4360e4b)
  • hints: keep macOS hint-search callbacks in order (#1869) (7e48720)
  • hints: read vision settings from the generation snapshot (#1863) (50f3770)
  • ipc: report close errors from the streaming and Go clients (#1871) (ebcef23)
  • ipc: report errors from closing the connection (#1867) (b47c88c)
  • nix: stop the Linux package segfaulting on current nixpkgs (#1860) (0e600c1)
  • theme: match theme fallbacks to the derived defaults (#1866) (6752040)
  • windows: free the tray icon bitmap when it has no pixels (#1868) (7bf004d)
  • windows: lock overlay bounds on every read and write (#1876) (ec9dc36)

Don't miss a new neru release

NewReleases is sending notifications on new releases.