projects/wezterm-bell
maintained wezterm-bell order 12

WezTerm Bell for Claude Code

A tiny Rust binary that triggers WezTerm visual bell and toast notifications from Claude Code hooks, with project-aware per-pane targeting

Stack
Rust
Status
Maintained
Released
2026
License
MIT

Overview

A zero-dependency Rust binary that bridges Claude Code hook events to WezTerm’s visual bell. Claude Code captures all stdout/stderr from hook commands, and Windows ConPTY drops control characters written directly to CONOUT$, so the BEL character can’t reach WezTerm through normal means.

Instead, bell.exe writes a signal file to ~/.claude/bell_signal containing the project name, pane ID, hook event name, and message. WezTerm’s Lua timer polls this file every second, locates the target pane by ID, and injects the BEL character via inject_output. Toast notifications display for 4 seconds with the project name and event type.

Filters out subagent events so only main conversation stops and notifications trigger the bell. Works with stock WezTerm for bell and toast notifications; per-pane header bars require the WezTerm Evo fork.

Highlights

Injects BEL into target pane via inject_output
Toast notifications with project and event name
Per-pane routing via WEZTERM_PANE env var
Filters subagent events, main stops only
Zero dependencies, strip + LTO release build