tutorial copiado de: http://www.piterpunk.hpg.ig.com.br/artigos/xdm.html em 12.04.2002 Piter Punk's HomePage - artigos 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 -;) 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