X, Xorg e D-Bus: qual a diferença?

35

No processo de aprender a fazer certas coisas na programação da GUI (por exemplo, reservando espaço na tela para um aplicativo), tenho que aprender mais sobre o Window Manager, geralmente o X11 no Linux (não tenho certeza se existem distros). , que usam qualquer coisa além de X11, embora eu tenha ouvido falar sobre Wayland , que ainda não foi implementado em nenhum.)

Eu sou bastante novo em programação e impaciente; então estou mergulhando nisso. Agora estou lendo o ICCCM, com a esperança de aprender mais. Este documento, no entanto, visa um público que sabe mais do que eu. Então, me deparei com algumas informações e gostaria de obter alguns esclarecimentos.

A seção 2 das citações do ICCCM:

Observe que todos os dados transferidos entre um proprietário e um solicitante geralmente devem passar por meio do servidor em um ambiente X Versão 11. Um cliente não pode assumir que outro cliente possa abrir os mesmos arquivos ou até mesmo se comunicar diretamente. O outro cliente pode estar conversando com o servidor por meio de um mecanismo de rede completamente diferente (por exemplo, um cliente pode ser DECnet e o outro TCP / IP). Portanto, a passagem de referências indiretas aos dados (como nomes de arquivos, nomes de hosts e números de portas etc.) é permitida somente se os dois clientes concordarem especificamente.

Tanto quanto eu entendo, o X Window Manager é construído no Top of X Server (obrigado Wikipedia). Na citação acima: diz que o cliente pode se comunicar com o servidor usando DECnet ou TCP / IP. Até agora, pensei que "servidor" fosse uma figura de linguagem, agora estou duvidando: o servidor X é um servidor como em um "servidor web"? Como devo entender sua função / definição?

Em seguida, geralmente existem referências ao X11, Xorg, X Server e / ou X Window Manager. Fica confuso: o X11 é um pacote que inclui o Xorg e o X Window Manager? Em caso afirmativo, há mais alguma coisa neste pacote X11?

O X também precisa de mouse ou teclado ou qualquer outro tipo de entrada: isso também faz parte das funções do X Server? O X Window Manager está cuidando estritamente apenas da exibição?

Finalmente, a citação aqui acima também menciona que o cliente está se comunicando ou não: isso me lembrou o D-Bus, que usei um pouco para fins de aprendizado. Com o D-Bus, você também pode acionar eventos da janela. Isso me deixa um pouco confuso sobre como os programas devem se comunicar: * que diferença há entre os programas que interagem usando o X Server ou o D-Bus? *

É uma pena que essas informações permaneçam obscuras, dificulta o aprendizado, mas espero que você possa esclarecer isso :) Obrigado.

Benjamin
fonte

Respostas:

61

Você está fazendo cinco perguntas aqui e pode ser melhor fazer cinco perguntas ☺ Mas eu vou pular para dentro:

  1. X é um servidor e pode ser comparado a um "servidor Web", pois é um processo que escuta as 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.

  2. 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 do X11. Existem outras implementações: o XFree86 amplamente extinto; comerciais como o Hummingbird Exceed; garfos como o XQuartz, que roda no Mac OS X )

  3. Um "gerenciador de janelas" é um cliente X que gerencia janelas. Normalmente, ele tem a responsabilidade de decorar janelas com chanfros / bordas, sombras projetadas, uma barra de menus contendo botões etc. - e lidar com a lógica do posicionamento das janelas; janelas de suporte sendo arrastadas, redimensionadas ou reorganizadas, etc.

  4. X requer entrada e tem uma responsabilidade compartilhada de gerenciar isso com o Kernel. Historicamente, o X fazia bastante 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: menor base de código X; menos "fios cruzados" com o kernel e o X tentando gerenciar o mesmo material. (um exemplo disso é a interface de eventos do Linux, onde eventos de 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). Observe que em outras plataformas (BSD, Solaris) X ainda é bastante monolítico.

  5. Existem muitas, muitas maneiras de os processos se comunicarem. Eu acredito que os clientes X podem interagir por meio do protocolo X (por exemplo, os gerenciadores de janelas X tradicionais precisam saber quando outros clientes desenham janelas, para decorá-las; os pagers precisam saber quando o tamanho ou a posição de uma janela é alterada, a fim de refletir isso no pager). O D-Bus é uma tecnologia moderna de comunicação entre processos (IPC) desenvolvida para solucionar as deficiências de outros métodos. Não é X específico.

jmtd
fonte
Agradecimentos agradáveis! Isso é realmente útil. Sobre as 5 perguntas: não sei qual é o protocolo nesse caso, mas se um administrador quiser que eu as divida, eu ouvirei sobre isso. Eu pessoalmente gosto de ter isso em um documento e ver as 5 perguntas como sub-perguntas ao título. Obrigado novamente.
Benjamin
O ponto em não pular protocolos é que o X Window System foi projetado para que aplicativos ("clientes") não precisem ser executados no mesmo host, ou seja, você pode efetuar login em outra máquina, executar um programa lá e a janela é aberta na tela como um aplicativo local. Se outro programa perguntasse "qual é o seu ID de processo, para que eu possa falar diretamente com você", não há como responder a essa pergunta corretamente.
Simon Richter
Você pode não querer que o recurso compartilhado pelo servidor X seja a exibição que consiste em um ou mais monitores e dois ou mais dispositivos de entrada (teclado, mouse)
hildred
Definitivamente útil todas as 5 perguntas juntas. Obrigado.
Harvey
@hildred No caso de uma tela sensível ao toque na configuração do quiosque, você pode ter apenas um dispositivo de entrada.
Shadur 11/10/19