Files
fn_registry/functions/infra/notify_desktop.md
T
egutierrez 32c7336bf6 feat(infra): auto-commit con 56 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-21 14:22:55 +02:00

2.6 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
notify_desktop function go infra 1.0.0 impure func NotifyDesktop(title, body string) error Lanza una notificacion de escritorio en Linux via el binario notify-send (libnotify). Degradacion limpia: si notify-send no esta en el PATH devuelve nil sin error (no es fallo que la maquina no tenga servidor de notificaciones). Cuando existe ejecuta: notify-send --app-name=fleetview --urgency=normal -- <title> <body>, usando -- para que un texto que empiece por - no se interprete como flag. title vacio cae a un default; body puede ir vacio.
orchestration
notify
infra
desktop
libnotify
false error_go_core
fmt
os/exec
name desc
title titulo de la notificacion; si es cadena vacia usa el default 'Notificación'
name desc
body cuerpo de la notificacion; puede ir vacio (notify-send lo acepta)
error: nil si la notificacion se mostro o si notify-send no esta instalado (degradacion silenciosa); error envuelto con contexto solo si la ejecucion real de notify-send falla false
functions/infra/notify_desktop.go

Ejemplo

// Avisar al usuario en el escritorio de que un agente termino.
err := infra.NotifyDesktop("✅ Agente terminó", "EDA dataset X — revísalo")
if err != nil {
    // notify-send existe pero fallo al ejecutarse
    log.Printf("no se pudo notificar: %v", err)
}
// En una maquina sin notify-send, err es nil y la notificacion se omite.

Cuando usarla

Usala para avisar al usuario en el escritorio cuando un proceso largo o un agente termina su trabajo (fin de un EDA, build, deploy, o tarea desatendida del orquestador). Es el toque final tras una operacion que el humano no esta mirando en directo: dispara la notificacion y sigue, sin preocuparte de si la maquina destino tiene servidor de notificaciones.

Gotchas

  • Solo Linux con servidor de notificaciones (libnotify). Depende del binario notify-send; en otros SO no aplica.
  • Headless / sin DBUS no muestra nada pero NO falla. Si notify-send no esta en el PATH, devuelve nil (degradacion silenciosa): el caller no se rompe por carecer de notificaciones.
  • Requiere sesion grafica activa. Aunque notify-send exista, sin una sesion grafica con DBUS la notificacion puede no aparecer; en ese caso Run() puede devolver error real, que se devuelve envuelto.
  • -- antes de los argumentos posicionales evita que un title/body que empiece por - se interprete como flag. No lo quites.