إشعارات سطح المكتب عبر HTTP.
أرسل إشعارات سطح مكتب Linux إلى أي عرض حاوية بـ HTTP POST واحد. يستدعي خادم الإشعارات notify-send على شاشة X11 للحاوية — أطلق إشعاراً أو اجلب السجل أو دفق مباشرةً.
# Send a notification to display 0
curl -X POST ".../notify"
-d '["display":"0","summary":"Build Complete","urgency":"normal"]'
# Response
["message":"Notification sent successfully","success":true]
ثلاث خطوات. استدعاء HTTP واحد لكل منها.
كل إشعار يتبع نفس دورة الحياة: أطلقه، اجلب التاريخ أو ابثّ حياً، ارفضه. استدعاء HTTP واحد لكل خطوة.
إطلاق
POST /notify sends a notify-send call to the target X11 display. Supply display, summary, and optionally urgency, body, expire_time, or icon.
# Fire a notification
POST /notify
# Request body
["display":"0","summary":"Build Complete",
"urgency":"normal","body":"All tests passed"]
جلب أو بث
GET /[display] retrieves notification history with optional limit, since, username, and session filters. Connect via WebSocket to /stream?displays=0 for real-time push updates.
# Poll history
curl ".../0?limit=50"
# Or open a WebSocket
new WebSocket("wss://.../stream?displays=0")
رفض
POST /dismiss marks notification IDs as dismissed — they are filtered from subsequent GET responses. DELETE /dismiss clears the dismissed state, making them visible again.
# Dismiss by ID
POST /dismiss
["displayId":"0","notificationIds":[10,11,12]]
# Clear dismissed state
DELETE /dismiss?displayId=0
low. normal. critical.
ثلاثة مستويات إلحاح تتوافق مباشرةً مع سلوك notify-send. اختر المناسب وتصرّف تلقائياً بناءً عليه.
يُرفَض سريعاً. اضبط expire_time: 3000 للمهام الخلفية وقياسات الأداء والمعلومات.
"urgency": "low",
"expire_time": 3000
قياسي. الافتراضي عند حذف urgency. برنامج الإشعارات يعرضه بالإعدادات الافتراضية.
"urgency": "normal"
// default — omit to use this
دائم — يتطلب الرفض اليدوي. اضبط expire_time: 0 لأعطال النظام والإجراءات التي تتطلب التدخل.
"urgency": "critical",
"expire_time": 0
اسحب التاريخ أو بثّه حياً.
قناتان للقراءة تخدمان احتياجات مختلفة: REST لسجلات التدقيق والاستعلامات الفردية، وSSE للتدفق الحي.
اسحب تاريخ الإشعارات لعرض. فلتر حسب الحد والطابع الزمني واسم المستخدم.
# احصل على آخر 50 للعرض 0
curl ".../0?limit=50"
# مُصفَّى حسب الوقت
curl ".../0?since=1749025000000"
مصفوفة JSON من كائنات الإشعارات مع id وsummary وurgency وtimestamp وicon.
اشترك في عرض واحد أو أكثر بـ displays=0,:1,2 أو displays=all. يستقبل إشعارات حية.
# فتح WebSocket
const ws = new WebSocket(
"wss://.../stream?displays=0"
)
# في الرسالة
ws.onmessage = (e) => {
const msg = JSON.parse(e.data)
// msg.type === 'notification'
}
[ type: "notification", data: [ id, summary, urgency, timestamp ] ] تُدفَع عند كل إشعار.
من خطوط البناء إلى مهام ML.
في أي مكان تحتاج عملية طويلة الأمد إلى الإشارة بالاكتمال أو الفشل، HTTP POST واحد يكفي.
تنبيهات CI/CD
تكتمل البنيات طويلة الأمد. HTTP POST يطلق إشعاراً على عرض الحاوية.
مراقبة النظام
تنبيهات الخادم تُوجَّه إلى إشعار سطح مكتب على عرض X11 للحاوية.
المهام طويلة الأمد
تصدير البيانات، تصيير الفيديو، تدريب نماذج ML، اكتمال النسخ الاحتياطي — أرسل إشعاراً عند الانتهاء.
سير العمل الآلي
مهام cron والمهام المجدولة وسكربتات الأتمتة ترسل إشعاراً لعرض الحاوية عند الاكتمال.
8 نقاط نهاية. خادم إشعارات واحد.
أطلق، اجلب، ابثّ مباشرةً، والرفض — بالإضافة إلى الأيقونات والمراقبة الصحية — كل ذلك عبر HTTP عادي.
الإطلاق
{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}POST .../api/v1/notifications/notify → {"success":true}
الجلب والبث
{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}GET .../api/v1/notifications/{display}?limit=50&since=...
الأيقونات
{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}GET .../api/v1/notifications/icons/{iconId} → image/png
الصحة والمقاييس
{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}GET .../api/v1/notifications/health → {"status":"UP"}
الإشعارات على بُعد HTTP POST واحد.
أي سكربت أو خدمة أو أتمتة يمكنها إرسال طلب HTTP يمكنها إرسال إشعار سطح مكتب.