Add tray desktop notification helper

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Luna 2026-07-03 07:35:59 -07:00
parent a57cf4a16f
commit 2fce7d412a
2 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1,27 @@
# SPDX-License-Identifier: GPL-3.0-or-later
"""Desktop notification helper. Prefers notify-send; no GUI imports."""
from __future__ import annotations
import shutil
import subprocess
from typing import Callable, Optional, Sequence
Runner = Callable[[Sequence[str]], "subprocess.CompletedProcess"]
def _default_runner(cmd: Sequence[str]) -> "subprocess.CompletedProcess":
try:
return subprocess.run(list(cmd), capture_output=True, text=True,
timeout=10, check=False)
except (OSError, subprocess.TimeoutExpired) as exc:
return subprocess.CompletedProcess(list(cmd), 127, "", str(exc))
def notify(title: str, body: str, *, runner: Optional[Runner] = None,
which: Callable[[str], object] = shutil.which) -> bool:
"""Show a desktop notification. Returns True if notify-send was invoked."""
if which("notify-send") is None:
return False
run = runner or _default_runner
run(["notify-send", "-a", "Enodia Sentinel", title, body])
return True