neru

module
v1.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2026 License: MIT

README ยถ

Neru

Master your keyboard, refine your workflow

Navigate macOS without touching your mouse - keyboard-driven productivity at its finest ๐Ÿ–ฑ๏ธโŒจ๏ธ

License Platform Go Version Latest Release

Get Started โ€ข Features โ€ข Docs โ€ข Contributing


โœจ What is Neru?

Neru (็ทดใ‚‹) - a Japanese word meaning "to refine, polish, and master through practice" - is a free, open-source keyboard navigation tool for macOS. Navigate, click, and scroll anywhere on your screen without ever touching your mouse.

Feel free to read the progress and how I use Neru here if you're interested with it.

๐ŸŽฏ Why Choose Neru?
  • ๐Ÿ†“ Always free - No paywalls, no subscriptions, no "upgrade to pro"
  • ๐ŸŽฌ Universal compatibility - Works with native macOS apps, Electron apps, and all browsers
  • โšก Lightning fast - Native performance with instant response
  • ๐Ÿ› ๏ธ Power-user friendly - Text-based config for version control and dotfile management
  • ๐Ÿค Community-owned - Your contributions shape the project
  • ๐Ÿ”ง Scriptable - CLI commands enable automation and integration
๐Ÿ†š Free Alternative To

Neru is a capable free and open-source replacement for:

  • Homerow - Modern keyboard navigation (paid)
  • Shortcat - Keyboard productivity tool (discontinued)
  • Vimac - Vim-style navigation (unmaintained)
  • Mouseless - Grid based keyboard navigation (paid)

๐ŸŽฏ Core Features

Feature Description
๐ŸŽฏ Hint & Grid Labels Click any visible element using keyboard labels
โšก Direct Actions Perform mouse actions directly in hints/grid mode (Shift+L, etc.)
๐Ÿ“œ Vim Scrolling Fully configurable scroll keys: j/k, gg/G, custom bindings
๐ŸŒ Universal Support Native apps, Electron, Chrome, Firefox, system UI
โšก Native Performance Built with Objective-C and Go for instant response
๐Ÿ› ๏ธ TOML Config Highly customizable with text-based configuration
๐Ÿšซ App Exclusion Disable Neru in specific applications
๐Ÿ’ฌ CLI Control IPC commands for scripting and automation
๐ŸŽฎ How It Works

Three Navigation Modes:

  1. Hints Mode - Accessibility-based labels on clickable elements
  2. Grid Mode - Universal coordinate-based navigation (works everywhere!)
  3. Scroll Mode - Vim-style scrolling at cursor position

๐Ÿš€ Get Started

Install
# Homebrew (recommended)
brew tap y3owk1n/tap
brew install --cask y3owk1n/tap/neru

# Nix Flake
# Add to flake.nix: inputs.neru.url = "github:y3owk1n/neru";
# See docs/INSTALLATION.md for nix-darwin/home-manager setup

# Or build from source
git clone https://github.com/y3owk1n/neru.git
cd neru && just release
Grant Permissions
  1. Open System Settings
  2. Navigate to Privacy & Security โ†’ Accessibility
  3. Enable Neru
Try It
# Start Neru
open -a Neru

# Or install as launchd service for auto-startup
neru services install

# Try default hotkeys:
# Cmd+Shift+Space - Hint mode
# Cmd+Shift+G     - Grid mode
# Cmd+Shift+S     - Scroll

When in hint or grid mode, selecting a hint or label will move the cursor to that point. You can also press action keybindings (e.g., Shift+L for left click, Shift+R for right click) to perform actions without switching modes.

See Installation Guide for detailed setup instructions.


๐Ÿ“š Documentation

โš™๏ธ Configuration

Neru uses TOML configuration with sensible defaults. Customize everything from hotkeys to visual styling.

[hotkeys]
"Cmd+Shift+Space" = "hints"
"Cmd+Shift+G" = "grid"

