Posso confundir você ainda mais, mas adicionarei mais algumas palavras a essa lista. Tentei destacar os chavões enquanto pinto uma imagem de como as coisas se encaixam.
Gerentes de janela
Pode parecer bobo, mas gerentes de janelas gerenciam suas janelas. Eles se sentam ao lado do X Server (que controla o que é enviado ao hardware) e decreta como as janelas são pintadas na área de trabalho (em si um tipo de janela).
Além de gerenciar onde a janela vai, quão grande ela é, se estiver acima de outra coisa, ela também é responsável pelas decorações. A maioria dos gerenciadores de janelas adia para outro aplicativo chamado de window decorator . Eles decidem como as bordas da janela aparecem, além de oferecer algumas opções (redimensionamento, botões de janela, etc.).
O Metacity (um gerenciador de janelas) possui seu próprio decorador de janelas embutido, mas outros decoradores de janelas que você pode ver incluem gtk-window-decorator
(usado pelo Compiz por padrão) e Esmeralda , gerado a partir de Beryl, que pode fazer coisas um pouco mais extravagantes, ao custo de ciclos de CPU.
Beryl , Metacity , Compiz são todos gerenciadores de janela . Beryl era um garfo do Compiz original. Avançou bem à frente do Compiz e acabou sendo fundido de volta para formar um projeto chamado Compiz-Fusion. Agora o Compiz-Fusion (AFAIK) foi renomeado para o Compiz, embora os dois nomes ainda se apliquem ao mesmo projeto moderno.
Toolkits Gráficos
GTK + (aka GTK) é um kit de ferramentas gráficas que os desenvolvedores usam para criar interfaces gráficas ricas para o usuário. Usando ferramentas como o Glade, eles decidem como um aplicativo deve ficar colocando controles GTK + (por exemplo, um botão) em uma janela, usando outras tecnologias de disposição como o Glade.
O GTK + também contém vários subprojetos, como Cairo e Pango , duas bibliotecas gráficas que os programadores podem usar para desenhar coisas dentro de seus aplicativos. Por sua vez, essas bibliotecas podem acessar mais bibliotecas para ajudá-las a renderizar coisas (como usar Freetype para renderizar texto).
As bibliotecas de desenvolvimento do GTK + são um poço sem fundo. Eu poderia literalmente passar o dia todo listando-os, mas isso não ajudará em nada. Então não vou.
Parte como esses controles são renderizados na tela envolve um mecanismo de tema . Cada mecanismo tem n temas disponíveis para ele e o usuário escolhe um em suas preferências. Esse tema usa seu mecanismo para permitir que os controles se renderizem na tela. Clearlooks e Murrine são os dois, e ambos têm temas com nomes, além de muitos outros temas que surgem na Internet.
A pilha seria algo como isto, de baixo para cima:
- Controle GTK +
- Mecanismo GTK + e seu tema GTK +
- Aplicativo (cliente do X Server)
- Decorador de janelas
- Gerenciador de janelas (também conhecido como compositor)
- X Window Server
- Hardware
Isso é ultra-simplificado (acabei de explicar um sistema de composição) e muitas dessas coisas podem acontecer em ordens alteradas, muitas vezes correndo paralelas em vez de em cima ou abaixo de outra camada ... Mas deve dar uma ideia de como as coisas vão do código para a tela.
Qt é outro kit de ferramentas gráficas que é muito comum em aplicativos do KDE. Ele tem seus próprios motores de temas, temas e controles semelhantes ao GTK +. Eles não são intercambiáveis e exigem grandes revisões de código para passar de um kit de ferramentas para o outro.