Capítulo 15. X

Índice
15.1. O que é o X?
15.2. Configuração
15.3. O mouse
15.4. O teclado
15.5. O monitor
15.6. A placa de vídeo e o servidor
15.7. Inicializando o X
15.8. Personalizando o X
15.9. Outros window managers
15.10. Exemplo de uso dos recursos do X
15.11. Login gráfico com xdm

15.1. O que é o X?

O sistema X Window é um ambiente de trabalho gráfico disponível para o NetBSD e para muitos outros sistemas Unix (e não Unix). Com efeito, o X é mais que um simples ambiente gráfico. Graças ao uso do protocolo X, o sistema X Window é "network transparent" (transparente à rede) e é capaz de executar aplicações distribuídas (cliente-servidor). Isto significa, a uma primeira aproximação, que é possível lançar um programa em um host "client" e visualizar-lhe o output gráfico em um outro host "server" de modo totalmente transparente (transparente significa, nesse caso, que não é necessário modificar a aplicação para obter este resultado). O sistema X Window é produto do "X Consortium" e a edição corrente é a X11R6. A versão do X usada pelo NetBSD é a XFree86, uma implementação open source livremente redistribuível do sistema X Window.

Quando começamos a usar o X encontramos alguns termos cujo significado pode parecer inicialmente obscuro. Os elementos de base do X são:

Recapitulando, para que se possa utilizar o ambiente gráfico é necessário:

Normalmente se utiliza apenas um window manager por vez em cada servidor X (mas é possível ativar mais de um servidor X em um mesmo computador).

15.2. Configuração

Se você não escolheu uma configuração mínima para a instalação do NetBSD, ao fim da instalação o X, na sua encarnação do XFree86, já está presente no sistema e pronto para funcionar, contanto que se crie o arquivo de configuração, o temido /etc/XF86Config. Para se ter uma idéia do aspecto deste arquivo pode-se dar uma olhada em /usr/X11R6/lib/X11/XF86Config.eg. A estrutura do arquivo de configuração está descrita formalmente em XF86Config(4/5), que pode ser examinado com:

# man XF86Config    

Antes de configurar o sistema é aconselhável uma atenta leitura da documentação do XFree86 em /usr/X11R6/lib/X11/doc: há arquivos README específicos para as placas de vídeo e para o mouse, e também um README.NetBSD. Aconselho começar com a leitura do QuickStart.doc. O tempo dedicado à leitura destas informações não é de modo algum desperdiçado. O conhecimento da própria configuração e de como utilizá-la com o X é de grande importância para se aproveitar da melhor maneira o próprio hardware.

O arquivo /etc/XF86Config pode ser escrito manualmente com qualquer editor ou usufruindo de algum programa que o crie automaticamente, partindo da configuração especificada pelo usuário. Os programas mais conhecidos são xf86config e XF86Setup. O primeiro funciona em modo texto e já vem instalado no X. O segundo é um programa gráfico que pode ser encontrado na coleção de pacotes.

Ambos os aplicativos requerem ao usuário especificar a configuração do próprio sistema e, em particular:

Antes de escrever o arquivo de configuração, à mão ou com um dos dois programas já mencionados, é necessário que se obtenha estas informações.

15.3. O mouse

No que diz respeito ao mouse, é necessário verificar se ele é do tipo serial ou PS/2 e se estamos usando o dispositivo wsmouse, que exige um protocolo diferente. Para o mouse serial é preciso escolher o protocolo correto e especificar a porta serial. Por exemplo, para um mouse na primeira porta serial:

Section "Pointer"
  Protocol    "Microsoft"
  Device      "/dev/tty00"
EndSection    

Para um mouse no dispositivo wsmouse:

Section "Pointer"
  Protocol    "wsmouse"
  Device      "/dev/wsmouse0"
EndSection    

No campo "Device" também se pode especificar /dev/mouse, contanto que se crie o symbolic link apropriado no sistema. Por exemplo:

# ln -sf /dev/wsmouse0 /dev/mouse    

15.4. O teclado

Mesmo que você já tenha configurado o teclado para o wscons, para poder usar o X é necessário efetuar uma configuração do teclado específica para esse ambiente. Isso, em todo caso, não tem nada de complexo.

Na falta de contraindicações convém utilizar o protocolo XKB, selecionando o tipo de teclado e a sua disposição.

A configuração do teclado é um dos pontos fracos de todos os programas de configuração automática. Geralmente convém deixar definida a configuração original para o inglês americano e depois retocar manualmente o arquivo de configuração gerado pelo programa. Por exemplo:

# XkbDisable
# XkbKeymap   "xfree86(us)"

XkbModel        "pc102"
XkbLayout       "it"
XkbVariant      "nodeadkeys"    

