Desktop-Benachrichtigungen über HTTP.
Linux-Desktop-Benachrichtigungen mit einem einzigen HTTP-POST an jedes Container-Display senden. Der Notification-Server ruft notify-send auf dem angegebenen Display auf.
# Benachrichtigung an Display 0 senden
curl -X POST ".../notify"
-d '["display":"0","summary":"Build Complete","urgency":"normal"]'
# Response
["message":"Notification sent successfully","success":true]
Drei Schritte. Je ein HTTP-Aufruf.
Jede Benachrichtigung folgt dem gleichen Lifecycle: auslösen, Verlauf abrufen oder live streamen, dann beenden wenn erledigt.
Trigger
POST /notify sendet einen notify-send-Aufruf an das Ziel-X11-Display. display, summary und optional urgency, body, expire_time oder icon angeben.
# Fire a notification
POST /notify
# Request body
["display":"0","summary":"Build Complete",
"urgency":"normal","body":"All tests passed"]
Abrufen oder streamen
GET /[display] ruft den Benachrichtigungsverlauf ab, mit optionalen Filtern für limit, since, username und session. Per WebSocket zu /stream?displays=0 verbinden für Echtzeit-Push-Updates.
# Poll history
curl ".../0?limit=50"
# Or open a WebSocket
new WebSocket("wss://.../stream?displays=0")
Dismiss
POST /dismiss markiert Benachrichtigungs-IDs als erledigt — sie werden aus nachfolgenden GET-Antworten herausgefiltert. DELETE /dismiss setzt den Erledigt-Status zurück, sodass sie wieder sichtbar werden.
# Dismiss by ID
POST /dismiss
["displayId":"0","notificationIds":[10,11,12]]
# Clear dismissed state
DELETE /dismiss?displayId=0
low. normal. critical.
Drei Dringlichkeitsstufen sind direkt auf notify-send-Verhalten abgebildet. Die richtige auswählen und der Notification-Daemon erledigt den Rest.
Verschwindet schnell. expire_time: 3000 für Hintergrundaufgaben, Telemetrie oder Informations-Pings setzen, die nicht stoeren sollen.
"urgency": "low",
"expire_time": 3000
Standard. Standardmäßig, wenn urgency weggelassen wird. Der Notification-Daemon zeigt sie beim konfigurierten Timeout und schließt sie automatisch.
"urgency": "normal"
// default — omit to use this
Persistent — erfordert manuelles Schließen. expire_time: 0 für Systemfehler, Build-Fehler oder alles, was sofortige Aufmerksamkeit braucht.
"urgency": "critical",
"expire_time": 0
Verlauf abrufen oder live streamen.
Zwei Lesekanaele für verschiedene Bedürfnisse: REST für Audit-Logs und Einmalabfragen, WebSocket für Dashboards und Echtzeit-Monitoring.
Benachrichtigungsverlauf für ein Display abrufen. Nach limit, since-Zeitstempel, Benutzername oder Session-ID filtern.
# Letzte 50 für Display 0 abrufen
curl ".../0?limit=50"
# zeitgefiltert
curl ".../0?since=1749025000000"
JSON-Array von Benachrichtigungsobjekten mit id, summary, urgency, timestamp und icon_url.
Ein oder mehrere Displays mit displays=0,:1,2 oder displays=all abonnieren. Erhält Push-Nachrichten, wenn sie ankommen. Für Dashboards und Monitoring.
# Öffne einen WebSocket
const ws = new WebSocket(
"wss://.../stream?displays=0"
)
# bei Nachricht
ws.onmessage = (e) => {
const msg = JSON.parse(e.data)
// msg.type === 'notification'
}
[ type: "notification", data: [ id, summary, urgency, timestamp ] ] pushed on every new notification.
Von Build-Pipelines bis ML-Jobs.
Überall wo ein lang laufender Prozess den Abschluss oder Fehler signalisieren muss, genügt ein HTTP-POST.
CI/CD-Alarme
Lang laufende Builds sind abgeschlossen. HTTP-POST löst eine Benachrichtigung auf dem Container-Display aus — sichtbar in jeder aktiven Display-Session.
System-Monitoring
Server-Alarme werden als Desktop-Benachrichtigung auf dem X11-Display des Containers weitergeleitet, sichtbar in jeder aktiven Display-Session.
Lang laufende Aufgaben
Datenexporte, Video-Rendering, ML-Modell-Training, Backup-Abschluss — benachrichtigen wenn fertig, ohne zu pollen.
Automatisierte Workflows
Cron-Jobs, geplante Aufgaben und Automatisierungs-Skripte benachrichtigen das Container-Display bei Abschluss oder Fehler.
8 Endpoints. Ein Benachrichtigungsserver.
Auslösen, abrufen, streamen und verwerfen von Desktop-Benachrichtigungen — plus Icons und Überwachung — alles über einfaches HTTP.
Auslösen
{count, plural, =1 {# Endpoint} other {# Endpoints}'}POST .../api/v1/notifications/notify → {"success":true}
Abrufen & Streamen
{count, plural, =1 {# Endpoint} other {# Endpoints}'}GET .../api/v1/notifications/{display}?limit=50&since=...
Icons
{count, plural, =1 {# Endpoint} other {# Endpoints}'}GET .../api/v1/notifications/icons/{iconId} → image/png
Gesundheit & Metriken
{count, plural, =1 {# Endpoint} other {# Endpoints}'}GET .../api/v1/notifications/health → {"status":"UP"}
Desktop-Benachrichtigungen über HTTP.
Jedes Skript, jeder Service oder jede Automatisierung, die eine HTTP-Anfrage stellen kann, kann eine Desktop-Benachrichtigung an dein Container-Display senden.