Navi-style notifications for Claude Code — tab flashing and "Hey! Listen!" audio alerts when Claude needs your attention.
Works with Ghostty (and any terminal that supports BEL + OSC 9).
- Tab flash — sends a BEL character every time Claude finishes responding, triggering Ghostty's bell indicator (emoji in tab title + dock bounce)
- Navi sound — plays the classic "Hey! Listen!" audio when Claude is actively waiting for your input (questions, plan approval, task complete)
- Desktop notification — sends an OSC 9 notification so you get a system alert even if the terminal is buried
- macOS (uses
afplayfor audio) - jq —
brew install jq - Claude Code
- A "Hey! Listen!" sound file (see below)
You need to supply your own Navi sound clip (Nintendo IP — not included).
The clip is available on Wikipedia under fair use. Download and save it:
curl -L -o sounds/hey-listen.ogg "https://upload.wikimedia.org/wikipedia/en/3/3d/Navi_%22Hey%2C_Listen%22_from_Ocarina_of_Time.ogg"Or use any WAV/MP3/OGG file — just save it as sounds/hey-listen.ogg (or set HEY_LISTEN_SOUND to point elsewhere).
git clone https://github.com/andyjmorgan/hey-listen.git
cd hey-listen
./install.shThe installer automatically downloads the sound from Wikipedia and converts it to WAV.
The installer merges hook config into ~/.claude/settings.json. It won't clobber your existing settings.
Add to ~/.config/ghostty/config:
bell-features = title,attention
desktop-notifications = true
title adds a bell emoji to the tab when BEL fires. attention bounces the dock icon.
Note: True per-tab color flashing isn't available in Ghostty yet (feature request). The bell emoji + dock bounce is the current best.
Custom sound path — set the HEY_LISTEN_SOUND environment variable:
export HEY_LISTEN_SOUND="/path/to/your/sound.wav"Disable the Stop hook — if the BEL on every Claude response is too noisy, remove the Stop hook from ~/.claude/settings.json and keep only Notification.
./uninstall.shRemoves the hooks from ~/.claude/settings.json. Delete the repo to fully clean up.
Claude Code hooks fire shell commands on lifecycle events:
| Event | What happens |
|---|---|
Notification |
Navi sound + BEL flash + desktop notification |
Stop |
BEL flash (tab indicator) |
The hook script reads the event from stdin JSON and acts accordingly.
MIT