[hints]
hint_characters = "asdfghjkl"
background_color = "#FFD700"

See Configuration Guide for all options.

๐Ÿ—๏ธ Design Philosophy

Why TOML config over GUI?

  • โšก Faster editing than clicking through settings
  • ๐Ÿ“ Version control friendly (dotfiles, git)
  • ๐Ÿ”ง More powerful than UI constraints
  • ๐Ÿ› ๏ธ Reduces maintenance burden

Why we recommend grid over hints navigation?

  • โœ… Works everywhere (native apps, Electron, browsers, system UI)
  • โšก Fast and reliable (no accessibility tree traversal)
  • ๐ŸŽฏ Always accurate (clicks at exact coordinates)
  • ๐Ÿ”ง Simple maintenance (no app-specific workarounds)

[!NOTE] We support both hints and grid modes, but we recommend using grid mode as it is mostly usable out of the box without further configuration.

๐Ÿ“Š Project Status

Actively maintained with community contributions. PRs welcome!

Contribution ideas:

  • Improved app icons & logo
  • More navigation mechanism
  • More mouse actions
  • Website & docs
  • More configuration examples for different use cases

โœ… Compatibility

Neru works with everything:

  • Native macOS Apps - Finder, Safari, System Settings, Mail, etc.
  • Electron Apps - VS Code, Cursor, Slack, Spotify, Obsidian, Discord
  • Browsers - Chrome, Firefox, Safari, Arc, Brave, Zen
  • Creative Apps - Adobe Illustrator, Photoshop, Figma
  • System UI - Menubar, Dock, Mission Control, Notification Center

See Troubleshooting Guide for app-specific issues.

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

  1. Fork & Clone the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes following our Coding Standards
  4. Test thoroughly (just test && just lint)
  5. Commit conventionally and open a Pull Request

Guidelines:

  • Keep PRs focused on a single change
  • Add tests for new features
  • Update documentation
  • Follow existing code style

See Development Guide for build instructions and architecture details.


๐Ÿ™ Acknowledgments

Inspired by these excellent projects:

๐Ÿ’ฌ Support

๐Ÿ“„ License

MIT License - see LICENSE for details.

Made with โค๏ธ by y3owk1n

Directories ยถ

