Si portes un temps a Linux potser t'hagis arribat a preguntar que és D-Bus. D-Bus és un component incorporat no fa gaire a les distribucions d'escriptori en Linux que previsiblement jugarà un paper molt important per a la programació en Linux.
Què és D-Bus?
D-Bus és un sistema de comunicació entre aplicacions de molt divers origen. Amb aquest sistema podrem cridar fins i tot a aplicacions privatives (si aquestes implementen D-Bus). No juga el mateix paper que una llibreria doncs una llibreria no és un programa independent i la llibreria forma part del teu executable. La idea de D-Bus està inspirada en els objectes OLE, COM i ActiveX de Windows. Els objectes COM de Windows ofereixen una manera senzilla de cridar a qualsevol programa des d'un altre programa arribant fins i tot a poder incrustar visualment un dins d'un altre sense necessitat d'usar el mateix llenguatge de programació. D-Bus no arriba tan lluny però ofereix aquesta comunicació de la qual UNIX mancava.
Per què és important D-Bus?
D-Bus és important donada la gran diversitat de llenguatges que poden funcionar en Linux i la gran diversitat també de llibreries. Posem un exemple pràctic. Jo vull enviar una notificació al sistema notify-osd d'Ubuntu des de la meva aplicació en Node.js. Primer hauria de veure que llibreria ofereix aquesta funcionalitat en el sistema, libnotify en aquest cas, i després hauria de fer uns bindings per poder cridar la llibreria programada en C des de JavaScript. A més imaginem que volem fer funcionar la nostra aplicació amb un escriptori que no fa servir libnotify per a les notificacions.
Usant D-Bus
Llavors hem decidit que farem servir D-Bus per crear la notificació de la nostra aplicació en JavaScript.
https://gist.github.com/AdrianArroyoCalle/99d2ea6db92e90a54e2c
Hi ha 2 tipus de busos en D-Bus, un D-Bus únic a el sistema i un D-Bus per a cada sessió d'usuari. Després en D-Bus tenim serveis que són «els noms dels proveïdors D-Bus», una mena de les aplicacions D-Bus. Després en una estructura com de carpeta hi ha els objectes que pot tenir aquest servei o instàncies i finalment la interfície és la manera d'interactuar amb els objectes d'aquest servei. En aquest cas és molt redundant ja que el servidor de notificacions és molt simple.
Qui fa servir D-Bus?
Més programes dels que imagines usen D-Bus. Alguns serveis de D-Bus només per nomenar exemples són:
- com.Skype.API
- com.canonical.Unity
- org.freedesktop.PolicyKit1
- org.gnome.Nautilus
- org.debian.apt
- com.ubuntu.Upstart
Per esbrinar tots els serveis de D-Bus que tens instal·lats pots utilitzar d-feet
interessant. tant de temps veient-, i no sàvia ni que era
El de d-feet si que no el coneixia, he programat algunes coses especialment scripts per XChat (Clementine, Audacious) usant DBus i la veritat, haver conegut aquesta eina m'hagués estalviat la bogeria de caminar llegint-me el manual d'MPRIS i les diferents interfícies DBus de Clementine i Audacious.
Realment és un molt bon article, gràcies
mira tu la meva ignorància; tants problemes amb dbus a FreeBSD, gentoo i havien de i mai vaig saber que era ... .de fet encara no ho sé però el teu post em a donat una idea succinta a el menys.
> D-Bus és un component incorporat no fa gaire a les distribucions d'escriptori en Linux.
No fa gaire ????? El faig servir des de 2005.
Una altra cosa és kdbus que sí que és recent. És, simplificant, la integració de dbus dins el nucli.
Segueix sent poc temps més que res perquè D-Bus requereix que la resta de components de el sistema ho comencin a fer servir per poder ser plenament funcional.