Substituindo pc105 por pc102 no XkbModel podem ser utilizados até mesmo os símbolos dos teclados Windows.

15.5. O monitor

É fundamental especificar corretamente os valores da freqüência horizontal e vertical do monitor. Uma definição correta protege o monitor de configurações incompatíveis da placa de vídeo, evitando que seja danificado. No diretório da documentação está presente um arquivo com as especificações de um grande número de monitores.

15.6. A placa de vídeo e o servidor

A placa de vídeo pode ser escolhida no banco de dados dos programas de configuração. Uma vez escolhida a placa, o próprio programa cuida das configurações restantes.

Uma vez escolhida a placa é preciso definir o servidor a ser utilizado. Os programas de configuração normalmente são capazes de escolher o servidor adequado com base na placa gráfica selecionada. Algumas placas, entretanto, são suportadas por mais de um servidor. Nesse caso é preciso decidir com base na documentação. Servidores diferentes têm geralmente características e níveis de suporte para as placas de vídeo. Um exemplo típico é a placa S3 Virge que é suportada tanto pelo servidor SVGA quanto pelo servidor S3V.

15.7. Inicializando o X

Ao se finalizar, o programa de configuração cria o arquivo /etc/XF86Config, que pode ser examinado e modificado a mão.

Antes de executar o X convém:

Neste ponto pode-se executar o X com o comando:

# startx    

Se o X não se inicializa, será preciso compreender o motivo observando as mensagens sobre a tela e corrigindo o arquivo de configuração.

Se o X inicializa-se mas alguma coisa não funciona (por exemplo, o mouse), pode-se sair do X com a combinação de teclas Ctrl+Alt+Backspace (não disponível para todas as versões de hardware). Se tudo vai bem, entretanto, adentramos o ambiente X com o gerenciador de janelas nativo que é o twm. Trata-se de um window manager simples mas eficaz, tanto que muita gente não sente a necessidade de procurar outros e continuam a usá-lo. Naturalmente, é possível instalar um outro window manager, assim como personalizar a aparência do twm. Por exemplo, tente dar o seguinte comando em um xterm:

# xsetroot -solid DarkSeaGreen    

15.8. Personalizando o X

Há vários maneiras de personalizar a configuração (isto é, o aspecto das janelas) do X já na inicialização. Uma das mais simples é criar um arquivo .xinitrc no próprio diretório raiz, copiando o arquivo pré-configurado do sistema e o modificando.

# cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
# vi .xinitrc
    

Eis um exemplo de modificação que inicializa o gerenciador de janelas, mostra um relógio em baixo à direita e abre dois terminais gráficos (xterms). Além do mais, define uma cor para o fundo.

a primeira parte é igual
...
# start some nice programs
twm &
xclock -geometry 50x50-1-1 &
xterm -geometry 80x34-1+1 -bg OldLace &
xsetroot -solid Bisque4 &
exec xterm -geometry 80x44+0+0 -bg AntiqueWhite -name login    

Com esse tipo de configuração, para sair do X é necessário que o último xterm (aquele com o nome de "login") seja fechado.

Além das preferências pessoais quanto à disposição das janelas e das cores, parece-me evidente que somente com estas pequenas modificações o ambiente de trabalho torna-se mais agradável.

Para melhorar ainda mais o aspecto do desktop podem ser instalados alguns programas utilitários da coleção de pacotes, entre os quais:

15.9. Outros window managers

Quem não se contenta com o twm pode instalar um outro gerenciador de janelas entre os muitos disponíveis na coleção de pacotes. Entre os mais populares estão: fvwm2, olwm/olvwm (Open Look Window Manager), WindowMaker, Enlightenment e AfterStep.

A seguir vejamos, a título de exemplo, a instalação do WindowMaker. Para adicionar o programa utilizemos o pacote pré-compilado windowmaker-0.61.tgz, que depende de uma série de pacotes que devem ser instalados. Como sempre, seja o pkg_add seja o make install administrarão automaticamente todas as dependências e, portanto, na realidade não é necessário individuá-los e instalá-los manualmente.

# cd /usr/pkgsrc/x11/windowmaker
# make depends-list
xpm-3.4k
jpeg-6b
pkglibtool-1.2p2
giflib-3.0
libproplist-0.9.1
tiff-3.5.2    

Depois de ter instalado os pacotes exigidos acrescentemos o WindowMaker e, já que estamos nisso, também alguns temas:

# pkg_add windowmaker-0.61.0.tgz wmthemes-0.6x.tgz    

O WindowMaker agora está instalado e para inicializá-lo basta modificar o .xinitrc e/ou o .xsession, substituindo a chamada ao window manager anterior (twm) com a chamada ao comando wmaker. Por exemplo:

