Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (XDM )

Alterando o XDM

Piter PUNK (piterpk@terra.com.br)

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:

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.

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 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 meu caso, eu fiz um desenho de um sol nascendo perto de uma geleira. No canto superior direito da tela, ainda está escuro, então dimensionei e coloquei ali a minha janela de login. No Apêndice temos um arquivo de exemplo (com o meu próprio Xresources).

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

Biografia

Piter Punk (aka Roberto) é usuário de Linux desde 96, quando descobriu as maravilhas do Slackware. De 1998 a 2000, administrou uma rede universitária e desde então está traumatizado com usuários, se refugiando no desenvolvimento de software. Programa em Tcl/Tk, Fortran, Shell Script entre outras. Sua maior diversão é fudebar, tentando arrancar o sangue de seu Pentium166 e seus dois 386SX...

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


Piter PUNK (piterpk@terra.com.br)

[ << ADSL BrasilTelecom ] [ IPTables >> ]


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.