Compare commits

...

4 Commits

Author SHA1 Message Date
pdxlocations
ade8343104 Merge branch 'main' into notification-sound 2025-06-06 22:03:56 -07:00
pdxlocations
d6427f3fca use subprocess 2025-06-06 22:00:38 -07:00
pdxlocations
fba32bb10c add error handling for sounds 2025-05-29 10:30:41 -07:00
pdxlocations
89fc9a7ac1 add sound for mac and linux 2025-05-29 10:07:38 -07:00

View File

@@ -1,6 +1,8 @@
import logging import logging
import os import os
import platform import platform
import shutil
import subprocess
import time import time
from datetime import datetime from datetime import datetime
from typing import Any, Dict from typing import Any, Dict
@@ -25,12 +27,38 @@ from contact.utilities.singleton import ui_state, interface_state, app_state
def play_sound(): def play_sound():
if platform.system() == "Darwin": # macOS try:
os.system("afplay /System/Library/Sounds/Ping.aiff") system = platform.system()
elif platform.system() == "Linux":
os.system("paplay /usr/share/sounds/freedesktop/stereo/complete.oga") if system == "Darwin": # macOS
else: sound_path = "/System/Library/Sounds/Ping.aiff"
print("\a") # fallback if os.path.exists(sound_path):
subprocess.run(["afplay", sound_path], check=True)
return
else:
print(f"[WARN] macOS sound file not found: {sound_path}")
elif system == "Linux":
sound_path = "/usr/share/sounds/freedesktop/stereo/complete.oga"
if os.path.exists(sound_path):
if shutil.which("paplay"):
subprocess.run(["paplay", sound_path], check=True)
return
elif shutil.which("aplay"):
subprocess.run(["aplay", sound_path], check=True)
return
else:
print("[WARN] No sound player found (paplay/aplay)")
else:
print(f"[WARN] Linux sound file not found: {sound_path}")
except subprocess.CalledProcessError as e:
print(f"[ERROR] Sound playback failed: {e}")
except Exception as e:
print(f"[ERROR] Unexpected error: {e}")
# Final fallback: terminal beep
print("\a")
def on_receive(packet: Dict[str, Any], interface: Any) -> None: def on_receive(packet: Dict[str, Any], interface: Any) -> None: