Está en la página 1de 13

Disear Metacity Themes -Diseo de un tema Metacity es una tarea relativamente simple, aunque modificando

para satisfacer sus necesidades puede resultar algo lenta. Un tema Metacity se basa en
un formato XML definido y, en funcin de un tema dado, una serie de imgenes
[generalmente Portable Network Graphic, PNG, tipo de archivo].

Introduccin -El primer paso que tendr que hacer es crear un directorio en cualquiera de los
siguientes lugares de inters -$ PREFIX / share / themes / [nombre de tu tema] / metacity-1 /
$ HOME / .themes / [nombre de tu tema] / metacity-1 /
de acuerdo con el nombre de tu tema. Aunque Metacity detectar temas en cualquier
ubicacin, tal vez sea prudente si mantiene el tema dentro de su directorio, mientras
usted escribe y depurarlo.
El siguiente paso para crear un tema Metacity es editando un archivo dentro de ese
directorio llamado "metacity-theme-1.xml. Este es el archivo que contiene la
descripcin de XML para el tema que tiene la descripcin de la DTD siguientes. Al crear
un nuevo tema Metacity, es til para tener un tema existente, copiar toda la descripcin
XML y luego modificarla, en lugar de crear un tema completamente nuevo desde cero.
Las primeras lneas del formato son -<?xml version="1.0"?>
<metacity_theme>
<info>
<name>Atlanta</name>
<author>Nombre del autor</author>
<copyright>Tipo de Licencia</copyright>
<date>Fecha</date>
<description>Una descripcion del tema en cuestion</description>
</info>
<!-- Este lugar es donde puedes especificar tu tema! -->
</metacity_theme>

Tema Bsico -Antes de entrar en una explicacin detallada de cada parte, vamos a dar una visin
general de las medidas adoptadas.

Tipos de ventanas compatibles


Existen 6 tipos de ventanas Metacity especficas que reconoce -normal
dialog
modal_dialog

un alto nivel normal de la ventana


de una ventana de dilogo
de una ventana de dilogo que tiene es decir, estado
modal. intervencin requerida por el usuario antes de que puedan
interactuar con su ventana padre

menu
utility
Border

pinnable es decir, una ventana de men. Menu comun


persistentes, es decir una pequea ventana de la utilidad. paleta o
caja de herramientas.
una ventana que no debe presentar decoraciones suelen
decir. ventana a pantalla completa

Estilos
Para cada tipo de ventana, es necesario asignar un "conjunto de estilo '[o decoracin de
ventanas] en l. Cada "conjunto de estilo 'es una composicin de varios estilos para
diferentes estados de marco. Usted tendr que especificar cmo cada uno de estos
estados marco debera mirar en su estilo. Estados de fotogramas se determina por la
siguiente -Si la ventana est centrada o no se centra
Si la ventana est maximizada o de sombra [o ambos]
Si la ventana puede ser vertical, horizontal, vertical y horizontalmente, cambiar el tamao
Cada estado "marco" se asigna a un "estilo de marco. Un estilo de marco se divide en dos
partes diferentes - marco de "piezas" y la ventana de 'botones'. Esta separacin hace que
sea ms fcil para construir un tema Metacity.

Marco piezas
Si se omite alguna de las piezas, entonces nada se establecer para esa pieza. Metacity
reconoce las piezas del marco siguiendo -entire_background

todo el marco de la ventana que se dibuja primero

titlebar

rea por encima de la ventana de la aplicacin. Barra


de titulos..

titlebar_middle

mbito de la barra de ttulo no se considera una "


ventaja" pieza de

left_titlebar_edge

rea a la izquierda de la barra de ttulo

right_titlebar_edge

rea a la derecha de la barra de ttulo

top_titlebar_edge

rea a la parte superior de la barra de ttulo

bottom_titlebar_edge

rea a la parte inferior de la barra de ttulo

title

rea que contiene el ttulo

left_edge

el borde izquierdo del marco

right_edge
bottom_edge
overlay

