5.2. Compreendendo o X

Usar o X pela primeira vez pode causar certo impacto em quem já está familiarizado com outros ambientes gráficos, como o Microsoft® Windows® ou o Mac OS®.

Não é necessário entender todos os detalhes dos vários componentes do X e como eles interagem; entretanto, algum conhecimento básico torna possível tirar vantagens dos pontos positivos do X.

5.2.1. Por que X?

O X não é o primeiro sistema de interface gráfica escrito para o UNIX®, mas é o mais popular. O grupo de desenvolvimento original do X já havia trabalhado em outro sistema de interface gráfica antes de escrever o X. O nome desse sistema era ``W'' (de ``Window''). X é apenas a próxima letra no alfabeto Romano.

O X pode ser chamado de ``X'', ``X Window System'' (Sistema de Janela X), ``X11'', e outros termos. Chamar X11 de ``X Windows'' (n.t. note o ``s'') pode ofender algumas pessoas; veja X(7) para mais dicas sobre isso.

5.2.2. O modelo Cliente/Servidor do X

O X foi concebido desde o início com foco na rede, e adota um modelo ``cliente-servidor''. No modelo do X, o ``servidor X'' executa em um computador que possui teclado, monitor e mouse conectados. O servidor é responsável por gerenciar o vídeo, tratar as entradas pelo teclado e mouse, e assim por diante. Cada aplicativo do X (como o XTerm, ou Netscape®) é um ``cliente''. Um cliente envia mensagens para o servidor como ``Por favor, desenhe uma janela nestas coordenadas'', e o servidor responde a mensagens como ``O usuário acabou de clicar o botão OK ''.

Se há apenas um computador envolvido, como em casa ou em um ambiente de escritório pequeno, o servidor X e os clientes X estarão executando no mesmo computador. Entretanto, é perfeitamente possível executar o servidor X em um computador de mesa menos poderoso, e executar os aplicativos do X (os clientes), por assim dizer, naquela máquina poderosa e caríssima que serve a todo o escritório. Neste cenário a comunicação entre o cliente X e o servidor se dá na rede.

Isto causa confusão a algumas pessoas, pois a terminologia do X é exatamente contrária à que eles esperam. O que se espera é que o ``servidor X '' seja a máquina grande e poderosa do porão e o ``cliente X'' a máquina sobre suas mesas.

Lembre-se que o servidor X é a máquina com monitor e teclado, e os clientes X são os programas que exibem as janelas.

Não há nada no protocolo que force máquinas clientes e servidoras a estarem executando o mesmo sistema operacional ou ainda no mesmo tipo de computador. É certamente possível executar um servidor X no Microsoft Windows ou no Mac OS da Apple, e há várias aplicações gratuitas e comerciais disponíveis que fazem exatamente isso.

O servidor X que é distribuído com o FreeBSD é chamado XFree86, e está disponível gratuitamente, sob uma licença muito similar à licença do FreeBSD. Há também servidores X comerciais disponíveis para o FreeBSD.

5.2.3. O Gerenciador de Janela

A filosofia de concepção do X é muito semelhante à filosofia de concepção do UNIX, ``ferramentas, não políticas''. Isso significa que o X não tenta dizer como a tarefa deve ser realizada. Ao invés disso, as ferramentas são fornecidas ao usuário, e é sua responsabilidade decidir como vai usar essas ferramentas.

Essa filosofia se estende ao X quando o mesmo não dita com o quê as janelas devem parecer na exibição, como movê-las com o mouse, que atalho deve ser usado para mover-se entre as janelas (i.e., Alt+Tab, no caso do Microsoft Windows), a aparência da barra de títulos em cada janela, se elas devem ou não apresentar botões para fechá-las e assim por diante.

