موضوع بسيط عن dbus للفت الإنتباه فقط

بسم الله الرحمن الرحيم 

السلام عليكم ورحمة الله وبركاته



موضوع بسيط عن 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

فيديو :

https://www.youtube.com/watch?v=7KBwgbmP5s4





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/




أخيرا أتمنى ان أكون كنت موفق في الشرح في الحقيقة أنا لا أعلم عنه الكثير وهذا أقصى ما أعرفه اﻷن لهذا أكرر الخطأ وارد لكن أتمنى أن يلفت هذا الموضوع نطركم أو أن يفتح هذا الموضوع المجال لكم لأشياء قد لا تكون كنتم تعرفونها من قبل وأن تنفعكم إن شاء الله.

شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)