el borde derecho del marco


el borde inferior del marco
mismo que entire_background, slo que se dibuja por
ltima vez

Botones de la ventana
Metacity reconoce los botones de la siguiente ventana -close
maximize
minimize

Botn Cerrar ventana


Maximizar el botn de la ventana
Botn Minimizar la ventana

menu

Botn de Men

y para los siguientes botones


left_left_background
left_middle_background
left_right_background
right_left_background
right_middle_background
right_right_background

Especifica
Especifica
Especifica
Especifica
Especifica
Especifica

el
el
el
el
el
el

fondo
fondo
fondo
fondo
fondo
fondo

del botn
del botn
del botn
del botn
del botn
del botn

de
de
de
de
de
de

la
la
la
la
la
la

1
2
3
1
2
3

a
a
a
a
a
a

la
la
la
la
la
la

izquierda
izquierda
izquierda
derecha
derecha
derecha

Botones metacity.
Para cada botn en la ventana, se debe especificar la forma en que deberan aparecer
en un determinado nmero de estados del botn. Metacity reconoce los siguientes
estados del botn
normal
Cmo el botn debe aparecer normalmente por un
estado dado el marco?
pressed
Cmo el botn debera aparecer al 'click' [con un
ratn]?
prelight
Cmo el botn debe aparecer cuando se obtiene el
foco?

Los mens de ventana


El ltimo paso para crear un tema es mediante la especificacin de los iconos de men.
Estos aparecen en el men de la ventana para las siguientes entradas
close
maximize
minimize
unmaximize

Icono Cerrar ventana


Maximizar el icono de la ventana
Icono Minimizar la ventana
Icono de la ventana Unmaximize

y para los siguientes Estados dependiendo de la ventana....


normal
Cmo el icono de men que
aparecen normalmente en los mens de?
prelight
Cmo el icono de men que
aparece cuando la entrada del men se focaliza?
active
Cmo el icono de men que
aparece cuando la entrada del
men est activo [es
decir. Comprobar]?
selected
Cmo el icono de men que
aparece cuando se selecciona la
entrada de men?
insensitive
Cmo el icono de men que
aparece cuando la entrada de
men est desactivada [es decir. Gris]?

Probando Su tema
Al crear un tema Metacity, es aconsejable usar una aplicacin especialmente diseada
para los temas de las pruebas, metacity-theme-viewer Para utilizar esta aplicacin, se
limitan a brindar en el tema que desea cargar como un argumento. El tema que desea
cargar se analiza, y si hay errores, se producir la salida cualquier error a la lnea de
comandos. Usted debe corregir cualquier error antes de que un tema se carga
correctamente.
Esta aplicacin slo es realmente til cuando se disea el estilo de la decoracin de las
ventanas, ya que no ser capaz de interactuar con los botones o los mens de la
ventana.
Para cambiar de tema nuevo, usted necesita utilizar gconftool-2 o el uso de la interfaz
de usuario en las Preferencias del escritorio> Tema, seleccione la pestaa "Borde de
ventana Theme '. Si se utiliza gconftool2-, usted necesita utilizar el comando siguiente
-gconftool-2 --type=string --set /apps/metacity/general/theme [theme_name]

El interior de DeepDown
Marco Geometra
Lo primero que tendr que crear es la "geometra del cuadro. El nombre de la geometra
del cuadro se hace referencia ms adelante por un estilo determinado "marco".
<frame_geometry name="my_frame_geometry">
<!-- Aqu es donde tenemos que empezar a especificar la geometra de su marco -->
</frame_geometry>
El siguiente diagrama muestra las diferentes anchuras y alturas que puede modificar la
geometra en un marco determinado

La geometra del cuadro tiene una serie de atributos opcionales que puede proporcionar
-has_title
Determina si la altura del texto del ttulo debe ser
incluido en la calculadora de altura. Este defecto a true
si no se especifica.
title_scale
Utilizacin de marcado Pango - xx-small, x-small, small,
medium, large, x-large y XX-grande. El valor
predeterminado para recoger a su fuente de sobremesa
si no se especifica.
rounded_top_left
Determina si la esquina superior izquierda de la ventana
debe ser redondeado. Este defecto a false si no se
especifica.
rounded_top_right
Determina si la esquina superior derecha de la ventana
debe ser redondeado. Este defecto a false si no se
especifica.
rounded_bottom_left
Determina si la esquina inferior izquierda de la ventana
debe ser redondeado. Este defecto a false si no se
especifica.

rounded_bottom_right

Determina si la esquina inferior derecha de la ventana


debe ser redondeado. Este defecto a false si no se
especifica.
<frame_geometry name="normal_geometry">
<distance name="left_width" value="6"/>
<distance name="right_width" value="6"/>
<distance name="bottom_height" value="7"/>
<distance name="left_titlebar_edge" value="6"/>
<distance name="right_titlebar_edge" value="6"/>
<distance name="button_width" value="17"/>
<distance name="button_height" value="17"/>
<distance name="title_vertical_pad" value="4"/>
<border name="title_border" left="3" right="12" top="4" bottom="3"/>
<border name="button_border" left="0" right="0" top="1" bottom="1"/>
</frame_geometry>
Al especificar la geometra del cuadro, es posible utilizar la herencia. Esto simplemente
sobrescribe los valores que establecen que se heredan de los padres.
<frame_geometry name="borderless_geometry" rounded_top_left="true"
rounded_top_right="true" parent="normal_geometry">
<distance name="left_width" value="0"/>
<distance name="right_width" value="0"/>
<distance name="bottom_height" value="0"/>
<distance name="left_titlebar_edge" value="0"/>
<distance name="right_titlebar_edge" value="0"/>
</frame_geometry>
En lugar de especificar anchuras y alturas de botn, usted puede especificar una
relacin de aspecto en su lugar.
<aspect_ratio name="button" value="1.0"/>

Operaciones de dibujo
'operaciones de dibujo son el corazn de diseo de un tema Metacity. Con el fin de
establecer con xito una parte de la trama, tendr que especificar una operacin de
dibujo para que pieza de marco.
<draw_ops name="my_drawing_operation">
<! - Aqu es donde tenemos que empezar a especificar su operacin de dibujo ->
</ draw_ops>
Operadores
Las operaciones de dibujo se presentaron declararon en general, pero tambin se puede
colocar en lnea [vase el ejemplo de abajo]. La siguiente lista de los operadores estn
permitidas dentro de una operacin de dibujo -Operador

Significado

Ejemplo

+
Ms
-Menos
*
Multiplicar
/
Dividir
%
Mdulo
max
Mximo
min
Mnimo
()
Parntesis
Cabe sealar que las normas precidence normal aplicable a

2+3
5-4
3*2
10 / 2
34% 3
4 `` max 5
7 `min` 3
(5 * 3) + 5
todos los operadores.

Constantes
Dentro de las operaciones de dibujo, es posible utilizar las variables predefinidas o
constantes. Constantes han de tener visin declarada y debe comenzar con una letra
mayscula.
<constant name="MyConstant" value="3"/>
La siguiente es una lista de variables predefinidas que pueden ser utilizados
width
height
object_width
object_height
left_width
right_width
top_height
bottom_height
mini_icon_width
mini_icon_height
icon_width
icon_height
title_width
title_height

Anchura de la zona objetivo


Altura de la zona objetivo
Anchura natural del objeto que est dibujado
Natural altura del objeto est elaborando
Distancia desde la izquierda del marco de la ventana del cliente de
Distancia desde la derecha del marco de la ventana del cliente
Distancia desde la parte superior del marco de ventana del cliente
Distancia desde la parte inferior del marco de la ventana del cliente
Ancho de la mini-icono para la ventana
Altura de la mini-icono para la ventana
Ancho de la gran icono
Altura de los iconos grandes
Ancho de ttulos de texto
Altura del ttulo del texto

Operaciones
Metacity admite las siguientes operaciones en cualquier dibujo dado operacin -line

Dibuja una lnea con origen (x1, y1) y destino (x2, y2) y
el color dado. Los colores pueden ser un nombre de color como
"azul", un nmero hexadecimal como "# FF0099", o un color de un
tema GTK dado como "gtk: base [NORMAL]" [Vase algunos ejemplos
ms abajo]. Toma anchura atributos
adicionales, dash_on_lengthy dash_off_length, que son "0" por
defecto.
<line color="#00FF00" x1="3" y1="4" x2="0" y2="height" dash_off_length="2"
dash_on_length="3"/>

rectangle

Dibuja un rectngulo con origen (x, y) y teniendo en cuenta la


anchura y la altura.Se necesitan atributos opcionales
para cubrir, que es "falso" por defecto.
<rectangle color="blend/gtk:fg[NORMAL]/gtk:bg[NORMAL] x="0" y="0" width="width"
height="height" filled="true"/>
arc

Dibuja un arco con origen (x, y) y dada la anchura, altura,


start_angle yextent_angle. Se necesitan atributos opcionales
para cubrir, que es "falso" por defecto.
<arc color="yellow" x="0" y="0" width="width-1" height="height-1" start_angle="30"
extent_angle="180"/>
tint

APLICA un tinte de origen (x, y) y dada la anchura, altura, color y


alfa.
<tint color="orange" alpha="0.2" x="0" y="0" width="width - mini_icon_width"
height="height"/>
gradient

Dibuja un gradiente de origen (x, y) y dada la anchura, altura,


tipo [ya sea vertical, horizontal o diagonal] y cualquier nmero de
elementos de color.
<gradient type="vertical" x="10" y="10" width="width - title_width" height="height / 4">
<color value="blue">
<color value="gtk:fg[SELECTED]>
<color value="blend/gtk:light[SELECTED]/gtk:dark[ACTIVE]">
</gradient>
image

Mapas de una imagen para el elemento de origen (x, y) y dado el


ancho, la altura y el nombre de archivo. Se necesita argumentos
opcionales alfa y colores, que son "0" y no hay color por defecto.
<image filename="my_image.png" x="0" y="0" width="width" height="height" alpha="0.5"
colorize="#FF3399"/>
gtk_arrow

Dibuja una flecha con origen (x, y) y teniendo en cuenta la anchura,


altura, estado de GTK, sombra [no, dentro, fuera, etched_in y
etched_out] y la direccin [arriba, abajo, izquierda o derecha]. Toma
argumento opcional llena, que es "falso" por defecto.
<gtk_arrow state="normal" x="2" y="2" width="width-4" height="height" shadow="in"
arrow="up" filled="true"/>
gtk_box

Dibuja un cuadro de origen (x, y) y dada la anchura, altura, estado


de GTK y lasombra.
<gtk_box state="normal" x="2" y="2" width="width - 4" height="height" shadow="out"/>
gtk_vline

Dibuja una lnea vertical con origen (x, y1) y destino (x, y2) y
el estado de GTK.
<gtk_vline state="normal" x="0" y1="0" y2="height"/>
icon

Llama la ventana con el icono de origen (x, y) y teniendo en


cuenta la anchura y la altura. Toma alfa argumento opcional, que es
"0" por defecto.
<icon x="10" y="30" width="width / 3" height="height / 3" alpha="0.3"/>

title

Seala el texto con el ttulo de la ventana de origen (x, y) y


el color dado.
<title x="10" y="30" color="gtk:text[NORMAL]"/>
clip

Clips de una zona determinada, con origen (x, y) y teniendo en


cuenta la anchuray la altura.
<clip x="5" y="2" width="width - 10" height="height SpacerHeight"/>
include

Incluir otras operaciones de dibujo con el nombre dado. Se necesita


argumentos opcionales (x, y), anchura y altura, con valores por
defecto FIXME.
<include name="other_drawing_operations"/>
tile

Otro dibujo Azulejos operaciones de lista con el nombre,


tile_width y tile_height.Se necesita argumentos opcionales (x, y),
anchura, altura, tile_xoffset ytile_yoffset con impagos FIXME.
<tile name="other_drawing_operations" tile_width="10" tile_height="10"/>

Estilo del marco


La geometra del cuadro Cuando se crea un "estilo de marco ', que se ata en las diversas
diferentes piezas marco' y 'botones de la ventana" a un "especfico. Por lo general, la
necesidad de crear un estilo para los estados de ventana normal, al mximo, a
la sombra, maximized_and_shaded y en funcin de si la ventana est en foco o no.
En primer lugar, crear una plantilla que contendr toda la informacin necesaria para
establecer un estilo de marco dado.
<frame_style name="my_frame_style" geometry="my_frame_geometry">
<! - Aqu es donde tenemos que empezar a precisar su estilo de marco ->
</ frame_style>
La herencia es tambin permiti en un estilo de marco determinado. Cualquier cosa
puede ser re-especificado para reemplazar el estilo de los padres.
<frame_style name="my_child_frame_style" parent="my_frame_style"
geometry="my_frame_geometry">
</ frame_style>
Marco piezas
Para dibujar las partes del marco, usted tendr que proporcionar una operacin de
dibujo para cada pieza del marco. Si se omite una parte, entonces nada se extraern de
la parte de la estructura.
<piece position="entire_background" draw_ops="my_drawing_operation"/>
Alternativamente, como se mencion anteriormente, usted puede proporcionar una
operacin de lnea de dibujo.

<piece position="left_edge">
<draw_ops>
<rectangle color="#FF0000" x0="0" y0="0" x1="width" y1="height" filled="true"/>
</draw_ops>
</piece>
Los siguientes diagramas muestran las diferentes piezas que se pueden estilo en un
marco determinado

Botones de la ventana
Como se mencion anteriormente, es necesario especificar un conjunto mnimo de
botones de la ventana para un tema dado. Los mtodos de dibujo debe ser
proporcionado para el cierre, maximizar, minimizar y botones del men definido para
cada uno de los dos estados - normal y presionado. PRELIGHT Si no se especifica, lo
normal ser utilizada para ese estado.
<button function="close" state="normal" draw_ops="my_drawing_operation"/>

Junto con la especificacin de los botones de la ventana, puede especificar cmo se


puede dibujar una parte del botn en funcin de la posicin en el marco de la
ventana. Si todos los botones tienen el mismo fondo, slo tiene que especificar las
operaciones de dibujo para left_middle_background y right_middle_background.
<button function="left_middle_background" state="pressed"
draw_ops="my_background_drawing_operation"/>
Poner toda esta informacin en un estilo de marco nico "podra parecerse a la siguiente
-<frame_style name="my_frame_style" geometry="my_frame_geometry">
<! - En primer lugar, mostrar el ttulo ->
<piece position="title" draw_ops="title_normal"/>
<! - Vamos a dar algunos de los bordes belleza ->
<piece position="left_edge" draw_ops="draw_left_edge"/>
<piece position="right_edge" draw_ops="draw_right_edge"/>
<piece position="bottom_edge" draw_ops="draw_bottom_edge"/>
<! - Tenemos que especificar las posiciones de los botones ahora ->
<button function="left_middle_background" state="pressed"
draw_ops="background_button"/>
<button function="right_middle_background" state="pressed"
draw_ops="background_button"/>
<! - Tenemos que especificar los botones de ahora ->
<button function="close" state="normal" draw_ops="close_button"/>
<button function="close" state="pressed" draw_ops="minimize_button"/>
<button function="minimize" state="normal" draw_ops="minimize_button"/>
<button function="minimize" state="pressed"
draw_ops="minimize_button_pressed"/>
<button function="maximize" state="normal" draw_ops="maximize_button"/>
<button function="maximize" state="pressed"
draw_ops="maximize_button_pressed"/>
<button function="menu" state="normal" draw_ops="menu_button"/>
<button function="menu" state="pressed" draw_ops="menu_button_pressed"/>
</ frame_style>

