Você está fazendo cinco perguntas aqui, e pode ser melhor fazer cinco perguntas ☺ Mas vou pular em:
-
X é um servidor e pode ser comparado a um "servidor web", pois é um processo que ouve conexões de entrada que falam um protocolo específico (o protocolo X) e emite respostas. As conexões vêm de clientes X, que podem estar no host local ou em um host remoto acessado por uma rede.
-
O X11 é uma "versão principal" do protocolo X, que evoluiu desde o início. X11 é o protocolo mais recente e o mais comum. (O Xorg é uma implementação de um servidor X, bibliotecas X e uma coleção de clientes, todos falando X11. Existem outras implementações: o XFree86, em grande parte extinto; comerciais como o Hummingbird Exceed; garfos como o XQuartz, que roda no Mac OS X )
-
Um "gerenciador de janelas" é um cliente X que gerencia janelas. Ele normalmente tem a responsabilidade de decorar janelas com chanfros / bordas, sombras, uma barra de menu contendo botões, etc. - e lidar com a lógica de colocação de janelas; suporte a janelas sendo arrastadas, redimensionadas ou reorganizadas, etc.
-
X requer entrada e tem uma responsabilidade compartilhada de gerenciar isso com o Kernel. Historicamente, o X fazia um monte de gerenciamento de hardware. Nos tempos modernos, na plataforma Linux, o X está gradualmente se tornando "menor" e delegando essa responsabilidade ao kernel do Linux. As vantagens disso são: base de código X menor; menos "fios cruzados" com o kernel e X ambos tentando gerenciar as mesmas coisas. (um exemplo disso é a interface de eventos do Linux, onde os eventos dos mouses etc. são interpretados e traduzidos pelo kernel e seus drivers na interface padrão em
/dev/input/event*
, que é consumida pelo servidor X). Note que em outras plataformas (BSD, Solaris) o X ainda é bastante monolítico. -
Existem muitas maneiras de os processos se comunicarem entre si. Acredito que os clientes X podem interagir por meio do protocolo X (por exemplo, os gerenciadores tradicionais de janelas X precisam saber quando outros clientes desenham janelas para decorá-los; os pagers precisam saber quando o tamanho ou a posição de uma janela muda) refletir isso no pager). O D-Bus é uma moderna tecnologia de comunicação entre processos (IPC) desenvolvida para lidar com as deficiências de outros métodos. Não é específico do X.