X Window, Controladores de Janelas e Ambientes Desktop

Tenho percebido uma certa confusão com relação ao Xorg. O que é normal, considerando a diferença de paradigma entre a exibição gráfica usada no Linux e o Windows. Venho neste artigo tentar explicar o funcionamento do X e sua relação com os Controladores de Janelas e ambientes Desktop, como o GNOME e o KDE.

[ Hits: 36.958 ]

Por: Geraldo José Ferreira Chagas Júnior em 28/05/2008 | Blog: http://prginfo.blogspot.com


Controladores de janelas x Ambiente desktop



Até o momento, estivemos tratando o ambiente gráfico do Linux como se fosse apenas o servidor X, mas na realidade o ambiente gráfico como conhecemos se divide em mais duas camadas, o Controlador de Janelas e o Ambiente Desktop.

Atualmente, estamos acostumados com um padrão gráfico, ou melhor, um paradigma gráfico, que foi desenvolvido pela Xerox e que obteve muito sucesso, sendo copiado pela maioria, senão por todos os ambientes Desktops encontrados, o WIMP - Window, Icon, Menu, Pointing device (Janela, Ícone, Menu, Dispositivo de apontador).

No Linux:
  • o Servidor X cuida apenas do Dispositivo de apontador, do WIMP ( além do vídeo, teclado e mouse).
  • o Gerenciador de Janelas cuida de toda a lógica referente a janela, como: arrastar, redimensionar, minimizar, não deixar redimensionar bordas fixas etc.
  • o Ambiente Desktop, por sua vez abstrai, através de ícones e Menus.

Para ilustrarmos o funcionamento das três camadas, vamos imaginar a execução de um programa através de dois cliques dado no ícone.

O Servidor X captura os cliques e passa adiante, para quem for responsável, isso não o importa para ele. Neste caso o responsável foi o Ambiente Desktop que abstraiu a execução da aplicação em um ícone, ele então, entende o clique realiza a execução da aplicação, porém a solicitação de execução da aplicação poderia ser feita por uma linha de comando no shell. Ao criar a janela, o gerenciador de janelas passa a gerenciá-la. Nem a aplicação, nem o Servidor X querem saber quem vai tratar o gerenciamento da janela, nem se alguém vai tratar. A aplicação estará preocupada com o que ela se destina a fazer, já o Servidor X está preocupado em desenhar na tela, onde pedirem.

Logo, quando a janela é arrastada, o Gerenciador de Janelas solicita ao Servidor X que redesenhe a janela em várias posições diferentes, apagando sempre o desenho anterior, dando a sensação de movimento. Porém, o Gerenciador de Janelas poderia pedir que ao X que desenhasse apenas quando chegasse ao destino, ou poderia não ter gerenciador de janela, fazendo com que a janela não pudesse ser movida.

Um gerenciador de janelas, normalmente, não oferece abstração para ícones e menus, eles esperam que o Ambiente Desktop faça esse trabalho, porém nada impede que sejam criados Gerenciadores de Janelas como o Fluxbox e Enlightenment, que foram feitos para não necessitarem de nenhum componente superior.

As imagens abaixo mostram a Ambiente Desktop GNOME, que veremos mais tarde, exibindo uma janela do Iceweasel.

Na primeira imagem o Gerenciador de Janelas metacity está em execução. Note que a janela apresenta a barra de título, os botões de controle, bordas etc. Todas estas funcionalidades existem pois o metacity está controlando-as.

Na segunda imagem temos o mesmo ambiente, porém o processo do metacity foi destruído, logo, não há mais um Gerenciador de Janelas sendo executado. Note que todas as funcionalidades referentes ao Gerenciador de Janelas deixou de existir.

Em ambos os casos, o Servidor X, neste caso o Xorg, e o ambiente Desktop, o GNOME, estão em execução.





Como foi mostrado, o Ambiente Desktop é algo bastante abstrato. Ele é formado por um conjunto de bibliotecas, serviços muito bem integrados e disponibilizado de forma agradável para utilização dos usuários. Porém, isso tem um custo. O desempenho da máquina é diminuindo de forma sensível. Isso faz com que usuários mais hardcore prefiram usar Gerenciadores de Janelas como, os já citados, Fluxbox e Enlightenment.

Os GNOME, KDE, XFCE, XPde, WindowMaker e IceWM são exemplos de Ambiente Desktop bastante usado no Linux. O XFCE, por exemplo, embora seja bem modesto, também é muito leve, contudo, traz muito mais funcionalidade que qualquer Gerenciador de Janelas, isso o torna uma opção bastante interessante para usuários de máquinas mais modestas.

Recentemente a Novell liberou o servidor XGL que usa a aceleração 3D da placa de vídeo para fazer efeitos maravilhosos. Graças a essa independência dos pacotes, esses efeitos podem ser vistos em qualquer Desktop (GNOME, KDE, XFCE, XPde, WindowMaker, IceWM etc) e qualquer Gerenciador de Janelas (metacity, fluxbox, enlightenment etc), pois o XGL é um Servidor X (que segue o padrão X11), logo ele é transparente as camadas superiores. Além do XGL, existe também o AIGLX da X.Org.

Percebam a modularização, essa independência das camadas do "Linux" (aqui entre aspas pois me refiro ao Linux de uma forma mais abrangente ainda do que vinha tratando) é um dos motivos que levam cada dia mais o "Linux" ganhar não usuários, mas amantes.

Página anterior     Próxima página

Páginas do artigo
   1. O que é o X ?
   2. A evolução do X
   3. Entendendo o X
   4. Controladores de janelas x Ambiente desktop
   5. Brincado com as camadas
