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.
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...
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 -:)
...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.
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).
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.
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.
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 -;)
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...
! $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\ Ctrl Return: 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)
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.