XDM

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • A semana no BR-Linux: Enchente, 13 milhões de downloads, Fedora 10
  • Quem ganha? Benchmarks comparam: Ubuntu, Fedora, OpenSolaris e FreeBSD
  • 1 ano do cyber 100% Linux de Floripa
  • As redes P2P vão destruir o mundo?
  • 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 >> ]