Path Synopsis
cmd
neru command
Package main is the entry point for the Neru application.
Package main is the entry point for the Neru application.
internal
app
Package app contains the main application logic for Neru.
Package app contains the main application logic for Neru.
app/components
Package components provides feature-specific implementations.
Package components provides feature-specific implementations.
app/components/grid
Package grid provides grid-based navigation functionality for Neru.
Package grid provides grid-based navigation functionality for Neru.
app/components/hints
Package hints provides accessibility tree-based hint generation and navigation.
Package hints provides accessibility tree-based hint generation and navigation.
app/components/overlayutil
Package overlayutil provides shared utilities for overlay management.
Package overlayutil provides shared utilities for overlay management.
app/components/scroll
Package scroll provides Vim-style scrolling functionality for the Neru application.
Package scroll provides Vim-style scrolling functionality for the Neru application.
app/components/systray
Package systray provides system tray functionality for the Neru application.
Package systray provides system tray functionality for the Neru application.
app/modes
Package modes implements the different operational modes for Neru.
Package modes implements the different operational modes for Neru.
app/services
Package services implements application use cases and orchestration logic.
Package services implements application use cases and orchestration logic.
cli
Package cli provides the command-line interface for the Neru application.
Package cli provides the command-line interface for the Neru application.
cli/cliutil
Package cliutil provides shared utilities for CLI command implementations.
Package cliutil provides shared utilities for CLI command implementations.
config
Package config provides comprehensive configuration management for the Neru application.
Package config provides comprehensive configuration management for the Neru application.
core
Package core provides the core business logic and infrastructure for Neru.
Package core provides the core business logic and infrastructure for Neru.
core/domain
Package domain defines the core domain models, constants, and shared types for the Neru application.
Package domain defines the core domain models, constants, and shared types for the Neru application.
core/domain/action
Package action defines domain models for user actions.
Package action defines domain models for user actions.
core/domain/element
Package element provides domain models for UI elements.
Package element provides domain models for UI elements.
core/domain/grid
Package grid provides domain models and logic for grid-based navigation.
Package grid provides domain models and logic for grid-based navigation.
core/domain/hint
Package hint provides hint generation algorithms for UI elements.
Package hint provides hint generation algorithms for UI elements.
core/domain/state
Package state provides centralized state management for the Neru application.
Package state provides centralized state management for the Neru application.
core/errors
Package errors provides domain-specific error types and utilities.
Package errors provides domain-specific error types and utilities.
core/infra/accessibility
Package accessibility provides an adapter for the macOS accessibility API.
Package accessibility provides an adapter for the macOS accessibility API.
core/infra/appwatcher
Package appwatcher provides comprehensive functionality for monitoring application lifecycle events on macOS, enabling Neru to respond to application launches, terminations, activations, and deactivations.
Package appwatcher provides comprehensive functionality for monitoring application lifecycle events on macOS, enabling Neru to respond to application launches, terminations, activations, and deactivations.
core/infra/bridge
Package bridge provides comprehensive Go bindings for Objective-C APIs used in the Neru application, enabling seamless integration with macOS system frameworks for accessibility, hotkeys, and overlay functionality.
Package bridge provides comprehensive Go bindings for Objective-C APIs used in the Neru application, enabling seamless integration with macOS system frameworks for accessibility, hotkeys, and overlay functionality.
core/infra/config
Package config provides configuration management implementation.
Package config provides configuration management implementation.
core/infra/electron
Package electron provides enhanced accessibility support for Electron-based applications, enabling proper UI element detection in applications that don't properly expose their interface to the macOS accessibility API by default.
Package electron provides enhanced accessibility support for Electron-based applications, enabling proper UI element detection in applications that don't properly expose their interface to the macOS accessibility API by default.
core/infra/eventtap
Package eventtap for EventTap adapter.
Package eventtap for EventTap adapter.
core/infra/hotkey
Package hotkey implements the hotkey adapter.
Package hotkey implements the hotkey adapter.
core/infra/hotkeys
Package hotkeys provides comprehensive functionality for registering and handling global hotkeys in the Neru application using the Carbon Event Manager API, enabling system-wide keyboard shortcuts.
Package hotkeys provides comprehensive functionality for registering and handling global hotkeys in the Neru application using the Carbon Event Manager API, enabling system-wide keyboard shortcuts.
core/infra/ipc
Package ipc implements the IPC adapter.
Package ipc implements the IPC adapter.
core/infra/logger
Package logger provides comprehensive structured logging functionality for the Neru application, using the zap logging library with file rotation support to ensure reliable and efficient logging.
Package logger provides comprehensive structured logging functionality for the Neru application, using the zap logging library with file rotation support to ensure reliable and efficient logging.
core/infra/metrics
Package metrics provides metrics collection and reporting.
Package metrics provides metrics collection and reporting.
core/infra/overlay
Package overlay provides an adapter for the UI overlay system.
Package overlay provides an adapter for the UI overlay system.
core/infra/trace
Package trace provides tracing utilities.
Package trace provides tracing utilities.
core/ports
Package ports defines interfaces for external dependencies.
Package ports defines interfaces for external dependencies.
core/ports/mocks
Package mocks provides mock implementations of port interfaces for testing.
Package mocks provides mock implementations of port interfaces for testing.
ui
Package ui implements the user interface components for the Neru application.
Package ui implements the user interface components for the Neru application.
ui/coordinates
Package coordinates provides coordinate conversion and transformation utilities for Neru.
Package coordinates provides coordinate conversion and transformation utilities for Neru.
ui/overlay
Package overlay provides overlay functionality for the Neru application.
Package overlay provides overlay functionality for the Neru application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL