# D-Bus

Em computação, D-Bus ou DBus (acrônimo para Desktop Bus, em inglês, ou Barramento de área de trabalho, em português), um barramento de software, é um mecanismo de comunicação entre processos (CIP) e chamada de procedimento remoto que possibilita a comunicação entre vários programas de computador (isto é, processos) rodando simultaneamente na mesma máquina. O D-Bus foi desenvolvido como parte do projeto freedesktop.org, iniciado por Havoc Pennington da Red Hat para padronizar serviços fornecidos pelos ambientes de desktop do Linux como GNOME e KDE.
O projeto freedesktop.org também desenvolveu uma biblioteca de software livre e de código aberto chamada libdbus, como uma implementação de referência da especificação. Esta biblioteca é geralmente confundida com o próprio D-Bus. Outras implementações da biblioteca cliente do D-Bus também existem, como GDBus (GNOME), QtDBus (Qt/KDE), dbus-java e sd-bus (parte do systemd).

## Visão geral

D-Bus é um mecanismo de comunicação entre processos inicialmente concebido para substituir os sistemas de comunicação de componentes de software usados pelos ambientes de desktop Linux GNOME e KDE (CORBA e DCOP, respectivamente). Os componentes desses ambientes de desktop são normalmente distribuídos em muitos processos, cada um fornecendo apenas alguns - normalmente um - serviços. Esses serviços podem ser usados por aplicativos clientes regulares ou por outros componentes do ambiente de desktop para executar suas tarefas.
Devido ao grande número de processos envolvidos - incluindo processos que fornecem os serviços e os clientes acessando-os - o estabelecimento de comunicações CIP um-para-um entre todos torna-se uma abordagem ineficiente e pouco confiável. Em vez disso, o D-Bus fornece uma abstração de barramento de software que reúne todas as comunicações entre um grupo de processos em um único canal virtual compartilhado. [6] Processos conectados a um barramento não sabem como ele é implementado internamente, mas a especificação D-Bus garante que todos os processos conectados ao barramento possam se comunicar entre si através dele.
Os ambientes de desktop Linux aproveitam as facilidades do D-Bus instanciando não um barramento, mas muitos:
* um único barramento de sistema, disponível para todos os usuários e processos do sistema, que fornece acesso aos serviços do sistema (ou seja, serviços fornecidos pelo sistema operacional e também por quaisquer daemons do sistema)
* um barramento de sessão para cada sessão de login do usuário, que fornece serviços de área de trabalho para aplicativos do usuário na mesma sessão da área de trabalho e permite a integração da sessão da área de trabalho como um todo
Um processo pode se conectar a qualquer número de barramento, desde que tenha acesso a eles. Na prática, isso significa que qualquer processo do usuário pode se conectar ao barramento do sistema e ao seu barramento de sessão atual, mas não aos barramentos de sessão de outro usuário, ou mesmo a um barramento de sessão diferente pertencente ao mesmo usuário. A última restrição pode mudar no futuro se todas as sessões do usuário forem combinadas em um único barramento do usuário.
O D-Bus fornece recursos adicionais ou simplifica a funcionalidade existente para os aplicativos, incluindo compartilhamento de informações, modularidade e separação de privilégios. Por exemplo, informações sobre uma chamada de voz recebida via Bluetooth ou Skype podem ser propagadas e interpretadas por qualquer reprodutor de música atualmente em execução, que pode reagir alterando o volume ou pausando a reprodução até que a chamada seja finalizada.
O D-Bus também pode ser usado como uma estrutura para integrar diferentes componentes de um aplicativo de usuário. Por exemplo, um pacote de escritório pode se comunicar através do barramento de sessão para compartilhar dados entre um processador de texto e uma planilha.