প্রকল্প সম্পর্কে

ডেস্কটপপ্যানেল হলো অফিসিয়াল RPi টাচ স্ক্রিনসহ রাস্পবেরি পাইয়ের জন্য ডিজাইন করা একটি ডেস্কটপ কন্ট্রোল প্যানেল। এটি লেখকের SmartBedroomPanel প্রকল্পের পুনর্গঠিত উত্তরসূরি এবং ডকার ইমেজ (mrtux/desktop-panel) হিসেবে বিতরণ করা হয়। সেটআপ নোটে ব্যাকলাইট নিয়ন্ত্রণ কভার করা হয়েছে: একটি udev নিয়ম ব্যাকলাইট ব্রাইটনেস এবং bl_power sysfs এন্ট্রিতে নন-রুট লেখার অ্যাক্সেস দেয়। কোনো পরিচিত বোর্ড শনাক্ত না হলে, ব্যাকলাইট sysfs পরিবেশ একটি অস্থায়ী ডিরেক্টরিতে নকল করা হয়, যা ডেভেলপমেন্টের জন্য উপযোগী। ডকার দিয়ে চালানোর জন্য উচ্চতর অ্যাক্সেস প্রয়োজন কারণ অ্যাপ্লিকেশনটি বেশ কয়েকটি সিস্টেম রিসোর্স স্পর্শ করে। কন্টেইনারটি /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 ক্লিকজ্যাকিং প্রতিরোধ করতে। একটি সিসলগ চ্যানেল System পেজে গুরুত্বপূর্ণ সিসলগ মেসেজ প্রদর্শন করতে পারে। মেসেজগুলো amqp.syslog_channel-এ নামকরণ করা কিউ থেকে গ্রহণ করা হয় (কোনো ডিফল্ট নেই; নিষ্ক্রিয় করতে বাদ দিন)। সেগুলো syslog-ng-এর AMQP ডেস্টিনেশন থেকে আসতে হবে, সমস্ত তথ্য 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 ওয়ার্কফ্লো অন্তর্ভুক্ত।