<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>Linux Portuguese-HOWTO: Configuração do X</TITLE> <LINK HREF="Portuguese-HOWTO-6.html" REL=next> <LINK HREF="Portuguese-HOWTO-4.html" REL=previous> <LINK HREF="Portuguese-HOWTO.html#toc5" REL=contents> </HEAD> <BODY> <A HREF="Portuguese-HOWTO-6.html">Next</A> <A HREF="Portuguese-HOWTO-4.html">Previous</A> <A HREF="Portuguese-HOWTO.html#toc5">Contents</A> <HR> <H2><A NAME="CONF-X"></A> <A NAME="s5">5. Configuração do X</A></H2> <P>Quando o servidor X está ativo, ele coloca o teclado do computador em um modo de operação chamado <EM>raw</EM> (cru), em oposição ao modo normal, chamado <EM>cooked</EM> (isto mesmo: cozido). No modo raw o sistema operativo não processa seqüências acento-letra. O servidor X é uma daquelas raras aplicações que, por dever de ofício, tem que tratar o teclado ``em baixo nível''. <P>O X vem equipado com um utilitário destinado à configuração do teclado, chamado <EM>xmodmap</EM>, que cumpre uma função correspondente à do comando <EM>loadkeys</EM>, ou seja, lê um arquivo de mapa de teclado do X, expecificando as equivalências entre os <EM>keycodes</EM> e respectivos <EM>keysymbols</EM>. <P>Eis um excerto deste arquivo: <PRE> keycode 47 = ccedilla Ccedilla dead_acute dead_doubleacute keycode 48 = masculine ordfeminine dead_circumflex dead_caron keycode 49 = backslash bar notsign keycode 50 = Shift_L keycode 51 = dead_tilde dead_circumflex dead_grave dead_breve </PRE> Observem que, ao contrário do loadkeys, o xmodmap não possui um diretório padrão onde o arquivo é procurado. <P>A configuração do X não interfere de forma alguma com a configuração do modo de texto. De facto, é possível ter o seu X bem configurado, e no entanto não ter realizado qualquer tipo de configuração ao modo de texto, e vice-versa. Outro ponto importante de se observar é que os códigos numéricos das teclas no X não correspondem aos do console. A tecla <B>Backspace</B>, por exemplo, tem o número 14 no console, e 22 no X (em um computador do tipo IBM-PC). <P>As versões 3.2 e posteriores do XFree86 permitam definir <EM>dead-keys</EM>, mas o seu tratamento é responsabilidade da aplicação, conforme visto na seção <A HREF="Portuguese-HOWTO-2.html#SEC:DIFXC">Modo texto versus Sistema de Janelas X</A>. Há modos de contornar esta limitação e tornar o tratamento de <EM>dead-keys</EM> transparente às aplicações, conforme mostrado na seção <A HREF="#SEC:CONTOR-X">Contornando os limites do X</A>. <P>Dividimos a configuração em duas partes: Uma que deve ser feita antes do <EM>login</EM> do usuário e outra depois. <P> <H2><A NAME="ss5.1">5.1 Configuração do xinit</A> </H2> <P>Junto com este documento são fornecidos vários mapas de teclado para uso no X. Para automatizar o processo de configuração do teclado basta copiar o arquivo adequado para o diretório <CODE>/usr/X11R6/lib/X11/xinit</CODE>, onde normalmente ficam os arquivos de início da seção de trabalho no X. Na distribuição Slackware esse diretório é um link simbólico para <CODE>/var/X11R6/lib/xinit</CODE> e na Debian e na Red Hat para <CODE>/etc/X11/xinit</CODE>. <P>Nas distribuições Slackware e Red Hat, verifique se no referido diretório existe um arquivo chamado <CODE>.Xmodmap</CODE>. Se existir, copie o <CODE>Xmodmap.</CODE><alguma-coisa> para ele, ou faça um link. Normalmente o arquivo de configuração <CODE>xinitrc</CODE> possui os comandos para carregá-lo automaticamente. Veja o seguinte trecho: <P> <PRE> #!/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi </PRE> <P>Na distribuição Debian o mapa de teclado padrão do X é <CODE>/etc/X11/Xmodmap</CODE>, basta copiar o mapa desejado para aquele arquivo. Ele será carregado pelo xinitrc, que por sua vez é um link simbólico para <CODE>/etc/X11/Xsession</CODE>, sempre que iniciar a seção de trabalho do usuário. <P> <H2><A NAME="ss5.2">5.2 Configuração do XDM</A> </H2> <P>Existe ainda um pequeno problema: no meu computador, por exemplo, o sistema carrega diretamente o X ao dar boot e o login é feito pelo X Display Manager (xdm). Como o xdm faz o login <B>antes</B> de iniciar a seção de trabalho, o mapa de teclado não será carregado, o que pode criar problemas se o usuário usa caracteres como ``['' ou ``]'' em sua senha, pois nos teclados ABNT-2 e português esses símbolos são gerados por teclas cujos códigos numéricos não são os mesmos do teclado americano. <P>É preciso fazer uma pequena alteração no arquivo de configuração Xsetup_0. Esse arquivo deve estar no diretório <CODE>/usr/X11R6/lib/X11/xdm</CODE>, que na Slackware é um link simbólico para <CODE>/var/X11R6/lib/xdm</CODE> e <CODE>/etc/X11/xdm</CODE> na Debian e -- sujeito a confirmação -- RedHat. Eis o conteúdo completo desse arquivo: <PRE> #!/bin/sh # # /usr/X11R6/lib/X11/xdm/Xsetup_0 # sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -r $sysresources ]; then xrdb -merge $sysresources fi if [ -r $sysmodmap ]; then xmodmap $sysmodmap fi xconsole -geometry 480x130-0-0 -daemon -notify -verbose -exitOnFail </PRE> <P>A distribuição Debian tem um <CODE>Xsetup_0</CODE> um pouco diferente, em <CODE>/etc/X11/xdm/Xsetup_0</CODE>, mas basta acrescentar-lhe o seguinte: <P> <PRE> sysmodmap=/etc/X11/Xmodmap sysresources=/etc/X11/Xresources if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi </PRE> <P>Se no seu computador o login do usuário também for feito sempre via xdm, não é necessário mexer no xinitrc, como mostrado na seção anterior, já que o mapa de teclado será carregado antes do início na seção do usuário. <P> <H2><A NAME="ss5.3">5.3 Compose</A> </H2> <P>Uma das coisas mais importantes a definir quando vamos utilizar acentuação por meio de <EM>dead-keys</EM> é o conjunto de <EM>regras de composição</EM>. Essas regras determinam, por exemplo que a composição do caracter <B>'</B> com a letra <B>e</B> gerará um <B>é</B>. <P>Ao contrário do console, no qual podemos definir as regras de composição no próprio mapa de teclado, no X essas regras são colocadas no arquivo <CODE>/usr/X11R6/lib/X11/locale/???/Compose</CODE>, onde ??? é a codificação em uso (no nosso caso, iso8859-1). <P>Para facilitar o uso dos mapas para teclados que não têm o c-cedilhado, como o US+ (veja adiante) é conveniente definirmos uma nova regra de composição, permitindo que o <B>Ç</B> seja gerado pela seqüência <CODE>'C</CODE>. Se não fizermos isso, seremos obrigados a digitar <CODE><dead_cedilla-C></CODE>, sedo o <EM>dead_cedilla</EM> produzido pela combinação <CODE>AltGR-=</CODE>, o que não é nada confortável. Além disso, no teclado americano somos obrigados a usar as aspas duplas para gerar o trema. <P>O arquivo <CODE>Compose</CODE> fornecido foi feito procurando imitar ao máximo o comportamento do console e possui as seguintes facilidades para geração de caracteres: <UL> <LI>C-cedilha: tecla <CODE>Ç</CODE> ou seqüência <acento-agudo>-C</LI> <LI>Apóstrofo: tecla <CODE>'</CODE> ou seqüências <acento-agudo>-<acento-agudo> e <acento-agudo>-<espaço></LI> <LI>Acento grave: seqüências <acento-grave>-<acento-grave> e <acento-grave>-<espaço></LI> <LI>Aspas: tecla <CODE>"</CODE> ou seqüência <trema>-<trema></LI> <LI>Trema: seqüência <trema>-<espaço></LI> <LI>Til: seqüências <til>-<espaço> e <til>-<til></LI> <LI>Circumflexo: seqüências <circumflexo>-<espaço> e <circumflexo>-<circumflexo></LI> </UL> <P>Para incluirmos as novas regras, basta aplicar uma alteração à definição original. O arquivo <CODE>Compose.patch</CODE> pode ser obtido via WWW na página do Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório <CODE>/usr/X11R6/lib/X11/locale/iso8859-1/</CODE>, faça uma cópia de reserva do <CODE>Compose</CODE> original e invoque o utilitário <EM>patch</EM>: <PRE> cp -p Compose Compose.backup patch < Compose.patch </PRE> <P>Caso você prefira não aplicar o ``patch'', um arquivo <CODE>Compose</CODE> pronto também é fornecido. Lembre-se de fazer cópia do original <B>antes</B> de substituí-lo! <H2><A NAME="SEC:LOCALE"></A> <A NAME="ss5.4">5.4 Locale</A> </H2> <P>Para os usuários brasileiros, pode haver mais uma alteração a fazer no X. Conforme vimos na seção <A HREF="Portuguese-HOWTO-4.html#SEC:LIBC">Biblioteca libc</A>, uma variável de ambiente (LANG ou LC_ALL) configura o suporte internacional existente na biblioteca de funções padrão do sistema (<EM>libc</EM>). A biblioteca de funções do X (<EM>Xlib</EM>) usa a variável LANG para identificar a língua em uso mas até a revisão 6.3, na qual é baseado o XFree86, não era incluída a combinação ``pt_BR'', correspondente a Português/Brasil. Como resultado, cada vez que executarmos um aplicativo X com LC_ALL definido como ``pt_BR'' ele emitirá a mensagem ``Warning: locale not supported by Xlib, locale set to C''. <P>Para incluir o local pt_BR no X11R6.3 basta alterar três arquivos existentes no diretório <CODE>/usr/X11R6/lib/X11/locale</CODE>. Pegue o arquivo <CODE>Xlocale.patch</CODE> via WWW na página do Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório <CODE>/usr/X11R6/lib/X11/locale</CODE>, faça uma cópia de reserva dos arquivos a serem alterados e invoque o utilitário <EM>patch</EM>: <PRE> cp -p compose.dir compose.dir.backup cp -p locale.alias locale.alias.backup cp -p locale.dir locale.dir.backup patch < Xlocale.patch </PRE> <P>Caso você prefira não aplicar o ``patch'', arquivos prontos também são fornecidos. Lembre-se de fazer cópias dos originais <B>antes</B> de substituí-los! <P>Em setembro de 1998 o fix-2 da revisão 6.4 do X Window System incluiu oficialmente o suporte ao local pt_BR. Infelizmente neste mesmo fix-2 foi introduzida uma falha em uma das funções de tratamento de <EM>input contexts</EM> da Xlib que provoca violações de acesso à memória. Uma das aplicações afetadas é o processador de textos LyX. Uma correção provavelmente será incluída no fix-4. O X11R6.4 deverá ser a base para a versão 4 do XFree86. <P> <H2><A NAME="ss5.5">5.5 Geração de mapas com o XKeyCaps</A> </H2> <P>O programa XKeyCaps, criado por <A HREF="http://www.jwz.org/">Jamie Zawinski</A> é uma interface gráfica para o <CODE>xmodmap</CODE>, que mostra na tela o desenho de um teclado e permite modificar interativamente os símbolos gerados por cada tecla e gerar automaticamente o arquivo <CODE>.Xmodmap</CODE> correspondente. <P>Ele pode ser obtido via WWW em <A HREF="http://www.jwz.org/xkeycaps/">http://www.jwz.org/xkeycaps/</A> e, a partir da versão 2.43, já incoropra também suporte para o desenho brasileiro (ABNT2), uma contribuição de Andre Gerhard. <P> <H2><A NAME="SEC:CONTOR-X"></A> <A NAME="ss5.6">5.6 Contornando os limites do X</A> </H2> <P>Conforme foi explicado na seção <A HREF="Portuguese-HOWTO-2.html#SEC:DIFXC">Modo texto versus Sistema de Janelas X</A>, o tratamento de acentos deve ser feito pela aplicação, mas ainda há muitos programas que não levam isto em consideração, tais como Netscape Navigator/Communicator e Nedit. Como não é possível modificar muitos deles, é preciso encontrar outro tipo de solução. <P> <H3>Alteração da biblioteca Xlib</H3> <P>Linux, assim como a maioria dos sistemas operacionais modernos, usa um sistema de vínculo de programas a bibliotecas de funções chamado ``ligação dinâmica'' (<EM>dynamic binding</EM>). Deste modo, podemos modificar o comportamento de um programa alterando uma dessas bibliotecas. Maiores informações sobre este tema pode ser obtida nos manuais do Linux com os comandos <PRE> man ld.so man ldconfig man ldd man dlopen </PRE> Thomas Quinot criou uma alteração para a biblioteca de funções do X (<EM>Xlib</EM>) introduzindo o tratamento de acentos na função <B>XLookupString</B>, Tudo que se tem a fazer é substituir o arquivo contendo esta biblioteca por outro, que pode ser obtido via internet no endereço <P> <BLOCKQUOTE> <A HREF="http://web.fdn.fr/~tquinot/dead-keys.en.html">http://web.fdn.fr/~tquinot/dead-keys.en.html</A></BLOCKQUOTE> <P>Existem duas versões do arquivo, uma para sistemas onde as bibliotecas do X suportam o uso seguro de <EM>threads</EM> (Debian 2.x, Red Hat 5.x, etc.) e outra para os sistemas que não possuem tal atributo (Slackware, Caldera 1.x). Se você não sabe o que são threads não se preocupe com isso, mas saiba que eles permitem criar um programa capaz de se dividir em sub-processos que rodam concorrentemente em um computador. Para analisar sua <EM>Xlib</EM> rode o seguinte comando: <P> <BLOCKQUOTE> nm --dynamic /usr/X11R6/lib/libXext.so.6|grep _Xglobal_lock </BLOCKQUOTE> <P>Se aparecer ``<CODE>U _Xglobal_lock</CODE>'' seu sistema suporta threads e o arquivo a obter é <CODE>libX11-XF3.3.1-TS.tar.gz</CODE>. Se não aparecer, seu sistema não suporta threads e o arquivo a obter é <CODE>libX11-XF3.3.1.tar.gz</CODE>. Tendo obtido o arquivo, copie-o para um diretório temporário e extraia seu conteúdo. Mova o arquivo <CODE>/usr/X11R6/libX11.so.6.1</CODE> para outro diretório, para preservá-lo. Não é suficiente renomeá-lo! Remova-o para um diretório cujo nome <B>não</B> esteja contido no arquivo <CODE>/etc/ld.so.conf</CODE>. Depois, mova o novo arquivo para o lugar do antigo e rode o programa <EM>ldconfig</EM> (isto deve ser feito pelo usuário <B>root</B>): <PRE> cp libX11-XF3.3.1-TS.tar.gz /tmp cd /tmp tar xzf libX11-XF3.3.1-TS.tar.gz mkdir /usr/X11R6/oldlib mv /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/oldlib mv libX11.so.6.1 /usr/X11R6/lib chown root:root /usr/X11R6/lib/libX11.so.6.1 chmod 755 /usr/X11R6/lib/libX11.so.6.1 /sbin/ldconfig </PRE> <P>É aconselhável que a operação seja realizada quando nenhuma aplicação X estiver rodando. A seguir, edite o arquivo de configuração do servidor X, chamado <CODE>XF86Config</CODE>. Este arquivo fica no diretório <CODE>/etc</CODE> (Slackware) ou <CODE>/etc/X11</CODE> (Debian, Red Hat). Procure a seção ``Keyboard'' e inclua a opção ``XkbDisable'', conforme mostrado a seguir: <PRE> Section "Keyboard" Protocol "Standard" XkbDisable EndSection </PRE> <P>A opção XkbDisable inabilita a extensão XKEYBOARD do servidor X, o que neste caso serve para sinalizar à função <B>XLookupString</B> que ela deve tratar os acentos. Se quisermos voltar ao comportamento normal, basta retirar a opção do <CODE>XF86Config</CODE>. <P>Configure o mapa de teclado do X conforme explicado nas seções anteriores deste documento. Para testar o resultado, rode o programa <EM>xedit</EM> e digite alguns caracteres acentuados. <P> <H3>Alteração no kernel do Linux</H3> <P> <BLOCKQUOTE> Esta seção é baseada em contribuição enviada por Bruno Barberi Gnecco e na documentação do diacrd. Podem haver ainda alguns erros e se alguém os detectar, por favor avise-me. </BLOCKQUOTE> <P>Seguindo a regra geral do mundo *nix, existe sempre mais de um modo se resolver o mesmo problema. Conforme vimos anteriormente, existem dois modos de operação do teclado, chamados <EM>raw</EM> e <EM>cooked</EM>. Estes modos de operação podem ser mudados com o programa <B>kbd_mode</B>, integrante do pacote kbd, o que não é recomendável fazer a não ser para restaurar o estado do console após um desastre com o servidor X, por exemplo. No modo raw o kernel não processa os diacríticos (acentos). <P>Cedric Adjih criou uma alteração para o kernel que permitia tratar os acentos mesmo em modo raw, inicialmente voltada para o teclado de desenho francês. Enéas Queiroz, André D. Balsa e Claudemir Todo Bom fizeram melhorias e o adaptaram para os teclados internacional, português e ABNT. O tratemanto de acentos é feito parte pelo kernel, parte por um processo que roda em retaguarda (<EM>daemon</EM>) chamado <B>diacrd</B>, conforme descrito a seguir: <UL> <LI>Uma modificação no kernel faz que todos os dados lidos do teclado sejam redirecionados para um dispositivo especial do sistema chamado <CODE>/dev/rawkbd</CODE> quando o teclado estiver em modo <EM>raw</EM>.</LI> <LI>Os dados que o kernel grava no <CODE>/dev/rawkbd</CODE> são lidos pelo programa <CODE>diacrd</CODE>, que processa as seqüências acento-letra e reescreve no <CODE>/dev/rawkbd</CODE> os caracteres acentuados na forma de códigos de varredura (<EM>scancodes</EM>) que normalmente não existem no teclado.</LI> <LI>O kernel lê no <CODE>/dev/rawkbd</CODE> os códigos gravados pelo <CODE>diacrd</CODE> e os passa à aplicação, que no caso é o servidor X.</LI> <LI>O servidor X mapeia os códigos de varredura para caracteres. Um mapa de teclado especial permite então gerar as letras acentuadas.</LI> </UL> <P>O diacrd pode ser obtido via FTP anônimo no endereço <BLOCKQUOTE> <A HREF="ftp://metalab.unc.edu/pub/Linux/system/keyboards">ftp://metalab.unc.edu/pub/Linux/system/keyboards</A></BLOCKQUOTE> Há versões diferentes, de acordo com o tipo de teclado e, pelo menos por enquanto, não se pode reconfigurá-lo sem recompilar. Para fazer a instalação, de acordo com o arquivo ``README'', deve-se fazer o seguinte (pelo usuário <B>root</B>): <UL> <LI>Obtenha o arquivo -.tar.gz correspondente a seu teclado. Extraia seu conteúdo, o que deverá criar um diretório chamado <CODE>diacrd-<versão></CODE>.</LI> <LI>Edite o arquivo <CODE>diacrd.c</CODE> e remova os comentários desejados, de acordo com suas preferências. Pode-se incluir capacidade de rodar o programa <B>xmodmap</B> e ejetar o CD-ROM sob controle do pressionamento de uma combinação de teclas.</LI> <LI>Aplique a modificação no kernel. Para isto, execute o comando ``make patch-usr-src''.</LI> <LI>Crie o dispositivo <CODE>/dev/rawkbd</CODE> executando o comando ``make rawkbd''.</LI> <LI>Compile o diacrd e instale-o executando os comandos ``make'' e ``make install''.</LI> <LI>Compile e instale o kernel, com os comandos <PRE> cd /usr/src/linux make config make zlilo </PRE> Para maiores informações sobre compilação/instalação do kernel, leia o Kernel-HOWTO, disponível via Internet nos repositórios do LDP mencionados na seção <A HREF="Portuguese-HOWTO-1.html#SEC:ONDE">Onde encontrar a versão mais atual</A>.</LI> <LI>Dê um ``reboot'' no computador. Verifique se o suporte ao dispositivo rawkbd foi instalado com sucesso com o comando <PRE> dmesg | grep RAWKBD </PRE> Deve aparecer <PRE> RAWKBD interface for diacriticals translation enabled... </PRE> e teste o dispositivo <CODE>/dev/rawkbd</CODE> com o comando <PRE> printf "### TESTANDO ###" >> /dev/rawkbd </PRE> Veja na seção <A HREF="Portuguese-HOWTO-3.html#CONF-CONS">Configuração do console</A> como carregar um mapa com suporte à acentuação. O pacote diacrd vem com um arquivo chamada <CODE>usintl.map</CODE>, que corresponde ao nosso <CODE>us+.map</CODE>. Se seu teclado não for do tipo americano, use o <CODE>pt.map</CODE> ou <CODE>abnt-2.map</CODE>.</LI> <LI>Substitua o arquivo <CODE>/usr/X11R6/lib/X11/xkb/keycodes/xfree86</CODE> pelo arquivo fornecido junto com o diacrd.</LI> <LI>Se tudo correr bem, rode o programa <B>diacrd</B>. Depois ative o X e use o <B>xmodmap</B> para carregar o mapa <CODE>xmodmap.diacrd</CODE>.</LI> </UL> <P>Se a geração de acentos funcionar, é preciso tornar permanentes as alterações necessárias. Pode-se fazê-lo incluindo a carga do diacrd no arquivo <CODE>/etc/rc.d/rc.local</CODE> (Slackware). <BLOCKQUOTE> Se algum dos leitores tiver criado um script de ativação do diacrd para a distribuição Debian ou Red Hat, por favor envie-o para que seja incluído aqui. </BLOCKQUOTE> Mais informações sobre o diacrd podem ser encontradas no ``Dead keys Mini-HOWTO'' de Claudemir Todo Bom, disponível em <A HREF="http://linux.unicamp.br/docs/diversos/deadkeys.html">http://linux.unicamp.br/docs/diversos/deadkeys.html</A>. <P> <H3>Comparação entre as duas soluções</H3> <P>Em termos de resultados práticos, a Xlib modificada e o diacrd são equivalentes. Há porém algumas diferenças entre as duas soluções que merecem atenção. <P>Diacrd exige uma alteração no kernel do Linux para resolver um problema que o kernel já resolve, o que não deixa de parecer um tanto redundante. A dependência de um processo de usuário (o <EM>daemon</EM> kerneld) é uma desvantagem, pois se esse programa deixar de funcionar perde-se o suporte à acentuação no X. Trata-se de uma solução ainda em desenvolvimento e, segundo o conteúdo da documentação que o acompanha, o ideal seria que todo o tratamento fosse feito pelo kernel, sem depender de outro programa. <P>Até o momento da publicação deste HOWTO, o diacrd ainda não era compatível com a versão 2.2 do kernel do Linux. <P>A solução via Xlib é, pelo menos em teoria, totalmente transparente às aplicações e permite reconfiguração em tempo de execução, bastando alterar o mapa de teclado do X e as regras de composição. Já o diacrd precisa ser recompilado se quisermos trocar o tipo de teclado, mas é possível que novas versões incorporem algum recurso de reconfiguração. <P>O diacrd só funciona no teclado do próprio computador. Se quisermos usar um <EM>display</EM> remoto, seja um terminal X, seja um outro computador, não teremos suporte à acentuação. A troca da Xlib, por outro lado, enquadra-se plenamente na filosofia do X de que o servidor provê <EM>mecanismo</EM>, deixando a cargo da aplicação a definição de <EM>políticas</EM>. Exemplo da vantagem deste paradigma é poder usar as técnicas descritas na seção <A HREF="#CONF-X">Configuração do X</A> em outros sistemas operativos e com terminais X. <P>A solução via Xlib parece-me mais ``limpa'' e é minha predileta, mas, como sempre, fica a critério do usuário ou do administrador do sistema qual alternativa escolher. De qualquer modo, sempre é bom lembrar qua ambas as soluções são remendos. Considerando-se a rápida evolução que está a ocorrer no campo do software livre, com o desenvolvimendo de ambientes de trabalho como <A HREF="http://www.kde.org/">KDE</A>, <A HREF="http://www.gnome.org/">GNOME</A> e <A HREF="http://www.gnustep.org/">GNUStep</A>, podemos supor que em breve nenhum desses remendos será mais necessário. <P> <HR> <A HREF="Portuguese-HOWTO-6.html">Next</A> <A HREF="Portuguese-HOWTO-4.html">Previous</A> <A HREF="Portuguese-HOWTO.html#toc5">Contents</A> </BODY> </HTML>