LG_jc.gif (3670 bytes)


SOS LINUX
Rildo Pragana

Cor e fonte em X-Windows

Como escolho tamanho, cores e outras propriedades do meu programa em X-Windows, para ele que já inicie como eu quiser?

As aplicações em X-Windows, também chamadas "clientes", são muito configuráveis. Além de chaves na linha de comando, podemos definir nos arquivos de recursos (resource files) o seu comportamento. Há arquivos de recursos genéricos, para todas as aplicações, e específicos, para classes de aplicações. Ademais, temos recursos definidos globalmente, no arquivo /usr/lib/X11/init/.Xresources ou localmente, por usuário, no seu diretório $HOME, nos arquivos .Xresources ou .Xdefaults. Os recursos por aplicação são localizados no diretório /usr/lib/X11/app-defaults com nomes capitalizados similares aos da aplicação. Por exemplo, "Netscape" e "XTerm" se referem às aplicações "netscape" e "xterm".

Estes arquivos contêm linhas da forma: "aplic[.hierarquia[.sub-hierarquia ...]].atributo: valor". Nele, "aplic" é o nome da aplicação (ou classe, capitalizada, para todas as aplicações de um mesmo tipo); a "hierarquia" define as estruturas, painéis, etc, da aplicação; o "atributo" é a propriedade (cor, geometria...) que você quer mudar. Essa hierarquia de "widgets" (objetos da interface visual) obedece a uma nomenclatura similar ao "path" de um arquivo em um diretório. Assim, podemos usar "*" para indicar "qualquer coisa".

Por exemplo, colocando XTerm*Background: cornsilk2 faremos os "backgrounds" (cores de fundo) de todos os elementos de um xterm assumirem a cor "cornsilk2". Outro exemplo: tkinfo.geometry: 80x30+10+10 fará com que a geometria (tamanho) da janela da aplicação "tkinfo" seja de dimensão 80x30 caracteres, e seja posicionada a 10 pixels do topo e da esquerda da nossa tela. Note que aí só "tkinfo" será mudada. Caso haja uma aplicação (da mesma classe) chamada "tkinfo-1", ela não será afetada por essa definição de recurso. Podemos iniciar uma aplicação com um nome diferente, fazendo por exemplo "tkinfo -name tkinfo-1". Neste caso, só os recursos definidos para a classe seriam aplicáveis.

Mais um exemplo: Xedit*quit.

label: saída mudará o rótulo (label) no botão de saída (quit) do "xedit" para o porAtuguês. Para alterar facilmente seus recursos: (1) salve o banco de dados atual com "xrdb -query> meus.resources"; (2) edite o arquivo meus.resources com o seu editor de textos predileto; (3) redefina-os com "xrdb -load meus.resources", e experimente abrir a aplicação que mudou.

Cores são introduzidas por nomes, de acordo com o banco de dados de nomes /usr/lib/X11/rgb.txt, ou através de números prefixados por "#", com as componentes RGB (red-green-blue = vermelho-verde-azul) das cores, com 1 a 4 dígitos hexadecimais por componente. Por exemplo, "#F00" refere-se a uma cor vermelha intensa (componente vermelha F, demais componentes 0), "#900000C00" é um violeta relativamente escuro (componente vermelha 900, componente azul C00).

Fontes de caracteres têm um formato um pouco mais intrigante. O melhor é você usar o "xfontsel", escolher o fonte desejado e pressionar o botão "select". Depois vá ao texto dos recursos que você está editando e efetue um "paste" (botão do meio do mouse) para inserir a definição no texto. Podemos listar os recursos usados por (apenas) uma aplicação com "appres" ou mesmo editá-los interativamente (mas não para todas as aplicações) com "editres".

______________________________________________
A cada semana iremos selecionar dúvidas sobre Linux para que o analista de sistemas Rildo Pragana responda-as nesta seção. As perguntas devem ser enviadas para

soslinux@jc.com.br


Jornal do Commercio
Recife - 23.06.99
Quarta-feira