# start some nice programs
# start WindowMaker
wmaker &
xclock -geometry 50x50-1-1 &
xdaemon2 -geometry +0-70 &
...      
Nesse exemplo também o programa xdaemon, que "personaliza" o desktop, é executado automaticamente.

Antes de inicializar o WindowMaker, é necessário executar o programa de configuração:

$ wmaker.inst
$ startx
    

15.10. Exemplo de uso dos recursos do X

A título de exemplo sobre como são personalizados os recursos dos programas X, vejamos como mudar as fontes de caracteres (fonts) pré-instaladas no XTerm.

Para personalizar os recursos utilizados por um programa, no nosso caso o XTerm, pode-se agir em nível global, modificando-se o arquivo /usr/X11R6/lib/app-defaults/Xterm. É preferível, entretanto, modificar o arquivo ${HOME}/.Xresources, até porque, fazendo assim, a configuração não se perde no caso de uma atualização do X ou do sistema operacional.

Uma vez tomada essa decisão, é preciso escolher uma nova fonte de caracteres usando os programas xfontsel e xlsfonts. Também é bom consultar o arquivo que define os codinomes (aliases) das fontes de caracteres, que é o /usr/X11R6/lib/X11/fonts/misc/font.alias. Por exemplo, descobre-se que o tipo pré-instalado de fonte de caracteres "fixed" é na realidade o codinome de "-misc-fixed-medium-r-semicondensed-13-120-75-c-60-iso8859-1". Mesmo as fontes de caracteres como, por exemplo, "9x15" são na realidade codinomes.

Uma vez escolhida a fonte de caracteres, antes de a instalar no .Xresources, pode-se testá-la com um comando similar ao seguinte:

$ xterm -fn '-bitstream-courier-medium-r-normal-*-15-*-*-*-*-*-*-*'      
Uma vez encontrado o tipo desejado de fonte de caracteres, que vamos supor seja "9x15", o inserimos no arquivo .Xdefaults com uma linha do seguinte tipo:
XTerm.VT100.font: 9x15      
Para tornar imediatamente efetiva a mudança, executa-se o comando:
$ xrdb -merge ~/.Xresources      
Na próxima reinicialização do NetBSD não será mais necessário executar o comando precedente porque o arquivo .xinitrc comumente realiza automaticamente a fusão (merge) do .Xresources com o funcionamento do X.

Nota: note-se que

XTerm.VT100.font: 9x15	
é diferente de
XTerm*font: 9x15	
No segundo caso o caracter "*" age como caracter curinga (wildcard) e, portanto, a diretriz tem efeito sobre todas as fontes de caracteres (por exemplo, também sobre aquelas dos menus). A escolha de uma das duas formas depende, portanto, do efeito que se quer obter.

Examinando a página do manual do XTerm (como também da maior parte dos programas do X) encontram-se indicações sobre os recursos que são passíveis de personalização.

Quase todos os programas X (aqueles escritos com os assim chamados "X Toolkit Intrinsics"), aceitam algumas opções comuns da linha de comando, tais como:

  • -display display

  • -geometry geometry

  • -bg color, -fg color

  • -fn font

  • -xrm resourcestring

Veja-se a página de manual do X para detalhes adicionais.

15.11. Login gráfico com xdm

Quando se utiliza sempre o X para trabalhar, pode ser mais agradável inicializá-lo diretamente com a inicialização do computador e ter um login gráfico. Nada mais simples:

Os arquivos de configuração do xdm encontram-se em /usr/X11R6/lib/X11/xdm. Em Xservers o X é inicializado no terminal virtual vt05. Se se quer inicializá-lo em um outro terminal esse é o momento certo para vermos isso. Para um bom funcionamento do xdm, a fim de se evitar que dois processos entrem em conflito pelo teclado, convém inicializar o xdm em um terminal virtual em que o getty não está ativo. Na prática se no Xservers temos:

:0 local /usr/X11R6/bin/X :0 vt04    

no /etc/ttys é oportuno ter:

ttyE3   "/usr/libexec/getty Pc"         vt220   off secure    

(note-se que vt04 corresponde a ttyE3, porque a numeração dos vt começa em 1, enquanto que a dos ttyE começa em 0).

Para tornar a tela de login do xdm um pouco menos "miserável", basta intervir no arquivo de configuração do xdm. Por exemplo, pode-se mudar a cor do fundo adicionando ao arquivo Xsetup_0 a seguinte linha:

xsetroot -solid SeaGreen    

Ou, no lugar da cor, como fundo pode-se por uma imagem, usando xpmroot. Por exemplo:

xpmroot /path_to_xpm/netbsd.xpm    

Jogando com os arquivos de configuração, podem-se obter muitos efeitos agradáveis.