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 titlebar titlebar_middle left_titlebar_edge right_titlebar_edge top_titlebar_edge bottom_titlebar_edge title left_edge right_edge bottom_edge overlay todo el marco de la ventana que se dibuja primero rea por encima de la ventana de la aplicacin. Barra de titulos.. mbito de la barra de ttulo no se considera una " ventaja" pieza de rea a la izquierda de la barra de ttulo rea a la derecha de la barra de ttulo rea a la parte superior de la barra de ttulo rea a la parte inferior de la barra de ttulo rea que contiene el ttulo el borde izquierdo del marco 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 y para los siguientes botones left_left_background left_middle_background left_right_background right_left_background right_middle_background right_right_background

Botn de Men

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 Constantes

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

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 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"/> 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

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