Piter Punk's HomePage - Artigos
 
English version
Alterando o XDM

Piter PUNK

Cansado de ver sempre a mesma cara do XDM? Não gosta dos seus similares como o KDM e GDM? Veja neste artigo como criar telas de login simpáticas usando apenas o XDM e seus arquivos de configuração.

1. Introdução

A maioria dos sistemas UNIX dispõe de um login gráfico, disponibilizado pelo X. Por padrão, este sistema de login é garantido pelo XDM (X Display Manager). Praticamente qualquer sistema com o X instalado possuirá uma cópia do XDM.

Porém, a aparência padrão do XDM não é das mais agradáveis, e a sua configuração pode ser considerada árdua. Assim, muitos usuários preferem usar o KDM ou o GDM que são configuráveis através de utilitários gráficos.

Para quem realmente prefere o jeitão do XDM porém já está irritado com a sua aparência, escrevemos esse artigo...

2. Começando pelos fundos...

O mais fácil de alterar é o fundo da tela... Para isso temos duas opções, colocar uma cor sólida como sendo o fundo da tela, ou utilizar uma figura como fundo. Para realizar tanto um como outro, é necessário editar o arquivo: /etc/X11/xdm/Xsetup_0, por default, o conteúdo deste arquivo é:

#!/bin/sh # $XConsortium: Xsetup_0,v 1.3 93/09/28 14:30:31 gildea Exp $
xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail

A linha que começa com o # é uma linha de comentário. Já a segunda, apenas coloca o programa xconsole na tela. Eu particularmente acho que manter o xconsole fica muito feio em uma tela de apresentação, e prefiro retirá-lo. Para isso, basta comentar a linha que o convoca.

Em seguida, vamos acrescentar um pequeno trecho de código para fazer com que o backspace funcione corretamente durante o login. Algumas distribuições já corrigem este erro, se o seu Xsetup_0 já possuir estas linhas, mantenha como está:

sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap 
if [ -f $sysmodmap ]; then 
    xmodmap $sysmodmap 
fi

Agora, vamos acrescentar a linha com a mudança do fundo da tela, propriamente dito. Para colocar uma cor chapada, coloque:

xsetroot -solid cor

Onde cor é a cor que você deseja colocar como fundo. Em conjunto com outros arquivos de configuração, é possível deixar toda a tela de uma única cor, exceto as palavras login e password, fica um belo efeito... Para colocar uma imagem, eu utilizo:

xv -viewonly -rmode 5 -rbg black -root -quit -maxpect imagem

Esta linha gigante diz: Ative o XV (xv) apenas para visualização (-viewonly), coloque a imagem no centro da tela (-rmode 5) e mantenha o fundo preto (-rbg black) , a imagem servirá como tela de fundo (-root) e após colocá-la na tela, o XV irá se auto desligar (-quit). A imagem também será ampliada até ocupar toda a tela, porém sem deformar a figura (-maxpect).

O XV é um programa com dezenas de opções de linhas de comando. Mas geralmente serão estas as utilizadas para manter uma tela de fundo simpática -:)

3. A caixa de Pandora...

...ou a caixa de Login. Ela é amplamente configurável, para você ter uma idéia, é possível:

  • Alterar a cor, tamanho e tipo da fonte;
  • Modificar os textos apresentados;
  • Trocar a cor de fundo e da borda da caixa e;
  • Mudar a posição e tamanho da caixa.

Ou seja, é possível alterar praticamente tudo. Para realizar esses milagres, o arquivo alterado é o /etc/X11/xdm/Xresources a sintaxe é a mesma dos outros arquivos de recursos. Para quem não está acostumado, basta saber que o ! significa comentário. É impostante lembrar que para o Xresources, "Red" é diferente de "Red ", por isso, muito cuidado com os espaços depois de alguma opção (já perdi algumas noites com isso).

3.1. Tamanho e posição

Para alterar o tamanho da caixa de texto, basta utilizar a seguinte sintaxe:

xlogin.Login.width: tamanho
xlogin.Login.height: tamanho

O primeiro altera a largura e o segundo a altura da caixa. O parâmetro tamanho é dado em pontos. Se o seu Xresources já apresenta essas linhas, apenas altere os tamanhos para os que achar convenientes.

A posição da janela também é alterada por apenas dois parâmetros, um para a posição x (horizontal) e outro para a y (vertical), ambos contados em pixels a partir do canto superior esquerdo da tela.

xlogin.Login.x: número
xlogin.Login.y: número

Com o que aprendemos até agora, já é possível colocar um desenho como fundo da tela e a janela em um local mais apropriado, onde não incomode o desenho. Poderíamos colocar um logotipo no centro da tela e a janela um pouco mais abaixo (ou mais acima).

3.2. Textos e fontes

Os textos do XDM em geral são altamente explicativos, Login para o login e Password para o password; mas existem horas em que outras combinações seriam mais interessantes. Em uma escola poderíamos trocar o Login por Aluno e o Password por Senha. Editar isto também é fácil:

xlogin.Login.namePrompt: texto_para_o_login
xlogin.Login.passwdPrompt: texto_para_o_password

É necessário deixar um ou mais espaços em branco após o texto, para isso coloque uma barra invertida e após ela um espaço em branco.

Continuando o nosso caso da escola, ao invés de indicar no XDM o nome da máquina em que o aluno vai logar, poderíamos colocar o nome da escola, assim:

xlogin*greeting: Título

E alterar a mensagem de erro, ao invés do típico Login Incorrect algo como Aluno ou Senha não conferem ou qualquer outra mensagem que seja mais apropriada. Para alterar este texto, use:

xlogin.Login.fail: mensagem_quando_falha

Além destas várias configurações. podemos alterar os tipos e tamanhos de fonte para todas estas mensagens. Para selecionar as fontes apropriada, use o xfontsel, e para simplesmente listá-las tente o xlsfonts.

xlogin.Login.font: fonte_padrão_para_os_textos
xlogin.Login.greetFont: fonte_para_o_Título
xlogin.Login.promptFont: fonte_para_o_login_e_password
xlogin.Login.failFont: fonte_para_quando_falha

Com esta série de comandos, o título pode utilizar letras maiores e mais rebuscadas, enquanto o restante aparece com fontes mais legíveis, ou qualquer combinação que julgar conveniente. Colocando uma string vazia no lugar do texto, é possível deixar um campo vazio. O que pode ser útil para o título quando já se possui um título na imagem de fundo.

3.3. Cores, cores e mais cores...

Agora iremos alterar as cores da janela de login. Com os comandos de cor podemos dar um efeito ``transparente'' na janela, ou destacar uma determinada parte do texto.

Para o tal efeito ``transparente'' basta eliminar a borda da janela e deixá-la com a mesma cor do fundo da tela, os textos ficarão flutuando, soltos no vídeo:

*Background: cor_do_fundo
xlogin*borderWidth: espessura_da_borda

Se o necessário for destacar determinada parte do texto, não existem maiores problemas, já que as cores podem ser definidas separadamente para cada trecho do texto...

*Foreground: cor_do_texto
xlogin*greetColor: cor_do_título
xlogin*promptColor: cor_do_login_e_password
xlogin*failColor: cor_quando_falha

As cores podem ser dadas tanto pelos seus nomes (é possível conseguir uma lista pelo comando showrgb) quanto pelos seus valores rgb (Red-Green-Blue), por exemplo: #FFFFFF ou white para a cor branca.

4. Logotipo, sombras, etc..

Se você usa o XFree86 4.x.x, deve ter percebido algumas mudanças no xdm, agora você pode fazer um efeito "3D", além de poder colocar um logotipo na sua tela de login.

Colocar o logo na caixa de login é super simples. Basta colocar:

xlogin*logoFileName: /caminho/para/a/figura.xpm
xlogin*logoPadding: 10

Na primeira linha você apenas indica qual vai ser a figura, na segunda você coloca (em pixels) a distância das bordas da figura até a borda da caixa de login.

As sombras sao conseguidas com outras configuracoes... (um pouquinho mais complicadas). As bordas dos frames você seta com:

xlogin*frameWidth: 2

e as bordas internas com o:

xlogin*innerFramesWidth: 2

Alem destes settings, você tem que selecionar a cor da área clara e escura da borda (ou seja, o brilho e a sombra). Para setar isso você usa os:

xlogin*hiColor: #9A9A9A 
xlogin*shdColor: #454545

Obviamente você pode escolher os números que quiser para as bordas e as cores que quiser para os reflexos e para a sombra.

5. Idéias...

Faça algum desenho que possua um trecho razoável com uma única cor, e posicione a sua janela nesse trecho com o efeito de transparência, as letras do texto estarão flutuando no meio do desenho, fica muito bonito.

Outra boa, é colocar para rodar como fundo de tela, ao invés de um desenho, um screensaver como o xflame. Ocupa um bocado de processamento, mas se você prefere o efeito estético, coloque logo abaixo do xsetroot (no arquivo Xsetup_0):

xflame -root &

Pode ser utilizado outro screensaver, eu apenas acho esse mais legal... lembre-se sempre de por o & no fim, para que o processo rode em background.

No apêndice está o meu antigo Xresources. No atual eu coloquei o desenho da LinuxFox e fiz a caixa de texto ficar "transparente". Eu achei que ficou muito bom, mas você pode olhar este screenshot e tirar as suas proprias conclusoes.

Espero que esse artigo tenha ajudado um pouco (e que lhe dê material para brincar bastante e escrever init 4 algumas dezenas de vezes -;)

Dúvidas, correções, sugestões e elogios, mande e-mail para

Apêndice A: Xresources

! $XConsortium: Xresources /main/8 1996/11/11 09:24:46 swick $ 
! Xresources: 07/Jan/2000 by Piter Punk
xlogin*login.translations: #override\ 
      CtrlR: abort-display()\n\ 
      F1: set-session-argument(failsafe) finish-field()\n\ 
      CtrlReturn: set-session-argument(failsafe) finish-field()\n\ 
      Return: set-session-argument() finish-field() 
xlogin.Login.x: 0 
xlogin.Login.y: 0 
xlogin.Login.width: 308 
xlogin.Login.namePrompt: Username:\ 
xlogin.Login.passwdPrompt: Password:\ 
xlogin*greetFont: -*-lucidatypewriter-*-r-*-*-*-190-100-100-*-*-iso8859-1 
xlogin*promptFont: -*-lucidatypewriter-*-r-*-*-*-140-100-100-*-*-iso8859-1 
xlogin*borderWidth: 0 
xlogin*greeting: CLIENTHOST 
#ifdef COLOR 
xlogin*greetColor: SteelBlue 
xlogin*promptColor: SteelBlue 
xlogin*failColor: red 
*Foreground: grey65 
*Background: Black 
#else
*Foreground: #ffffff 
*Background: #000000 
#endif

Links Principal Artigos Piter Punk Dicas Programas
 
Powered by Slackware Linux - Written in VIm (the best one!) Last Update: 30 Oct 2004