عن المشروع

DesktopPanel هي لوحة تحكم مكتبية مصممة لجهاز Raspberry Pi مع شاشة اللمس الرسمية من RPi. وهي خلف مُعاد هيكلته لمشروع SmartBedroomPanel الخاص بالمؤلف، وتُوزَّع كصورة Docker (mrtux/desktop-panel). تغطي ملاحظات الإعداد التحكم في الإضاءة الخلفية: قاعدة udev تمنح وصول كتابة لغير الجذر إلى مدخلات sysfs الخاصة بسطوع الإضاءة الخلفية وbl_power. إذا لم يتم اكتشاف لوحة معروفة، تُحاكى بيئة sysfs للإضاءة الخلفية في دليل مؤقت، وهو أمر مفيد للتطوير. يتطلب التشغيل مع Docker وصولاً مرتفعاً لأن التطبيق يلمس عدة موارد نظام. تتوقع الحاوية دليل تهيئة مُثبتاً للقراءة فقط عند /app/configuration يحتوي على desktop-panel-config.json وissuelist.json، بالإضافة إلى دليل لقطات شاشة اختياري قابل للكتابة عند /app/screenshots. يستخدم الأمر المثال --privileged و--restart always ومتغير بيئة TZ وربط الأدلة؛ ولا يزال تثبيت التهيئة يسمح للتطبيق بالتفاعل مع تغييرات ملفات JSON. يعتمد التكامل أساساً على الرسائل. عبر AMQP، يُضبط الوصول وبيانات الاعتماد باستخدام amqp.host وamqp.user وamqp.passwd. إذا كانت amqp.declare صحيحة، تُعلن الموارد بواسطة اللوحة، وإلا فالإعداد خارجي. تستمع اللوحة للأوامر على amqp.command_channel (الافتراضي command.DesktopPanel). الأوامر هي كائنات JSON تتضمن معرّف أمر وكائن وسائط؛ التنفيذ الحالي قائم على الطلب فقط دون آلية استجابة RPC عامة. تشمل الأوامر المعروفة screenshot (يخزّن صورة في دليل لقطات الشاشة) وshow page، الذي ينتقل إلى الصفحة المذكورة في وسيطة page ويدعم go_back_if_current لإخراج مكدس التنقل وblock_input لمنع اختطاف النقر. يمكن لقناة syslog عرض رسائل syslog الحرجة على صفحة System. تُستهلك الرسائل من قائمة الانتظار المذكورة في amqp.syslog_channel (لا يوجد افتراضي؛ احذفها للتعطيل). يجب أن تأتي من وجهة AMQP الخاصة بـ syslog-ng، مع وجود كل المعلومات في رؤوس خصائص رسالة AMQP (DATE، FACILITY، HOST/HOST_FROM، MESSAGE، PRIORITY، PROGRAM) وجسم فارغ. فقط شدة error وما فوقها ذات معنى؛ وينبغي لمرشحات syslog-ng أو ارتباطات RabbitMQ توجيه تلك الشدائد فقط. يوصي README بقائمة انتظار دائمة مخصصة (مثل syslog.DesktopPanel) مرتبطة بتبادل موضوع syslog-ng، مع ضبط amqp.declare على false عندما تُدار قائمة الانتظار خارجياً، ويقدم مقتطف JSON للتهيئة. عند وصول رسالة جديدة بينما صفحة System غير نشطة، يضيء زر تبويب System باللون الأحمر لـ crit/critical/alert/emerg/panic وبالأصفر لـ error/err؛ ويُمسح الإشعار عند فتح الصفحة. عبر MQTT، إذا تم تكوين mqtt.presence-topic، تُنشر حالة الحضور كنص حالة خام. يستخدم المشروع أيقونات مجانية من Streamline Icons Pack وهو مرخّص بموجب MIT (© 2021 Stefan Haun والمساهمون). ويتضمن سير عمل CodeQL للتحليل الساكن.