Hints, grids and vim keys for your whole desktop. Built for macOS, linux and windows, natively.
See the codeHints, grids and vim keys for your whole desktop. Free, open source, one binary, one TOML file.
| macOS 14+ | Linux (X11, Wayland) | Windows 10+ |
|---|---|---|
| Stable ✅ | Beta, daily 🔵 | Beta, daily 🔵 |
https://github.com/user-attachments/assets/f4c86753-0109-47c9-a94e-775af2546a17
Neru does what Vimium does in the browser, for every app, window, menu bar and dock item on your screen. Press a hotkey, type the label on the element you want, and the cursor jumps there and clicks.
neru CLI and the IPC socket run the same commands, so a binding works unchanged from skhd, Hammerspoon, Raycast or a shell script. Hooks run your own steps when a mode opens or closes, the focused app changes, or Neru pauses. neru watch streams the same events live, filtered with --event, neru query reports displays, the cursor and hint targets, and --json on the status and query commands gives a program something to parse. The IPC protocol is versioned, with JSON schemas and a Go client package.# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/y3owk1n/neru/main/scripts/install.sh | bash
# Windows
irm https://raw.githubusercontent.com/y3owk1n/neru/main/scripts/install.ps1 | iex
Run it again to update. Homebrew, oku, Nix, prebuilt binaries, building from source, agent skills and uninstalling are in Installation.
Run neru launch, grant the permissions neru doctor asks for, then press
Primary+Shift+Space for hints. The full first run, including Linux, is in
Getting started.
|
Recursive Grid |
Hints |
|
Bisect |
Grid |
| Mode | Default hotkey | How it works | Best for |
|---|---|---|---|
| Recursive Grid ⭐ | Primary+Shift+C | Split 3x3 and pick cell after cell until the cursor lands | Anything, including canvases and games |
| Bisect | Primary+Shift+B | hjkl keep a half, yubn a quadrant, until the cursor lands | Anything, without reading labels |
| Hints | Primary+Shift+Space | Labels every target via accessibility tree, OCR or a pixel scan | Native apps, Electron, browsers, Figma |
| Grid | Primary+Shift+G | Type a row and column label to jump to a cell | Coarse jumps across big monitors |
| Scroll | Primary+Shift+S | j/k, u/d, gg/G, h/l in any scroll view | Reading without lifting your hands |
| Monitor Select | disabled, unbound | Labels each display, type one to jump | Multi-monitor setups |
| Your own | unbound | A name, an indicator and a key table you declare in config | Window management layers, app-specific keys |
Primary is Cmd on macOS and Ctrl on Linux and Windows. Linux ships without these defaults so they never collide with terminal shortcuts. Every binding is remappable.
Every mode except monitor select gives you left, right and middle click, double and triple click, drag with any button, and sticky modifiers. [held_repeat] adds held-key glide, with acceleration if you want it.
Everything is one TOML file. Apply edits with neru config reload, or change one value with neru config set.
[hotkeys]
"Primary+Shift+Space" = "hints --action left_click" # click on select, Vimium style
"Primary+Shift+W" = "mode window"
[macros]
click_and_exit = ["action left_click --bail-on-error", "idle"]
[[hints.app_configs]]
bundle_id = "com.brave.Browser" # bundle ID on macOS, WM_CLASS or app_id on Linux, exe path on Windows
hotkeys = { "Return" = "macro click_and_exit" }
[modes.window]
indicator = "Window"
[modes.window.hotkeys]
"h" = "exec yabai -m window --focus west"
"l" = "exec yabai -m window --focus east"
Every hotkey command is also a shell command:
neru hints --role button --text save # only buttons whose text matches
neru run "action save_cursor_pos" "hints --action left_click" \
"action wait_for_mode_exit" "action restore_cursor_pos"
neru config set hints.strategy contour
neru doctor # diagnose permissions and backends
Themes, indicators, smooth cursor and scroll, virtual pointer, app exclusions and screen-share hiding are options too.
Status bars, launchers and voice tools can follow Neru and drive it:
neru watch --event mode_enter,mode_exit # one JSON line per mode change
neru := client.New() // github.com/y3owk1n/neru/client
status, err := neru.Status(ctx)
_, err = neru.Send(ctx, "hints", "--action", "left_click")
Which interface fits which tool is in Build on Neru. With a coding agent, the neru-build-integration skill writes and tests one against your installed version.
Read the docs at neru.kylewong.my, or browse docs/ here on GitHub.
"neru: the ACTUAL BEST app for ditching mouse"
Bug reports, especially on Linux and Windows, and pull requests are welcome. Start with CONTRIBUTING.md.
If Neru has earned a place in your workflow, sponsor it. Need only window management? mimi is Neru's window and space features as a standalone tool.
MIT. See LICENSE.
Made with ❤️ by y3owk1n
606 followers · starred Sep 2026
1,198 followers · starred Sep 2026
768 followers · starred Jul 2026
600 followers · starred Aug 2026
Hints, grids and vim keys for your whole desktop. Built for macOS, linux and windows, natively.
See the codeHints, grids and vim keys for your whole desktop. Free, open source, one binary, one TOML file.
| macOS 14+ | Linux (X11, Wayland) | Windows 10+ |
|---|---|---|
| Stable ✅ | Beta, daily 🔵 | Beta, daily 🔵 |
https://github.com/user-attachments/assets/f4c86753-0109-47c9-a94e-775af2546a17
Neru does what Vimium does in the browser, for every app, window, menu bar and dock item on your screen. Press a hotkey, type the label on the element you want, and the cursor jumps there and clicks.
neru CLI and the IPC socket run the same commands, so a binding works unchanged from skhd, Hammerspoon, Raycast or a shell script. Hooks run your own steps when a mode opens or closes, the focused app changes, or Neru pauses. neru watch streams the same events live, filtered with --event, neru query reports displays, the cursor and hint targets, and --json on the status and query commands gives a program something to parse. The IPC protocol is versioned, with JSON schemas and a Go client package.# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/y3owk1n/neru/main/scripts/install.sh | bash
# Windows
irm https://raw.githubusercontent.com/y3owk1n/neru/main/scripts/install.ps1 | iex
Run it again to update. Homebrew, oku, Nix, prebuilt binaries, building from source, agent skills and uninstalling are in Installation.
Run neru launch, grant the permissions neru doctor asks for, then press
Primary+Shift+Space for hints. The full first run, including Linux, is in
Getting started.
|
Recursive Grid |
Hints |
|
Bisect |
Grid |
| Mode | Default hotkey | How it works | Best for |
|---|---|---|---|
| Recursive Grid ⭐ | Primary+Shift+C | Split 3x3 and pick cell after cell until the cursor lands | Anything, including canvases and games |
| Bisect | Primary+Shift+B | hjkl keep a half, yubn a quadrant, until the cursor lands | Anything, without reading labels |
| Hints | Primary+Shift+Space | Labels every target via accessibility tree, OCR or a pixel scan | Native apps, Electron, browsers, Figma |
| Grid | Primary+Shift+G | Type a row and column label to jump to a cell | Coarse jumps across big monitors |
| Scroll | Primary+Shift+S | j/k, u/d, gg/G, h/l in any scroll view | Reading without lifting your hands |
| Monitor Select | disabled, unbound | Labels each display, type one to jump | Multi-monitor setups |
| Your own | unbound | A name, an indicator and a key table you declare in config | Window management layers, app-specific keys |
Primary is Cmd on macOS and Ctrl on Linux and Windows. Linux ships without these defaults so they never collide with terminal shortcuts. Every binding is remappable.
Every mode except monitor select gives you left, right and middle click, double and triple click, drag with any button, and sticky modifiers. [held_repeat] adds held-key glide, with acceleration if you want it.
Everything is one TOML file. Apply edits with neru config reload, or change one value with neru config set.
[hotkeys]
"Primary+Shift+Space" = "hints --action left_click" # click on select, Vimium style
"Primary+Shift+W" = "mode window"
[macros]
click_and_exit = ["action left_click --bail-on-error", "idle"]
[[hints.app_configs]]
bundle_id = "com.brave.Browser" # bundle ID on macOS, WM_CLASS or app_id on Linux, exe path on Windows
hotkeys = { "Return" = "macro click_and_exit" }
[modes.window]
indicator = "Window"
[modes.window.hotkeys]
"h" = "exec yabai -m window --focus west"
"l" = "exec yabai -m window --focus east"
Every hotkey command is also a shell command:
neru hints --role button --text save # only buttons whose text matches
neru run "action save_cursor_pos" "hints --action left_click" \
"action wait_for_mode_exit" "action restore_cursor_pos"
neru config set hints.strategy contour
neru doctor # diagnose permissions and backends
Themes, indicators, smooth cursor and scroll, virtual pointer, app exclusions and screen-share hiding are options too.
Status bars, launchers and voice tools can follow Neru and drive it:
neru watch --event mode_enter,mode_exit # one JSON line per mode change
neru := client.New() // github.com/y3owk1n/neru/client
status, err := neru.Status(ctx)
_, err = neru.Send(ctx, "hints", "--action", "left_click")
Which interface fits which tool is in Build on Neru. With a coding agent, the neru-build-integration skill writes and tests one against your installed version.
Read the docs at neru.kylewong.my, or browse docs/ here on GitHub.
"neru: the ACTUAL BEST app for ditching mouse"
Bug reports, especially on Linux and Windows, and pull requests are welcome. Start with CONTRIBUTING.md.
If Neru has earned a place in your workflow, sponsor it. Need only window management? mimi is Neru's window and space features as a standalone tool.
MIT. See LICENSE.
Made with ❤️ by y3owk1n
606 followers · starred Sep 2026
1,198 followers · starred Sep 2026
768 followers · starred Jul 2026
600 followers · starred Aug 2026