Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ reply, or a permission prompt — `hey` plays a short sound, **but only if you'v
idle longer than a threshold**. A fast back-and-forth stays silent; you're summoned
only when you've likely stepped away.

Sound only — no speech, no listening. Built for [Claude Code](https://claude.com/claude-code)
No listening, ever. Most of the alerts are plain sounds; one (`yourturn`) is a
short pre-rendered clip of a voice, because a spoken word cuts through ambient
audio better than a blip. Built for [Claude Code](https://claude.com/claude-code)
hooks, but the CLI works anywhere.

## Install
Expand All @@ -21,7 +23,7 @@ ln -sf ~/hey/hey ~/.local/bin/hey # put `hey` on PATH
## Use

```sh
hey # list the sounds: ping, chirp, knock, coin, chime
hey # list the sounds: ping, chirp, knock, coin, chime, yourturn
hey knock 2 45 # <sound> [times] [idle-threshold-s]; previews once, then active
hey off # stop
```
Expand Down Expand Up @@ -61,10 +63,13 @@ gitignored `.env`).

## Sounds

Five bundled sounds live in `assets/`. The four synthesized ones (`ping`, `chirp`,
Six bundled sounds live in `assets/`. The four synthesized ones (`ping`, `chirp`,
`knock`, `coin`) are generated by `assets/generate.py` — pure stdlib, no deps;
regenerate or tweak the palette and commit the results. Point `HEY_DIR` elsewhere
to use your own.
regenerate or tweak the palette and commit the results. `yourturn.wav` is speech,
rendered once offline with [johnny](https://github.com/4242labs/johnny) (Kokoro,
voice `af_sarah`), then trimmed and normalised — a committed file like any other,
so nothing synthesises at alert time and no text ever leaves the machine. Point
`HEY_DIR` elsewhere to use your own.

## Config

Expand Down
Binary file added assets/yourturn.wav
Binary file not shown.
3 changes: 3 additions & 0 deletions config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,16 @@ HEY_THRESHOLD="${HEY_THRESHOLD:-45}" # default idle seconds before a beep fi
HEY_TIMES="${HEY_TIMES:-1}" # default number of plays per alert
HEY_GAP="${HEY_GAP:-0.25}" # seconds between repeated plays
# One row per sound: "name|file". Names match case-insensitively.
# A spoken alert is just another row — the player does not care whether the
# file is a synthesized blip or a voice saying two words.
hey_registry() {
cat <<EOF
ping|$HEY_DIR/ping.wav
chirp|$HEY_DIR/chirp.wav
knock|$HEY_DIR/knock.wav
coin|$HEY_DIR/coin.wav
chime|$HEY_DIR/chime.wav
yourturn|$HEY_DIR/yourturn.wav
EOF
}
hey_menu() { # just the names, one per line
Expand Down