
2.1K
CAHere’s how to make Claude code notify you via sound once it’s stopped executing:
—
#!/usr/bin/env python3
import os
import random
import subprocess
import sys
from pathlib import Path
def get_sounds_dir():
return Path(__file__).parent
def play_sound(filepath):
system = sys.platform
if system == “darwin”:
subprocess.run([“afplay”, str(filepath)])
elif system == “win32”:
import winsound
if filepath.suffix.lower() == “.wav”:
winsound.PlaySound(str(filepath), winsound.SND_FILENAME)
else:
# For mp3 on Windows, use PowerShell
subprocess.run([
“powershell”, “-c”,
f”Add-Type -AssemblyName presentationCore; “
f”$p = New-Object System.Windows.Media.MediaPlayer; “
f”$p.Open(‘{filepath}’); $p.Play(); Start-Sleep -Seconds 3”
])
else: # Linux
# Try aplay for wav, mpg123 or ffplay for mp3
if filepath.suffix.lower() == “.wav”:
subprocess.run([“aplay”, str(filepath)])
else:
# Try mpg123 first, fall back to ffplay
try:
subprocess.run([“mpg123”, “-q”, str(filepath)])
except FileNotFoundError:
subprocess.run([“ffplay”, “-nodisp”, “-autoexit”, str(filepath)])
def main():
sounds_dir = get_sounds_dir()
sounds = list(sounds_dir.glob(“*.mp3”)) + list(sounds_dir.glob(“*.wav”))
if not sounds:
print(“No sound files found”, file=sys.stderr)
sys.exit(1)
sound = random.choice(sounds)
play_sound(sound)
if __name__ == “__main__”:
main()
—
@callumelder.dev









![#Linuxserver Reel by @latestincyber - [2026-02-10] Anthropic's new Claude Opus 4.6 finds 500+ zero days... it came out on Thursday
help me reach 500? pwease?
my goal is to share tech ne](https://image.pictame.com/img/627892035_17912014659305192_8093465877781128261_n.jpg?hash=aHR0cHM6Ly9zY29udGVudC1wcmcxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS44Mjc4Ny0xNS82Mjc4OTIwMzVfMTc5MTIwMTQ2NTkzMDUxOTJfODA5MzQ2NTg3Nzc4MTEyODI2MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfczY0MHg2NDBfdHQ2Jl9uY19jYXQ9MTA2JmNjYj03LTUmX25jX3NpZD0xOGRlNzQmZWZnPWV5SmxabWRmZEdGbklqb2lRMHhKVUZNdVltVnpkRjlwYldGblpWOTFjbXhuWlc0dVF6TWlmUSUzRCUzRCZfbmNfb2hjPTcyUzZtQWFxLU5zUTdrTnZ3RktHM1hhJl9uY19vYz1BZG9Mc3ZieEFrWmNLcl9zMGExUTdEbU9XNnhtdFRTMzRkYVZRd0pGYXBHVFJOSTVsVFpZakQ3UmRGMWtXeTJ5X3V3Jl9uY196dD0yMyZfbmNfaHQ9c2NvbnRlbnQtcHJnMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2dpZD1QTW91ZmZmczg0MVFyYm9MZ29NYW5BJl9uY19zcz03YTMwZiZvaD0wMF9BZngzOWxPYjJNUUltaDNkVk83cGJ1dm5jTkdQTWQyWFRKQ2dRUWM2ekNRajdnJm9lPTY5Q0QyQjgx)
