(Estou analisando a relação do GNOME e do X. Gostaria de compartilhar alguns dos meus entendimentos. Vou apresentá-lo da maneira mais lógica possível.)
1. De que é composta a GUI?
Abaixo está uma ilustração dos componentes básicos de uma GUI.
O componente principal é o servidor de exibição . Existem vários servidores de exibição disponíveis. Tal como:
- X11 (principalmente para * nix)
- Wayland (principalmente para * nix)
- Mir (principalmente para * nix)
- SurfaceFlinger (Isto é para o Google Android.)
- Compositor de quartzo (é o que o Apple MacOS usa.)
- Desktop Window Manager (É o que o Microsoft Windows usa.)
2. O que é X?
X, X11 e X Window System são sinônimos. Todos eles representam um sistema de janelas . O Windowing System é um tipo de interface gráfica do usuário (GUI, como mencionado acima) que implementa o paradigma WIMP (janelas, ícones, menus, ponteiro) para uma interface do usuário.
Aqui está uma lista dos principais sistemas de janelas para os sistemas Linux e Windows.
O principal componente de qualquer sistema de janelas é geralmente chamado de servidor de exibição (sem surpresa, porque o sistema de janelas é um tipo de GUI e o servidor de exibição é a parte principal de qualquer GUI), embora outros nomes como servidor de janelas ou compositor também sejam usados.
Qualquer aplicativo que execute e apresente sua GUI é um cliente do servidor de exibição . O servidor de exibição e seus clientes se comunicam através de um protocolo de comunicação, geralmente chamado de protocolo do servidor de exibição, sendo o servidor de mediador o mediador entre os clientes e o usuário. O servidor de exibição recebe toda a entrada do kernel, que recebe de todos os dispositivos de entrada conectados, como teclado, dispositivos apontadores ou tela sensível ao toque, e a transmite ao cliente correto. O servidor de exibição também é responsável pela saída dos clientes para o monitor do computador. Um protocolo de servidor de exibiçãopode ter capacidade de rede ou até rede transparente. (para que você possa ver, trata-se essencialmente de fluxo e roteamento de dados, dados visuais ainda são dados.)
E de acordo com aqui :
Um X Server é um programa que fornece serviços de exibição e entrada de usuário para outros programas. Em comparação, um servidor de arquivos fornece outros programas com acesso a dispositivos de armazenamento de arquivos. Os servidores de arquivos geralmente estão localizados em um local remoto e você usa os serviços de um servidor de arquivos da máquina em que está localizado. Por outro lado, um X Server normalmente está sendo executado na máquina em que você está localizado ; os serviços de exibição e entrada do usuário podem ser solicitados por programas em execução em sua máquina, bem como por programas em máquinas remotas .
Então X é composto de:
- servidor de exibição
- protocolo do servidor de exibição
- algumas bibliotecas para desenvolvimento
- e outras coisas
De acordo com aqui :
X fornece a estrutura básica para um ambiente de GUI: desenhando e movendo janelas no dispositivo de exibição e interagindo com um mouse e teclado. X não exige a interface do usuário - isso é tratado por programas individuais. Como tal, o estilo visual de ambientes baseados em X varia muito; programas diferentes podem apresentar interfaces radicalmente diferentes.
Em outras palavras, o X apenas dá ao programa a capacidade de fazer coisas básicas como desenhar / mover janelas e interagir com entradas . X não aplica estilos visuais. Então, o que você disse " ... Fornece um padrão para os aplicativos apresentarem suas interfaces de usuário ... " está incorreto.
3. O que é o GNOME / KDE
GNOME e KDE são ambos Linux Desktop Environment . Um ambiente de área de trabalho é um pacote de programas em execução em um sistema operacional, que compartilham uma GUI comum .
Mas, como mencionei acima, o X11, como servidor de exibição, fornece apenas a capacidade básica de desenho através de algumas bibliotecas como Xlib ou XCB. Os aplicativos que fazem interface direta com o X11 por meio dessas bibliotecas podem ter estilos visuais radicalmente diferentes .
Então, como criar uma GUI comum? Aí vem os kits de ferramentas do widget . Como GTK + e Qt . Eles são populares nos sistemas de janelas Wayland e X11 .
O GNOME usa o GTK +.
O KDE usa o Qt.
E aqui está uma comparação dos ambientes de desktop do sistema X Window.
Para resumir ...
Eu desenho uma ilustração conceitual aproximada. As três partes acima do sistema operacional são muito personalizáveis. É por isso que tanta flexibilidade (confusão) surge.
ADICIONAR 1 - 13:26 21/09/2018
E aqui estão algumas discussões sobre o QT e o GTK (talvez até oftopic para esse tópico ...)