Outros artigos deste autor

Configurando Servidor de Nomes - DNS (Debian)

Inicialização e interrupção do sistema (Debian)

Montando um ambiente utilizando Tomcat + Java + MySQL (Debian)

Linvox - Sistema Linux voltado para deficientes visuais

Instalando e configurando o aMule (Debian)

Leitura recomendada

Sistema lento? Encontrando a causa do problema

O maravilhoso Xandros Linux Desktop

Como escolher sua distro (de forma imparcial)

Fazendo backup e recuperando a MBR e tabela de partições do HD

Uma geral acerca do WindowMaker

  
Comentários
[1] Comentário enviado por tekmania em 28/05/2008 - 18:42h

Eu tava fazendo um artigo sobre isso, mas seu ta muito bom. ^^
Nota 10

[2] Comentário enviado por iamunhoz em 28/05/2008 - 19:18h

Realmente, nota 10 este artigo. Muito bom mesmo, agora consegui entender onde entra compiz, beryl e openbox nesta história toda :D

Alías, teria sido legal se você tivesse mencionado estes Gerenciadores de Janelas no teu artigo. Mas isto é detalhe, teu artigo tá realmente 10!

[3] Comentário enviado por fulllinux em 28/05/2008 - 22:21h

Ultimamente só vem aparecendo artigos de grande categoria aki no VOL... para seguir a regra mais um 10 para vc =}

[4] Comentário enviado por gjr_rj em 28/05/2008 - 23:17h

Respondendo ao comentário. Pensei em trabalhar a parte 3D, porém, falei sobre usuários Hardcore no artigo. Eu sou +-. Minha máquina é modesta. É engraçado, pois, o da minha mulher é moderníssima. A minha não tem aceleração 3D, e como tudo que escrevo é testado, não poderia escrever sobre isso.

[5] Comentário enviado por removido em 29/05/2008 - 01:16h

sinceramente está muito legal ..........

[6] Comentário enviado por albfneto em 29/05/2008 - 03:13h

Que artigo legal! Vou cita-lo num artigo de História do Linux que estou preparando

[7] Comentário enviado por anoob em 29/05/2008 - 09:13h

Cara, parabéns! Pela primeira vez entendi o que cada um deles faz. Obrigado pelo artigo. Abraços.

Uso Debian Lenny e quando mato o Metacity ele automáticamente inicia novamente, acredito que é alguma configuração do Gnome. Ou seja. Não consigo rodar apenas o Gnome, sem o Metacity.

[8] Comentário enviado por leandroseverino em 29/05/2008 - 09:58h

?comentario= Muito bom, muito bom mesmo, meus sinceros parabéns.

[9] Comentário enviado por brenogalvao em 29/05/2008 - 11:45h

Porra! Muito bom mesmo!
Era algo que eu precisava saber.
Parabéns mesmo.

[10] Comentário enviado por nicolo em 29/05/2008 - 12:30h

Digamos..... Maravilhoso... eu descobri que não sei nada mesmo.
Que tal um roteiro para dummy guys?

[11] Comentário enviado por hebaja em 29/05/2008 - 13:23h

Já adicionei aos meus favoritos para futuras consultas.
Meus parabéns, este artigo foi bastante esclarecedor. Eu já tinha uma vaga idéia de como essas coisas funcionavam mas nunca tinha procurado saber mais.... muito bom mesmo!

[12] Comentário enviado por f_Candido em 30/05/2008 - 12:48h

Muito bom. Bem explicativo. Parabéns.


Abraços

[13] Comentário enviado por GilsonDeElt em 30/05/2008 - 16:26h

Cara, d+ seu artigo!

Aprendi nele o que são os conceitos de ambiente desktop, gerenciador de janela e servidor X (destes últimos eu já tinha uma idéia melhor, que o artigo complementou), e de quebra finalmente entendi a diferença entre o XOrg e o XFree86.


[14] Comentário enviado por mslinux em 30/05/2008 - 21:15h

Gostaria de ver a criatividade e não apenas o copiar e colar.

[15] Comentário enviado por gjr_rj em 31/05/2008 - 00:13h

copiar e colar !?
rsrsrsrs

Meu micro levou mais de uma semana fazendo essa simples operação.

Levei muito mais tempo procurando material para entender o funcionamento dessa combinação X, GJ, AD, pois se encontra muito como configurá-los (por isso nem toquei no assunto, não falta material sobre isso na net). Quando achei o material (sites e livro), testei e aprendi. A primeira coisa que fiz foi por em meus links. Como sei que é muito difícil alguém visitar os links, resolvi escrever o artigo. aproveitando a parte boa, melhorando o que achei não estar bom e incluindo informações que achei faltar.

Abraço !

[16] Comentário enviado por M4iir1c10 em 31/05/2008 - 10:08h

Muito legal... agora uma duvida...
e possivel eu me conectar com uma maquina remotamente e executar o X com as aplicacoes da maquina remota no meu computador?

Se sim, como eu faco isso?

[17] Comentário enviado por paulo.neto em 31/05/2008 - 13:34h

mauriciomlmph

veja este artigo pode te ajudar.

http://imasters.uol.com.br/artigo/4211/linux/configurando_o_servidor_x_para_ser_acessado_remotamente...

[18] Comentário enviado por thelinux em 31/05/2008 - 20:16h

Artigo bem interessante.

Parabéns pela didática e o compromisso em compartilhar seus conhecimentos. Muitas pessoas aqui no VOL gostam muito de criticar os outros que escrevem.

Está no meus favoritos.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts