Como criar um tema para o KDM (Gerenciador de login do KDE)

Esse artigo descreve a criação de um tema para o Gerenciador de login do KDE (KDM). Para exemplos que incluam capturas de tela, veja os temas instalados e os temas do site de temas.

Visão Geral de um tema

Temas para o JDM podem ser criados pela criação de um arquivo  XML que siga as especificações do arquivo $KDEDIR/share/apps/doc/kdm/greeter.dtd. Os arquivos do tema são armazenados no diretório $KDEDIR/share/apps/kdm/themes/theme_name. O diretório do tema deve possuir um arquivo chamado KdmGreeterTheme.desktop que possui um formato similar a outros arquivos .desktop e se parece com o seguinte:


[KdmGreeterTheme]
Greeter=circles.xml
Name=Circles
Description=Theme with blue circles
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=screenshot.png

Os campos Name, Description, Author e Copyright podem ser trauzido da mesma forma que seriam em qualquer outro arquivo .desktop. Todos os arquivos mencionados devem estar no próprio diretório do tema. O campo Screenshotfield aponta para um arquivo que deve ser uma captura da tela do tema em ação e tem 200×150 (é OK não ter um, mas isso não seria bom para o usuário). A entrada Greeter aponta para um arquivo XML que contém a descrição do tema.


Uma vez que o tema tenha sido completamente testado, crie um tarball que contenha o diretório da forma que seria se fosse instalado no diretório $KDEDIR/share/apps/kdm/themes directory. Esse é o formato padrão para distribuição dos temas para o KDM.

 

Descrição do arquivo XML

<!ELEMENT greeter (item | normal | style)+> <!– The root is an item of type “rect”. –>
<!ELEMENT item (fixed | box | pos | normal | active | prelight | show | text | stock | color | style | buddy)*>
<!ELEMENT fixed (item+)>
<!ELEMENT box (item+)>
<!ELEMENT pos EMPTY>
<!ELEMENT show EMPTY>
<!ELEMENT text (#PCDATA)>
<!ELEMENT normal EMPTY>
<!ELEMENT active EMPTY>
<!ELEMENT prelight EMPTY>
<!ELEMENT stock EMPTY>
<!ELEMENT color EMPTY>
<!ELEMENT style EMPTY>
<!ELEMENT buddy EMPTY>

<!–
Items with these IDs get special treatment:
xconsole | userlist |
caps-lock-warning | xauth-warning | pam-error | timed-label |
login_button | session_button | system_button
Items with these IDs might get special treatment by conversation plugins:
talker | domain-entry | user-entry | pw-entry
Items with these IDs are always hidden:
pam-message | language_button
–>

<!ATTLIST item
type (rect | entry | pixmap | label | svg | list | button) #REQUIRED
id CDATA #IMPLIED
button (true | false) #IMPLIED
background (true | false) #IMPLIED
screen (all | greeter | other) #IMPLIED
>
<!ATTLIST pos
x CDATA #IMPLIED
y CDATA #IMPLIED
anchor CDATA “nw”
width CDATA #IMPLIED
height CDATA #IMPLIED
min-width CDATA #IMPLIED
min-height CDATA #IMPLIED
max-width CDATA #IMPLIED
max-height CDATA #IMPLIED
expand (true | false) #IMPLIED
>
<!ENTITY % colorattrs ”
file CDATA #IMPLIED
element CDATA #IMPLIED
color CDATA #IMPLIED
font CDATA #IMPLIED
tint CDATA #IMPLIED
alpha CDATA #IMPLIED”>
<!ATTLIST normal
%colorattrs;
>
<!ATTLIST active
%colorattrs;
>
<!ATTLIST prelight
%colorattrs;
>
<!ATTLIST stock
type (language | session | system | disconnect | quit | halt | reboot | chooser | caps-lock-warning | timed-label | welcome-label | domain-label | username-label | password-label | login) #REQUIRED
>
<!ATTLIST box
orientation (horizontal | vertical) “horizontal”
spacing CDATA #IMPLIED
xpadding CDATA #IMPLIED
ypadding CDATA #IMPLIED
min-width CDATA #IMPLIED
min-height CDATA #IMPLIED
homogeneous (true | false) #IMPLIED
>
<!– modes: (everywhere | nowhere | console | * ) –>
<!– type: !? (config | chooser | system | halt | reboot | suspend | timed | plugin-*) –>
<!ATTLIST show
modes CDATA #IMPLIED
type CDATA #IMPLIED
min-screen-width CDATA #IMPLIED
min-screen-height CDATA #IMPLIED
>
<!ATTLIST text
xml:lang CDATA #IMPLIED
>
<!ATTLIST color
labelcolor CDATA #IMPLIED
altlabelcolor CDATA #IMPLIED
>
<!– FIXME? the full syntax for the palette specs is
((all|active|inactive|disabled)-|)<role>-(color|alpha) –>
<!ATTLIST style
font CDATA #IMPLIED
edit-font CDATA #IMPLIED
window-color CDATA #IMPLIED
window-alpha CDATA #IMPLIED
window-text-color CDATA #IMPLIED
window-text-alpha CDATA #IMPLIED
base-color CDATA #IMPLIED
base-alpha CDATA #IMPLIED
alternate-base-color CDATA #IMPLIED
alternate-base-alpha CDATA #IMPLIED
text-color CDATA #IMPLIED
text-alpha CDATA #IMPLIED
highlight-color CDATA #IMPLIED
highlight-alpha CDATA #IMPLIED
highlighted-text-color CDATA #IMPLIED
highlighted-text-alpha CDATA #IMPLIED
button-color CDATA #IMPLIED
button-alpha CDATA #IMPLIED
button-text-color CDATA #IMPLIED
button-text-alpha CDATA #IMPLIED
bright-text-color CDATA #IMPLIED
bright-text-alpha CDATA #IMPLIED
frame (true | false) #IMPLIED
>
<!ATTLIST buddy
idref IDREF #REQUIRED
>