Ao invés disso, o X delega essa responsabilidade para um aplicativo chamado ``Gerenciador de Janela'' (do inglês ``Window Manager''). Há dúzias de gerenciadores de janela disponíveis para o X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, e outras. Cada um desses gerenciadores de janela provê diferentes visuais e sensações; alguns deles suportam ``áreas de trabalho virtuais''; alguns permitem personalizar atalhos de teclado para gerenciar a área de trabalho; outros tem um botão ``Iniciar'' ou dispositivo semelhante; outros são ``tematizáveis'', permitindo uma modificação completa do visual e sensação pela aplicação de um novo tema. Estes gerenciadores de janela e muitos outros, estão disponíveis na categoria x11-wm da Coleção de Ports.

Para completar, ambos ambientes de trabalho KDE e o GNOME têm seus próprios gerenciadores de janela integrados na área de trabalho.

Cada gerenciador de janela também possui um mecanismo de configuração diferente; alguns esperam que a configuração seja escrita manualmente, outros possuem GUI como ferramentas para a maior parte das tarefas de configuração; pelo menos um (sawfish) tem seu arquivo de configurações escrito em um dialeto da linguagem Lisp.

Política do Foco: Outro recurso de responsabilidade do gerenciador de janela é a ``política de foco'' do mouse. Todo sistema de enjanelamento precisa de parâmetros para escolher uma janela que responda ao acionamento do teclado, e deve indicar visivelmente qual janela está ativa também.

Uma política de foco bem familiar é a chamada ``clique para focar''. Este é o modelo utilizado pelo Microsoft Windows, no qual uma janela se torna ativa após receber um clique do mouse.

O X não suporta nenhuma política de foco em particular. Ao invés disso, o gerenciador de janela controla qual tem o foco a qualquer tempo. Os diferentes gerenciadores de janela vão suportar métodos de foco distintos. Todos suportam clique para focar e a maioria deles suporta vários outros.

As políticas de foco mais populares são:

o foco segue o mouse

A janela abaixo do ponteiro do mouse é a janela que possui o foco. Esta não é necessariamente a janela que está sobre todas as demais. O foco é modificado ao apontar outra janela, não há necessidade de clicar nela.

foco desleixado

Esta política é uma pequena extensão de ``o foco segue o mouse''. Com o foco seguindo o mouse, se o mouse é movido para a janela raiz (ou a área de trabalho) então nenhuma janela tem o foco, e o acionamento do teclado é simplesmente perdido. Com o foco desleixado, o foco é modificado apenas quando o cursor entra em uma nova janela, e não quando se sai da janela atual.

clique para focar

A janela ativa é selecionada pelo clique do mouse. A janela pode então ser ``elevada'' e aparecer na frente de todas as demais janelas. Todo acionamento do teclado será agora direcionado para essa janela, mesmo se o cursor for movido para outra janela.

Muitos gerenciadores de janela suportam outras políticas, bem como variações nestas. Certifique-se de consultar a documentação própria do gerenciador de janela.

5.2.4. Widgets

A abordagem do X de prover ferramentas e não políticas se estende para os widgets vistos nas telas de cada aplicativo.

``Widget'' é um termo para todos os ítens da interface com o usuário que podem ser clicados ou manipulados de alguma forma; botões, check boxes, radio buttons, ícones, listas, e outros. O Microsoft Windows chama estes de ``controles''.

O Microsoft Windows e o Mac OS da Apple's têm uma política muito rígida para os widgets. Espera-se que os desenvolvedores de aplicações compartilhem o mesmo visual e sensação em seus aplicativos. Com o X, não foi considerado sensato determinar um estilo gráfico particular, ou conjunto de widgets a aderir.

Como resultado, não espere que as aplicações do X tenham o mesmo visual e sensação. Há vários conjuntos de widgets populares e variações, incluindo o conjunto original de widgets Athena do MIT, Motif® (no qual o conjunto de widgets do Microsoft Windows foi modelado, todas as bordas chanfradas em três tons de cinza), OpenLook, e outros.

A maior parte das novas aplicações para o X vão utilizar um conjunto de widgets de visual moderno, ou Qt, utilizado pelo KDE, ou GTK, utilizado pelo projeto GNOME. No que diz respeito a isso, há alguma convergência no visual e sensação da área de trabalho do UNIX, o que certamente torna tudo mais fácil para os novos usuários.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.