Iconos de men
En los mens de la ventana se debe especificar los iconos para ver las entradas del men
Cerrar, Maximizar, Minimizar y UnMaximize. Es suficiente para especificar las
operaciones de dibujo para el estado normal solamente. Si lo desea, puede especificar
operaciones de dibujo para los otros estados, como se mencion anteriormente.
<window_icon function="close" state="normal" draw_ops="menu_close_icon"/>
<window_icon function="maximize" state="normal"
draw_ops="menu_maximize_icon"/>
<window_icon function="minimize" state="normal"

draw_ops="menu_minimize_icon"/>
<window_icon function="unmaximize" state="normal"
draw_ops="menu_unmaximize_icon"/>

Marco Conjunto de estilos


Una vez que tenemos varios estilos de marco que necesitamos para asignarlos a la
ventana de diversos estados. Hacemos esto mediante la creacin de un conjunto marco
de estilo". El atributo de nombre se hace referencia ms adelante dado por AA 'tipo de
ventana.
<frame_style_set name="my_style_set">
<frame focus="yes" state="normal" resize="both" style="my_normal_focused_style"/>
<frame focus="no" state="normal" resize="both" style="my_normal_unfocused_style"/>
<frame focus="yes" state="maximized" style="my_maximized_focused_style"/>
<frame focus="no" state="maximized" style="my_maximized_unfocused_style"/>
<frame focus="yes" state="shaded" style="my_shaded_focused_style"/>
<frame focus="no" state="shaded" style="my_shaded_unfocused_style"/>
<frame focus="yes" state="maximized_and_shaded"
style="my_maximized_shaded_focused_style"/>
<frame focus="no" state="maximized_and_shaded"
style="my_maximized_shaded_unfocused_style"/>
</ frame_style_set>
Como se puede ver arriba, usted debe proporcionar un marco para cada una de la
ventana de los estados, con foco de la ventana s y no.Las referencias a su atributo
de estilo de 'estilo de marco. Tambin debe proporcionar un atributo para cambiar el
tamao de cualquier marco de un estado normal con el valor de ambas. Si lo desea,
puede especificar los marcos para otros no cambiar el tamao de los
atributos, horizontal y vertical.

Windows
El mapa final que debe proporcionar es mapear la ventana "tipos" de dado "establece el
estilo de marco. Cada tipo de ventana necesita un conjunto de estilo - normal, de
dilogo, modal_dialog, men, la utilidad y la frontera
<window
<window
<window
<window
<window
<window

type="normal" style_set="my_normal_style_set"/>
type="dialog" style_set="my_dialog_style_set"/>
type="modal_dialog" style_set="my_modal_dialog_style_set"/>
type="menu" style_set="my_menu_style_set"/>
type="utility" style_set="my_utility_style_set"/>
type="border" style_set="my_border_style_set"/>

Descripcin general
Como puede ver, crear un tema Metacity tomar una cantidad un poco grande de
tiempo. Es aconsejable tomar los temas existentes y modificar y observar los cambios
que realice en forma gradual, en vez de empezar de nuevo. Muchos temas [Crux y Aqua
buenos ejemplos que] se basan casi exclusivamente en imgenes, que ser ms difcil
para que usted pueda modificar. Mientras que un tema compuesto por imgenes puede
parecer a veces muy tentador, debe permitir que consideran que se necesita una
cantidad considerable de tiempo a hacer el tema.

Un buen recurso para los temas de Metacity es art.gnome.org. Informes de fallos deben
hacerse en bugzilla.gnome.org en el componente de la "Metacity.
Metacity fue escrito por Havoc Pennington y est disponible bajo la GNU General Public
License [GPL]. Este documento fue escrito por Fernando San Martn Woerner, que tiene
cero talento artstico, Traducido al espaol por Lionel Bino est licenciado bajo la GPL y
los derechos de autor de 2002, Sun Microsystems Inc.

También podría gustarte