Neru
Hints, grids and vim keys for your whole desktop
Features
- Hints Mode (Click Labels)
- Recursive Grid Navigation
- Row/Column Grid Mode
- Vim-Style Scroll Mode
- Custom User-Defined Modes
- Per-App Config Overrides
- Macro Support
- CLI & IPC Scripting
About
Neru brings Vimium-style keyboard navigation to the whole desktop rather than just the browser, built natively for macOS, Linux, and Windows. It offers three navigation modes — hints that label clickable elements via the accessibility tree, on-device OCR, and a contour pass; a recursive grid that bisects the screen with home-row keys; and a row/column grid for larger jumps — alongside vim-style scrolling, macros, and custom user-defined modes. Every mode is also a CLI/IPC command, and custom modes can shell out directly to other tools, including yabai.
Who It's For
Neru is for keyboard-centric users who want Vimium-style, label-and-click navigation across their entire desktop, not just inside a browser tab. Its custom modes that shell out to other CLI tools — the README's own example binds h to exec yabai -m window --focus west — make it a natural layer on top of an existing tiling window manager for people who already think in home-row-key terms. Because it's built natively for macOS, Linux, and Windows, it also suits anyone who wants the same navigation model across multiple machines.
How It Works
Neru runs as a single binary configured from one TOML file. Hints labels every clickable element it can find, using the accessibility tree, on-device OCR, and a pure-Go contour pass, then lets you type the label to click it. Recursive grid bisects the screen into halves with home-row keys until the cursor lands where you want, while grid offers row/column selection for larger jumps. Vim-style scroll bindings and monitor selection round out cursor control. Every mode is also exposed as a CLI/IPC command — for example neru hints --role button --text save — so any mode, macro, or per-app override can be triggered from shell scripts, Raycast, Hammerspoon, or a system keybinding daemon. Custom modes are user-defined in the config and can bind directly to exec calls against other programs.
Configuration
# ~/.config/neru/config.toml
[hotkeys]
"Primary+Shift+Space" = "hints --action left_click"
[[hints.app_configs]]
bundle_id = "com.brave.Browser"
hotkeys = { "Return" = "action left_click" }
[macros]
click_and_exit = ["action left_click --bail-on-error", "idle"]
[hints.hotkeys]
"Enter" = "macro click_and_exit"
[modes.window]
indicator = "Window"
[modes.window.hotkeys]
"h" = "exec yabai -m window --focus west"
Compared to Alternatives
Compared to Homerow (paid, macOS-only), Neru is free, open source, and cross-platform, and adds a recursive grid and a row/column grid mode alongside hints. Compared to Vimium, which only works inside the browser, Neru operates system-wide across any application via the accessibility tree, OCR, and contour detection. Neru doesn't move, resize, or tile windows itself, but its custom-mode exec bindings let it call out to a window manager like yabai for that functionality instead.
Requirements
- macOS 14+ (marked Stable; Linux and Windows support is Beta)
- Accessibility permission required; Screen Recording needed for OCR/contour hints
- Apple Silicon and Intel binaries available, plus Homebrew, Nix flake, and one-line installer options
- Actively maintained — over 1,400 commits and frequent releases
Getting Started
Install via the one-line installer, Homebrew, or Nix flake, then edit ~/.config/neru/config.toml. Run neru doctor to check permissions, and trigger a mode with its default binding (e.g. Primary+Shift+Space for hints) or from the CLI. See the GitHub repo for the full command and configuration reference.