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

32

No processo de aprender a fazer certas coisas na programação GUI (por exemplo, reservando espaço na tela para um aplicativo), eu tenho que aprender mais sobre o Gerenciador de Janelas, geralmente o X11 no Linux (não tenho certeza se existe mesmo são distro, que usam qualquer coisa além de X11, embora eu tenha ouvido falar sobre Wayland , que ainda não está implementado em nenhum.

>

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

Seção 2 do ICCCM cita:

Note that all data transferred between an owner and a requestor must usually go by means of the server in a X Version 11 environment. A client cannot assume that another client can open the same files or even communicate directly. The other client may be talking to the server by means of a completely different networking mechanism (for example, one client might be DECnet and the other TCP/IP). Thus, passing indirect references to data (such as file names, host names and port numbers, and so on) is permitted only if both clients specifically agree.

Tanto quanto eu entendo, o X Window Manager é construído no topo do X Server (graças à Wikipedia). Na citação acima: diz que o cliente pode se comunicar com o servidor usando DECnet ou TCP / IP. Até agora eu pensei que "servidor" era 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?

Então, há referências ao X11, Xorg, X Server e / ou X Window Manager. É confuso: o X11 é um pacote incluindo o Xorg e o X Window Manager? Em caso afirmativo, há mais alguma coisa neste pacote X11?

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

Por último, a citação acima menciona também o cliente se comunicando ou não um com o outro: isso me lembrou do D-Bus, que eu usei um pouco para fins de aprendizado. Com o D-Bus, você também pode acionar eventos de janela. Isso me deixa um pouco confuso sobre como os programas devem se comunicar uns com os outros: * que diferença existe entre os programas interagindo usando o X Server ou usando o D-Bus? *

É uma pena que esta informação permaneça de alguma forma obscura, torna-se mais difícil de aprender, mas esperamos que você possa trazer alguma luz sobre isso :) Obrigado.

    
por Benjamin 31.05.2011 / 11:19

1 resposta

54

Você está fazendo cinco perguntas aqui, e pode ser melhor fazer cinco perguntas ☺ Mas vou pular em:

  1. 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.

  2. 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 )

  3. 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.

  4. 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.

  5. 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.

por 31.05.2011 / 11:29