انتقل إلى المحتوى
الرئيسية / Kit / Notifications / الرئيسية
NotificationsHoody Notifications

إشعارات سطح المكتب عبر HTTP.

أرسل إشعارات سطح مكتب Linux إلى أي عرض حاوية بـ HTTP POST واحد. يستدعي خادم الإشعارات notify-send على شاشة X11 للحاوية — أطلق إشعاراً أو اجلب السجل أو دفق مباشرةً.

notify · hoody-n

# 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]

الرئيسية / Kit / Notifications / دورة الحياة
كيف يعمل

ثلاث خطوات. استدعاء HTTP واحد لكل منها.

كل إشعار يتبع نفس دورة الحياة: أطلقه، اجلب التاريخ أو ابثّ حياً، ارفضه. استدعاء HTTP واحد لكل خطوة.

01

إطلاق

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"]

02

جلب أو بث

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")

03

رفض

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

الرئيسية / Kit / Notifications / الإلحاح
مستويات الإلحاح

low. normal. critical.

ثلاثة مستويات إلحاح تتوافق مباشرةً مع سلوك notify-send. اختر المناسب وتصرّف تلقائياً بناءً عليه.

low

يُرفَض سريعاً. اضبط expire_time: 3000 للمهام الخلفية وقياسات الأداء والمعلومات.

"urgency": "low",

"expire_time": 3000

normal

قياسي. الافتراضي عند حذف urgency. برنامج الإشعارات يعرضه بالإعدادات الافتراضية.

"urgency": "normal"

// default — omit to use this

critical

دائم — يتطلب الرفض اليدوي. اضبط expire_time: 0 لأعطال النظام والإجراءات التي تتطلب التدخل.

"urgency": "critical",

"expire_time": 0

الرئيسية / Kit / Notifications / القنوات
القنوات

اسحب التاريخ أو بثّه حياً.

قناتان للقراءة تخدمان احتياجات مختلفة: REST لسجلات التدقيق والاستعلامات الفردية، وSSE للتدفق الحي.

GETGET /[display]Fetch
WSWS /streamStream

اسحب تاريخ الإشعارات لعرض. فلتر حسب الحد والطابع الزمني واسم المستخدم.

سجل الإحضار

# احصل على آخر 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 ] ] تُدفَع عند كل إشعار.

الرئيسية / Kit / Notifications / حالات الاستخدام
حالات الاستخدام

من خطوط البناء إلى مهام ML.

في أي مكان تحتاج عملية طويلة الأمد إلى الإشارة بالاكتمال أو الفشل، HTTP POST واحد يكفي.

تنبيهات CI/CD

تكتمل البنيات طويلة الأمد. HTTP POST يطلق إشعاراً على عرض الحاوية.

مراقبة النظام

تنبيهات الخادم تُوجَّه إلى إشعار سطح مكتب على عرض X11 للحاوية.

المهام طويلة الأمد

تصدير البيانات، تصيير الفيديو، تدريب نماذج ML، اكتمال النسخ الاحتياطي — أرسل إشعاراً عند الانتهاء.

سير العمل الآلي

مهام cron والمهام المجدولة وسكربتات الأتمتة ترسل إشعاراً لعرض الحاوية عند الاكتمال.

الرئيسية / Kit / Notifications / API
API REFERENCE

8 نقاط نهاية. خادم إشعارات واحد.

أطلق، اجلب، ابثّ مباشرةً، والرفض — بالإضافة إلى الأيقونات والمراقبة الصحية — كل ذلك عبر HTTP عادي.

الإطلاق

{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}

POST .../api/v1/notifications/notify → {"success":true}

POST
/api/v1/notifications/notifyأرسل إشعار سطح مكتب أصلي إلى عرض هدف عبر notify-send

الجلب والبث

{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}

GET .../api/v1/notifications/{display}?limit=50&since=...

GET
/api/v1/notifications/{display}استرجع سجل الإشعارات لعرض واحد أو أكثر
WS
/api/v1/notifications/stream?displays=0,:1تدفق WebSocket الحي — ادفع التحديثات عند وصول الإشعارات
POST
/api/v1/notifications/dismissضع علامة على معرّفات الإشعارات كمرفوضة؛ تصفية من استجابات GET اللاحقة
DELETE
/api/v1/notifications/dismissامسح حالة الرفض — استرجع الإشعارات لجعلها مرئية

الأيقونات

{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}

GET .../api/v1/notifications/icons/{iconId} → image/png

GET
/api/v1/notifications/icons/{iconId}اجلب أيقونة الإشعار (JPEG أو PNG أو SVG) بواسطة معرّف الأيقونة الفريد

الصحة والمقاييس

{count, plural, =1 {# نقطة نهاية} other {# نقاط نهاية}'}

GET .../api/v1/notifications/health → {"status":"UP"}

GET
/api/v1/notifications/healthفحص صحة محسّن — حالة نظام الملفات و WebSocket والذاكرة
GET
/api/v1/notifications/metricsمقاييس متوافقة مع Prometheus للإشعارات المرسلة والفاشلة واستخدام CPU/الذاكرة
الرئيسية / Kit / Notifications / دعوة للعمل

الإشعارات على بُعد HTTP POST واحد.

أي سكربت أو خدمة أو أتمتة يمكنها إرسال طلب HTTP يمكنها إرسال إشعار سطح مكتب.

اقرأ التوثيق