Revista Do Linux
 
  
  
 

  Capa
  Evento
  Serviço Público
  Corporativo
  Tutorial ECF Remota
  Tutorial Xdm
  Software
  Entrevista
  Estudo de Caso
  Distro
assinantes
 

Alterando o XDM

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

A maioria dos sistemas UNIX dispõe de um gerenciador gráfico de login, disponibilizado pelo X. Por padrão, este sistema de login é fornecido pelo XDM (X Display Manager). Praticamente qualquer sistema com o X instalado tem 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 este artigo...

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 fundo, ou utilizar uma figura. Nos dois casos, é necessário editar o arquivo: /etc/X11/xdm/Xsetup_0, cujo conteúdo, por padrão, é:

#!/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 # é uma linha de comentário. Já a segunda, apenas coloca o programa xconsole na tela. Particularmente, acho que o xconsole fica muito feio em uma tela de apresentação, e prefiro retirá-lo. Para isto, basta comentar a linha.

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á corrigiram este erro, se o seu Xsetup_0 já tem estas linhas, deixe 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 uma cor sólida, coloque:

xsetroot -solid cor

Onde cor é o nome, em inglês, da cor que você deseja colocar como fundo, dentre as listadas no arquivo /usr/X11R6/lib/X11/rgb.txt. Em caso de dúvidas, ao ver nomes como FloralWhite e Gainsboro, o utilitário gcolorsel, parte do Gnome, pode ser utilizado para visualizar todas as cores disponíveis. Em conjunto com outros arquivos de configuração, é possível deixar toda a tela de uma única cor, exceto as palavras login e password, o que resulta em um belo efeito. Para colocar uma imagem como fundo, 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 (-rgb black), a imagem servirá como tela de fundo (-root) e após colocá-la na tela, o XV se autodesligará (-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.

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 o texto mostrado;
  • Trocar as cores de fundo e borda da caixa;
  • 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. É importante lembrar que para o Xresources, "Red" é diferente de ~SRed ~S, portanto, muito cuidado com os espaços depois de alguma opção (já perdi algumas noites com isso).

    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 seu Xresources já apresenta essas linhas, apenas altere os tamanhos para o que achar conveniente.

    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. Podemos colocar um logotipo no centro da tela e a janela um pouco mais abaixo (ou mais acima).

    Textos e fontes

    Os textos padrão do XDM em geral são auto-explicativos: Login para o nome do usuário e Password para a senha; mas há horas em que outras combinações seriam mais interessantes. Em uma escola, poderíamos trocar Login por Aluno e 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 isto coloque uma barra invertida e, em seguida a ela, um espaço em branco.

    Continuando o nosso caso da escola, em vez de indicar no XDM o nome da máquina em que o aluno vai fazer logon, poderíamos colocar o nome da escola, assim:

    xlogin*greeting: Título
    

    E alterar a mensagem de erro. Em vez 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 apropriadas, 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.

    Cores, cores e mais cores...

    Vamos agora 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 tal efeito, basta eliminar a borda da janela e deixá-la com a mesma cor do fundo da tela, e os textos ficarão ~Sflutuando~T, soltos no vídeo:

    *Background: cor_do_fundo
    xlogin*borderWidth: espessura_da_borda
    

    Se for necessário destacar determinada parte do texto, não há problema, 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 quanto pelos seus valores rgb (Red-Green-Blue). Por exemplo: #FFFFFF ou white para a cor branca.

    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 são conseguidas com outras configurações, um pouquinho mais complexas. As bordas dos frames são ajustadas com:

    xlogin*frameWidth: 2
    

    e as bordas internas, com:

    xlogin*innerFramesWidth: 2
    

    Além destes settings, você tem que selecionar a cor da área clara e escura da borda (ou seja, o brilho e a sombra). Para configurar isto, 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.

    Idéias...

    Faça algum desenho que tenha um trecho razoável com uma única cor e posicione a sua janela nesse trecho com o efeito de falsa transparência. O texto ficará "flutuando" no meio do desenho. Fica muito bonito.

    Outra boa idéia, é colocar para rodar como fundo de tela, em vez 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 comando xsetroot (no arquivo Xsetup_0):

    xflame -root &
    

    Você pode utilizar qualquer outro screensaver de sua preferência. Lembre-se sempre de pôr o & no fim do comando, para que o processo rode em background. No Quadro 1 há um exemplo de um arquivo XResources para você começar a brincar. Espero que este artigo tenha ajudado um pouco (e que lhe dê material para brincar bastante e escrever init 4 algumas dezenas de vezes).

    Quadro 1

    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
    

    DICA

    Colocando botões para desligar e reiniciar a máquina no XDM

    Quem usa o XDM provavelmente está cansado de digitar CTRL+ALT+F1 e depois CTRL+ALT+DEL para poder desligar o computador. Procurando por aí, encontrei no site de Frédéric Péters a dica a seguir, que resolve o problema.

    No arquivo /etc/X11/xdm/Xsetup_0, inclua as seguintes linhas:

    /usr/bin/wish << EOF &
    wm geometry . -0+0
    button .halt -text Halt -fg black -bg gray -command {
            exec shutdown -h now
    }
    button .reboot -text Reboot -fg black -bg gray -command {
            exec shutdown -r now
    }
    pack .reboot .halt -side left
    EOF
    echo $! > /var/run/xdmbutton.pid
    
    Depois, coloque no arquivo /etc/X11/xdm/GiveConsole (no Slackware, ou no arquivo /etc/X11/xdm/Xstartup_0 em algumas outras distros) as seguintes linhas, antes do comando chown $USER /dev/console:
    
    if test -r /var/run/xdmbutton.pid ; then
            kill 'cat /var/run/xdmbutton.pid'
    fi
    

    Agora você e seus usuários já podem desligar o computador com um clique do mouse. As cores dos botões são alteradas com os parâmetros -bg (cor de fundo) e -fg (cor de frente) e sua posição nos parâmetros -0+0 da linha wm geometry.


    Piter Punk - piterpk@terra.com.br

  • A Revista do Linux é editada pela Conectiva S/A
    Todos os Direitos Reservados.

    Política de Privacidade
    Anuncie na Revista do Linux