-
X11 - um protocolo de janelas (rede transparente, a propósito) e sua implementação (o servidor X e bibliotecas de baixo nível para acessá-lo). Lida com "apenas" entrada básica (teclado, mouse, ...) e saída (desenho de retângulos), mas faz isso de maneira bastante abstrata, para que você possa executar um programa em uma máquina e controlá-la de outra, assinar vários eventos etc. Na verdade, existe apenas uma implementação de código aberto utilizável, nomeadamente pela Fundação X.org .
-
Qt , GTK , Motif , ... - bibliotecas de widgets originais, que fornecem abstração de nível superior acima das bibliotecas X11 (por exemplo, criando diálogos, botões e outros elementos gráficos). No entanto, por exemplo, o Qt vai muito além disso e tem interfaces para muitas outras coisas também (bancos de dados, multimídia, ...). Também permite o design unificado da interface do usuário. Semelhante ao que Swing está em Java.
-
lxdm , lightdm , gdm , kdm , xdm , ...- gerenciadores de exibição: programas especializados que exibem a tela de login (alguns podem fazê-lo pela rede também) e permitem que o usuário faça o login em sua sessão de ambiente de trabalho preferida.
-
compiz , kwin , metacity , xfwm , openbox , ... - gerenciadores de janelas: programas que fornecem funcionalidade básica de ambiente de janelas como desenhar decorações para viúvas (texto de título e botões), redimensionar, mover janelas, movê-las na pilha de janelas (elevar / abaixar ou colocar na tela). Às vezes eles também lidam com o "desktop" (plano de fundo e ícones colocados nele).
-
KDE , Gnome , XFCE , LXDE , ... - ambientes de desktop: mais ou conjuntos de ferramentas menos completos. Eles geralmente incluem um gerenciador de janelas, gerenciador de exibição, algum tipo de "painel" (onde aparecem ícones, lista de janelas abertas no momento, relógio e outras coisas), gerenciador de arquivos, visualizador de multimídia, editor e "guloseimas" como calendário / lembrete e várias extensões de área de trabalho)
Você pode (até certo ponto) misturar aplicativos de diferentes DEs (os gerenciadores de exibição funcionam bem, já que são um pouco autônomos, especialmente o kdm e o gdm. Eles possuem muitas dependências que suas contrapartes mais leves). O principal problema com a mistura de aplicativos é que suas configurações são frequentemente interligadas com o DE, e, portanto, podem exigir alguns serviços para serem executados (que não estão sob o outro DE). A aparência também pode ser diferente quando outro kit de ferramentas (por exemplo, Qt vs. GTK) é usado. E essa é a redundância - vários aplicativos que atendem ao mesmo propósito têm suas opções separadas e, em algum sentido, redundantes.