بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
موضوع بسيط عن dbus للفت الإنتباه فقط .
1-تعريف بسيط .
للأمانة أنا لا أعلم عنه الكثير أقصد لا يمكنني ان أفيدكم كثيرا عن هذه التقنية وما هي بالتفصيل لهذا الخطأ وارد في الشرح لكن بشكل بسيط ال dbus يوفر إمكانية للتخاطب مع التطبيقات أثناء عملها أو التخاطب فيما بينها, مثلا لنفترض قمت بعمل سكربت لتغير الصورة الخلفية عندما أطلب منه ذلك, يمكن إستخدام dbus لتتخاطب مع التطبيق أثناء عمله مثلا بأن يقوم بتغير الصورة هذا مثال بسيط لكن يمكن أكثر من ذلك ممكن مثلا تنفيذ دالة أو إرسال قيمة إلى التطبيق او البرنامج أو مثلا إسترداد منه قيمة مثلا ممكن أيضا ان نطلب قيمة نصية والتي هي إسم الصورة الخلفية المستخدمة الان .
تقريبا كل لغات البرمجة لها مكتبات ل dbus مثال في بايثون هناك Bindings ل dbus ويمكن تثبيته في فيدورا من خلال حزمة python3-dbus وحزمة python-dbus و هناك مكتبة إسمها pydbus بالإضافة إلى المتوفر في Gtk و QT والباقي لغات البرمجة.
إمكانية التخاطب مع التطبيقات من خلال dbus تتوقف على التطبيق نفسه إذا كان المبرمج قام بتضمين هذه الأمكانية .
2-شرح بعض الأشياء .
نقوم بتثبيت البرنامج d-feet في فيدورا وما بنية عليها التثبيت كما في الأسفل باقي التوزيعات غالبا سيكون ذات الإسم مع إختلاف مدير الحزم.
sudo dnf install d-feet
1-أولا هناك ناقلين أساسيين في dbus اﻷول System Bus وهو خاص بتطبيقات النظام العامة مثل systemd و ال firewall و network manager وهناك Session Bus و هو للتطبيقات الأخرى مثل الواجهة و مدير الملفات والبرامج العادية و...إلخ
2-ثانيا bus name هو إسم الناقل لبرنامج ما .
3-ثالثا Object path المسارات داخل bus name ستتوضح الأمور في الصورة في الاسفل.
4-رابعا Interfaces الواجهات داخل Object path أيضا ستتوضح الامور أكثر في الصورة في الأسفل .
5-خامسا Methods هي بشكل بسيط دوال ممكن تنفيذها قد تكون لإرجاع قيمة نصية عددية أو قائمة أو قاموس و...إلخ وقد تكون لإستقبال قيم مما سبق وقد تكون دالة لتنفيذ شيء فقط أو دالة تأخذ قيم وترجع قيم.
6-سادسا Properties أيضا بشكل بسيط هي مثل المتغيرات ممكن ان تكون نصية عددية أو True Fasle و...إلخ وممكن أن تكون للقراءة فقط أو للكتابة أو للإثنين معا.
7-سابعا Signals أي إشارات هي بشكل بسيط إشارات ممكن أن نبعثها للتطبيق مثال في البرامج الرسومية عند الضغط على مفتاح button بمأشر الفأرة تسمى هذه signal ب clicked .
صورة من برنامج d-feet .
1-كما نلاحظ هناك System Bus و Session Bus .
2-Bus Name الخاص بواجهة Gnome Shell .
3-Object path .
4-Interfaces .
5-Methods .
6-Properties .
7-Signals .
3-تجربة شيء من خلال dbus .
كما ذكرت سابقا dbus متوفر تقريبا في كل لغات البرمجة على العموم من الترمينال ممكن التخاطب مع التطبيقات التي تتوفر فيها هذه الخاصية من خلال dbus-send وهناك بعض البرامج مثل qdbus و هو شيء خاص ب Qtعلى العموم نجرب الامر في الأسفل وهو خاص بواجهة Gnome Shell.
dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.ShowApplications
ذات الشيء من خلال qdbus .
qdbus org.gnome.Shell /org/gnome/Shell org.gnome.Shell.ShowApplications
4-فيديو عن سكربت عملته بلغة بايثون وكيف قمت بتخاطب معه لطباعة كلمة hello او الخروج عندما أريد بالمناسبة ممكن أيضا من أي لغة برمج التخاطب معه وليس بالضرورة من الترمينال وليس بالضرورة أن يكون بلغة بايثون يعني ممكن عمل سكربت أوبرنامج أخر بأي لغة برمجة للتخاطب معه ليصبح الأمر شيء مثل Server و Client.
نلاحظ في الصورة في الأعلى أني انا من قام بتسمية ال Bus Name و Object path و الMethods و...إلخ
5-رابط وثائق dbus ولمن مهتم بالبرمجة ستجدو أشياء متعلقة به في وثائق Gtk و Qt بشكل خاض طبعا وباقي لغات البرمجة .
https://www.freedesktop.org/wiki/Software/dbus/
https://dbus.freedesktop.org/doc/dbus-tutorial.html
https://www.freedesktop.org/wiki/Software/DBusBindings/
أخيرا أتمنى ان أكون كنت موفق في الشرح في الحقيقة أنا لا أعلم عنه الكثير وهذا أقصى ما أعرفه اﻷن لهذا أكرر الخطأ وارد لكن أتمنى أن يلفت هذا الموضوع نطركم أو أن يفتح هذا الموضوع المجال لكم لأشياء قد لا تكون كنتم تعرفونها من قبل وأن تنفعكم إن شاء الله.