summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas James Alexander Thurman <tthurman@src.gnome.org>2006-10-07 17:21:05 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2006-10-07 17:21:05 +0000
commitef1c6e9214702d31a8f6e6d1578b4dbce8c3c4f2 (patch)
tree6d2fba74f3e8c39654f3182120152d328e63b802
parent90359a5346afdf3aa5a6629f290f9a1499c6a7c3 (diff)
downloadmetacity-ef1c6e9214702d31a8f6e6d1578b4dbce8c3c4f2.tar.gz
described new theme format.
* doc/theme-format.txt: described new theme format. * src/themes/Bright, src/themes/Crux: added version 2 themes.
-rw-r--r--ChangeLog6
-rw-r--r--doc/theme-format.txt89
-rw-r--r--src/themes/Bright/metacity-theme-2.xml546
-rw-r--r--src/themes/Crux/active-above-button.pngbin0 -> 197 bytes
-rw-r--r--src/themes/Crux/active-shade-button.pngbin0 -> 296 bytes
-rw-r--r--src/themes/Crux/active-stick-button.pngbin0 -> 249 bytes
-rw-r--r--src/themes/Crux/active-unabove-button.pngbin0 -> 205 bytes
-rw-r--r--src/themes/Crux/active-unshade-button.pngbin0 -> 261 bytes
-rw-r--r--src/themes/Crux/active-unstick-button.pngbin0 -> 248 bytes
-rw-r--r--src/themes/Crux/inactive-above-button.pngbin0 -> 205 bytes
-rw-r--r--src/themes/Crux/inactive-shade-button.pngbin0 -> 213 bytes
-rw-r--r--src/themes/Crux/inactive-stick-button.pngbin0 -> 200 bytes
-rw-r--r--src/themes/Crux/inactive-unabove-button.pngbin0 -> 212 bytes
-rw-r--r--src/themes/Crux/inactive-unshade-button.pngbin0 -> 204 bytes
-rw-r--r--src/themes/Crux/inactive-unstick-button.pngbin0 -> 190 bytes
-rw-r--r--src/themes/Crux/metacity-theme-2.xml832
16 files changed, 1471 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 377b988f..317bd493 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2006-10-07 Thomas Thurman <thomas@thurman.org.uk>
+ * doc/theme-format.txt: described new theme format.
+
+ * src/themes/Bright, src/themes/Crux: added version 2 themes.
+
+2006-10-07 Thomas Thurman <thomas@thurman.org.uk>
+
* common.h: Added "above" to the list of flags a frame can have, so
that we know when to mark it as always on top. Added six grab ops,
one to do and one to undo each of the three new titlebar buttons
diff --git a/doc/theme-format.txt b/doc/theme-format.txt
index a574e89c..95a6b4e7 100644
--- a/doc/theme-format.txt
+++ b/doc/theme-format.txt
@@ -1,6 +1,91 @@
-Docs on the theme format
+Themes are in a simple XML-subset format. There are multiple versions
+of the theme format, and a given theme can support more than one format.
+
+Version 1: THEMEDIR/metacity-1/metacity-theme-1.xml
+ (original metacity format)
+Version 2: THEMEDIR/metacity-1/metacity-theme-2.xml
+
+The subdirectory name is "metacity-1" in all versions.
+
+As you might expect, older versions of metacity will not understand
+newer theme formats. However, newer versions will use old themes.
+Metacity will always use the newest theme format it understands that
+the X server supports. Some format versions are only supported if you
+have the right X server features.
+
+Each format *requires* the corresponding filename. If you put version
+2 format features in the metacity-1/metacity-theme-1.xml file, then
+metacity will get angry.
+
+This document has separate sections for each format version. You may
+want to read the document in reverse order, since the base features
+are discussed under version 1.
+
+New Features in Theme Format Version 2
+======================================
+
+The optional attributes rounded_top_left, rounded_top_right,
+rounded_bottom_left and rounded_bottom_right on <frame_geometry>
+should now be the radius of the corner in pixels. You may still use
+the values "false" for 0 and "true" for 5, which means v1 values will
+still work just fine.
+
+<frame_geometry> has a new optional attribute, hide_buttons. If this
+is true, no buttons will be displayed on the titlebar.
+
+Anywhere you can use a positive integer, you can use an integer constant.
+
+As well as constant integers and reals, you may define constant colours,
+thus:
+ <constant name="RevoltingPink" value="#FF00FF"/>
+ <constant name="Background" value="gtk:bg[NORMAL]"/>
+
+<frame_style> has two new optional attributes, background and alpha.
+If you specify alpha, you must specify background. background is a
+colour used for the background of the frame. alpha is the transparency
+as a real between 0.0 and 1.0. If the current X server does not support
+alpha channels, the value is ignored.
+
+The filename attribute of <image> may begin with "theme:". If so, the
+rest of the string is the name of a theme icon. The 64x64 version of the
+icon is used, except for fallback mini_icons, which use the 16x16 version.
+This does not affect ordinary resizing. For example:
+ <button function="close" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="theme:gnome-logout" x="2" y="2"
+ width="width-4" height="height-4"/>
+ <!-- Note: not "theme:gnome-logout.png" or similar. -->
+ </draw_ops>
+ </button>
-Themes are in a simple XML-subset format.
+<menu_icon>s are parsed but ignored.
+
+Fallback icons can be specified using <fallback>. There are two
+optional arguments, icon and mini_icon. The values of these arguments
+are identical to that of the filename attribute of <image>. Fallback
+icons are used when a window does not supply its own icon. If a fallback
+icon is not specified with <fallback>, Metacity will use a built-in
+icon, as in metacity-theme-1.
+
+The <arc> element, as well as the original start_angle and end_angle
+attributes, may be given from and to attributes. The values of these
+attributes are given in degrees clockwise, with 0 being straight up.
+For example:
+ <arc from="0.0" to="90.0" filled="true" color="#FF00FF"
+ x="0" y="5" width="15" height="15"/>
+
+<frame state="shaded"> may now take an optional resize attribute, with
+the same interpretation as the resize attribute on <frame state="normal">.
+If this attribute is omitted for state="shaded", it defaults to "both".
+(If it is omitted for state="normal", it remains an error.)
+
+In addition to the four <button> functions which are required in
+metacity-theme-1, there are six new functions in metacity-theme-2:
+shade, unshade, above, unabove, stick and unstick.
+
+Overview of Theme Format Version 1
+==================================
<?xml version="1.0"?>
<metacity_theme>
diff --git a/src/themes/Bright/metacity-theme-2.xml b/src/themes/Bright/metacity-theme-2.xml
new file mode 100644
index 00000000..1a43fe16
--- /dev/null
+++ b/src/themes/Bright/metacity-theme-2.xml
@@ -0,0 +1,546 @@
+<?xml version="1.0"?>
+<metacity_theme>
+<info>
+ <name>Bright</name>
+ <author>Gaute Lindkvist &lt;lindkvis@linpro.no&gt;</author>
+ <copyright>&#194; Havoc Pennington, 2002 for Atlanta. &#194; Gaute Lindkvist, 2002 for modifications</copyright>
+ <date>February 3, 2002</date>
+ <description>Simple theme based on Havoc Pennington's Atlanta</description>
+</info>
+
+<frame_geometry name="normal">
+ <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="15"/>
+ <distance name="button_height" value="15"/>
+ <distance name="title_vertical_pad" value="4"/>
+ <border name="title_border" left="3" right="4" top="4" bottom="3"/>
+ <border name="button_border" left="1" right="2" top="2" bottom="1"/>
+</frame_geometry>
+
+<!-- strip borders off the normal geometry -->
+<frame_geometry name="normal_small_borders" parent="normal">
+ <distance name="left_width" value="4"/>
+ <distance name="right_width" value="4"/>
+ <distance name="bottom_height" value="5"/>
+ <distance name="left_titlebar_edge" value="4"/>
+ <distance name="right_titlebar_edge" value="4"/>
+</frame_geometry>
+
+<frame_geometry name="utility" title_scale="xx-small">
+ <distance name="left_width" value="3"/>
+ <distance name="right_width" value="3"/>
+ <distance name="bottom_height" value="4"/>
+ <distance name="left_titlebar_edge" value="3"/>
+ <distance name="right_titlebar_edge" value="3"/>
+ <distance name="button_width" value="11"/>
+ <distance name="button_height" value="11"/>
+ <distance name="title_vertical_pad" value="1"/>
+ <border name="title_border" left="3" right="4" top="3" bottom="3"/>
+ <border name="button_border" left="0" right="0" top="1" bottom="1"/>
+</frame_geometry>
+
+<frame_geometry name="border" has_title="false">
+ <distance name="left_width" value="4"/>
+ <distance name="right_width" value="4"/>
+ <distance name="bottom_height" value="4"/>
+ <distance name="left_titlebar_edge" value="0"/>
+ <distance name="right_titlebar_edge" value="0"/>
+ <distance name="button_width" value="0"/>
+ <distance name="button_height" value="0"/>
+ <distance name="title_vertical_pad" value="4"/>
+ <border name="title_border" left="0" right="0" top="0" bottom="0"/>
+ <border name="button_border" left="0" right="0" top="0" bottom="0"/>
+</frame_geometry>
+
+<!-- define constants -->
+<constant name="ArrowWidth" value="7"/>
+<constant name="ArrowHeight" value="5"/>
+<constant name="ButtonIPad" value="3"/>
+<constant name="ThickLineWidth" value="3"/>
+<constant name="IconTitleSpacing" value="2"/>
+<constant name="SpacerWidth" value="7"/>
+<constant name="SpacerHeight" value="11"/>
+
+<!-- Buttons -->
+
+<draw_ops name="button_normal_bg">
+<rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="0" y="0" width="width-2" height="height-2"/>
+<line color="#BBBBBB"
+ x1="1"
+ y1="height-1"
+ x2="width"
+ y2="height-1"
+ width="1"/>
+<line color="#BBBBBB"
+ x1="width-1"
+ y1="1"
+ x2="width-1"
+ y2="height-1"
+ width="1"/>
+<rectangle color="gtk:base[NORMAL]" filled="true"
+ x="1" y="1" width="width-3" height="height-3"/>
+</draw_ops>
+
+<draw_ops name="button_pressed_bg">
+ <gtk_box state="active" shadow="in" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="menu_button">
+ <clip x="0" y="0" width="width" height="height"/>
+<icon x="(0 `max` (width-title_width-mini_icon_width-IconTitleSpacing)) / 2"
+ y="(height-mini_icon_height) / 2"
+ width="mini_icon_width-1" height="mini_icon_height-1"/>
+</draw_ops>
+
+<draw_ops name="menu_button_normal">
+ <include name="menu_button"/>
+</draw_ops>
+<draw_ops name="menu_button_pressed">
+ <include name="menu_button"/>
+</draw_ops>
+
+<draw_ops name="minimize_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="height - ButtonIPad - ThickLineWidth + 1"
+ x2="width - ButtonIPad-1"
+ y2="height - ButtonIPad - ThickLineWidth + 1"
+ width="ThickLineWidth"/>
+</draw_ops>
+
+<draw_ops name="minimize_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="minimize_button"/>
+</draw_ops>
+
+<draw_ops name="minimize_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="minimize_button"/>
+</draw_ops>
+
+<draw_ops name="maximize_button">
+ <rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="ButtonIPad" y="ButtonIPad" width="width-ButtonIPad*2-2" height="height-ButtonIPad*2-2"/>
+ <line color="gtk:fg[NORMAL]" width="2"
+ x1="ButtonIPad" y1="ButtonIPad+1" x2="width-ButtonIPad-1" y2="ButtonIPad+1"/>
+</draw_ops>
+
+<draw_ops name="maximize_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="maximize_button"/>
+</draw_ops>
+
+<draw_ops name="maximize_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="maximize_button"/>
+</draw_ops>
+
+<draw_ops name="mini_window_icon">
+ <rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="0" y="0" width="width-3" height="height-3"/>
+ <rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="0" y="0" width="width-3" height="height-3"/>
+ <line color="gtk:fg[NORMAL]" width="1"
+ x1="0" y1="1" x2="width-1" y2="1"/>
+</draw_ops>
+
+<draw_ops name="restore_button">
+ <include name="mini_window_icon"
+ x="ButtonIPad" y="ButtonIPad"
+ width="width - 5 - ButtonIPad"
+ height="height - 5 - ButtonIPad"/>
+ <include name="mini_window_icon"
+ x="3 + ButtonIPad" y="3 + ButtonIPad"
+ width="width - 5 - ButtonIPad"
+ height="height - 5 - ButtonIPad"/>
+</draw_ops>
+
+<draw_ops name="restore_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="restore_button"/>
+</draw_ops>
+
+<draw_ops name="restore_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="restore_button"/>
+</draw_ops>
+
+<draw_ops name="close_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad" y1="ButtonIPad"
+ x2="width - ButtonIPad - 2" y2="height - ButtonIPad - 2"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad" y1="height - ButtonIPad - 2"
+ x2="width - ButtonIPad - 2" y2="ButtonIPad"/>
+</draw_ops>
+
+<draw_ops name="shade_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="ButtonIPad"
+ x2="width - ButtonIPad-1"
+ y2="ButtonIPad"
+ width="ThickLineWidth"/>
+</draw_ops>
+
+<draw_ops name="unshade_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="ButtonIPad"
+ x2="width - ButtonIPad-1"
+ y2="ButtonIPad"
+ width="ThickLineWidth"/>
+ <rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="ButtonIPad"
+ y="ButtonIPad*2"
+ width="width - ButtonIPad*2-1"
+ height="height - ButtonIPad*3-1"/>
+</draw_ops>
+
+<draw_ops name="above_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="height/2"
+ x2="ButtonIPad + 2"
+ y2="height/2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width - ButtonIPad-1"
+ y1="height/2"
+ x2="width - ButtonIPad-3"
+ y2="height/2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width/2-1"
+ y1="height - ButtonIPad - 2"
+ x2="width/2+1"
+ y2="height - ButtonIPad - 2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="ButtonIPad"
+ x2="width - ButtonIPad-1"
+ y2="ButtonIPad"
+ width="ThickLineWidth"/>
+</draw_ops>
+
+<draw_ops name="unabove_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad"
+ y1="height/2"
+ x2="ButtonIPad + 2"
+ y2="height/2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width - ButtonIPad-1"
+ y1="height/2"
+ x2="width - ButtonIPad-3"
+ y2="height/2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width/2-1"
+ y1="height - ButtonIPad - 2"
+ x2="width/2+1"
+ y2="height - ButtonIPad - 2"
+ width="ThickLineWidth"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width/2-1"
+ y1="ButtonIPad"
+ x2="width/2+1"
+ y2="ButtonIPad"
+ width="ThickLineWidth"/>
+</draw_ops>
+
+<draw_ops name="stick_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad" y1="ButtonIPad"
+ x2="ButtonIPad" y2="height - ButtonIPad - 2"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="ButtonIPad" y1="height/2-1"
+ x2="width - ButtonIPad - 2" y2="height/2-1"/>
+</draw_ops>
+
+<draw_ops name="unstick_button">
+ <line color="gtk:fg[NORMAL]"
+ x1="width/2" y1="ButtonIPad"
+ x2="width/2" y2="height - ButtonIPad - 2"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width/2" y1="height/2-1"
+ x2="width - ButtonIPad - 2" y2="height/2-1"/>
+ <line color="gtk:fg[NORMAL]"
+ x1="width-ButtonIPad-2" y1="height/2-3"
+ x2="width-ButtonIPad-2" y2="height/2+2"/>
+</draw_ops>
+
+<draw_ops name="close_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="close_button"/>
+</draw_ops>
+
+<draw_ops name="close_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="close_button"/>
+</draw_ops>
+
+<draw_ops name="shade_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="shade_button"/>
+</draw_ops>
+
+<draw_ops name="shade_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="shade_button"/>
+</draw_ops>
+
+<draw_ops name="unshade_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="unshade_button"/>
+</draw_ops>
+
+<draw_ops name="unshade_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="unshade_button"/>
+</draw_ops>
+
+<draw_ops name="above_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="above_button"/>
+</draw_ops>
+
+<draw_ops name="above_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="above_button"/>
+</draw_ops>
+
+<draw_ops name="unabove_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="unabove_button"/>
+</draw_ops>
+
+<draw_ops name="unabove_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="unabove_button"/>
+</draw_ops>
+
+<draw_ops name="stick_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="stick_button"/>
+</draw_ops>
+
+<draw_ops name="stick_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="stick_button"/>
+</draw_ops>
+
+<draw_ops name="unstick_button_normal">
+ <include name="button_normal_bg"/>
+ <include name="unstick_button"/>
+</draw_ops>
+
+<draw_ops name="unstick_button_pressed">
+ <include name="button_pressed_bg"/>
+ <include name="unstick_button"/>
+</draw_ops>
+
+<draw_ops name="outer_bevel">
+ <rectangle color="gtk:fg[NORMAL]"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <line color="gtk:light[NORMAL]"
+ x1="1" y1="1" x2="1" y2="height-2"/>
+ <line color="gtk:light[NORMAL]"
+ x1="1" y1="1" x2="width-2" y2="1"/>
+ <line color="gtk:dark[NORMAL]"
+ x1="width-2" y1="1" x2="width-2" y2="height-2"/>
+ <line color="gtk:dark[NORMAL]"
+ x1="1" y1="height-2" x2="width-2" y2="height-2"/>
+</draw_ops>
+
+<draw_ops name="blank">
+<!-- nothing -->
+</draw_ops>
+
+<draw_ops name="focus_outline">
+ <rectangle color="gtk:fg[NORMAL]"
+ x="left_width-1" y="top_height-1"
+ width="width-left_width-right_width+1"
+ height="height-top_height-bottom_height+1"/>
+</draw_ops>
+
+<draw_ops name="focus_background">
+ <include name="outer_bevel"/>
+ <include name="focus_outline"/>
+</draw_ops>
+
+<draw_ops name="background_unfocused">
+ <include name="outer_bevel"/>
+ <include name="focus_outline"/>
+</draw_ops>
+
+<draw_ops name="title_box">
+<rectangle color="gtk:fg[NORMAL]" filled="false"
+ x="0" y="1" width="width-SpacerWidth+3" height="height-2"/>
+<line color="#BBBBBB"
+ x1="2"
+ y1="height-2"
+ x2="width-SpacerWidth+2"
+ y2="height-2"
+ width="1"/>
+<line color="#BBBBBB"
+ x1="width-5"
+ y1="2"
+ x2="width-SpacerWidth+2"
+ y2="height-2"
+ width="1"/>
+<rectangle color="gtk:bg[SELECTED]" filled="true"
+ x="1" y="2" width="width-5" height="height-3"/>
+</draw_ops>
+
+<draw_ops name="title_spacer">
+ <gtk_vline state="normal" x="width+1-SpacerWidth/2"
+ y1="(height-SpacerHeight)/2"
+ y2="height - (height-SpacerHeight)/2"/>
+</draw_ops>
+
+<draw_ops name="title_text_focused_no_icon">
+ <clip x="3" y="2" width="width-SpacerWidth-2" height="height-4"/>
+ <title color="gtk:fg[SELECTED]"
+ x="(3 `max` (width-title_width)) / 2+2"
+ y="((height - title_height) / 2) `max` 0"/>
+</draw_ops>
+
+<draw_ops name="title_text_no_icon">
+ <clip x="3" y="2" width="width-SpacerWidth-2" height="height-4"/>
+ <title color="gtk:fg[NORMAL]"
+ x="(3 `max` (width-title_width)) / 2+2"
+ y="((height - title_height) / 2) `max` 0"/>
+</draw_ops>
+
+<draw_ops name="title_normal">
+ <include name="title_text_no_icon"/>
+</draw_ops>
+
+<draw_ops name="title_focused">
+ <include name="title_box"/>
+ <include name="title_text_focused_no_icon"/>
+</draw_ops>
+
+<draw_ops name="title_utility">
+ <include name="title_spacer"/>
+ <include name="title_text_no_icon"/>
+</draw_ops>
+
+<draw_ops name="title_utility_focused">
+ <include name="title_box"/>
+ <include name="title_spacer"/>
+ <include name="title_text_focused_no_icon"/>
+</draw_ops>
+
+<frame_style name="normal_unfocused" geometry="normal">
+ <piece position="entire_background" draw_ops="background_unfocused"/>
+ <piece position="title" draw_ops="title_normal"/>
+
+ <!-- we don't specify for prelight, so normal is used -->
+ <button function="close" state="normal" draw_ops="close_button_normal"/>
+ <button function="close" state="pressed" draw_ops="close_button_pressed"/>
+ <button function="minimize" state="normal" draw_ops="minimize_button_normal"/>
+ <button function="minimize" state="pressed" draw_ops="minimize_button_pressed"/>
+ <button function="maximize" state="normal" draw_ops="maximize_button_normal"/>
+ <button function="maximize" state="pressed" draw_ops="maximize_button_pressed"/>
+ <button function="menu" state="normal" draw_ops="menu_button_normal"/>
+ <button function="menu" state="pressed" draw_ops="menu_button_pressed"/>
+ <button function="shade" state="normal" draw_ops="shade_button_normal"/>
+ <button function="shade" state="pressed" draw_ops="shade_button_pressed"/>
+ <button function="unshade" state="normal" draw_ops="unshade_button_normal"/>
+ <button function="unshade" state="pressed" draw_ops="unshade_button_pressed"/>
+ <button function="above" state="normal" draw_ops="above_button_normal"/>
+ <button function="above" state="pressed" draw_ops="above_button_pressed"/>
+ <button function="unabove" state="normal" draw_ops="unabove_button_normal"/>
+ <button function="unabove" state="pressed" draw_ops="unabove_button_pressed"/>
+ <button function="stick" state="normal" draw_ops="stick_button_normal"/>
+ <button function="stick" state="pressed" draw_ops="stick_button_pressed"/>
+ <button function="unstick" state="normal" draw_ops="unstick_button_normal"/>
+ <button function="unstick" state="pressed" draw_ops="unstick_button_pressed"/>
+</frame_style>
+
+<frame_style name="normal_focused" geometry="normal" parent="normal_unfocused">
+ <piece position="entire_background" draw_ops="focus_background"/>
+ <piece position="title" draw_ops="title_focused"/>
+</frame_style>
+
+<frame_style name="maximized_unfocused" geometry="normal_small_borders" parent="normal_unfocused">
+ <piece position="entire_background" draw_ops="blank"/>
+ <button function="maximize" state="normal" draw_ops="restore_button_normal"/>
+ <button function="maximize" state="pressed" draw_ops="restore_button_pressed"/>
+</frame_style>
+
+<frame_style name="maximized_focused" geometry="normal_small_borders" parent="normal_focused">
+ <piece position="entire_background" draw_ops="focus_outline"/>
+ <button function="maximize" state="normal" draw_ops="restore_button_normal"/>
+ <button function="maximize" state="pressed" draw_ops="restore_button_pressed"/>
+</frame_style>
+
+<frame_style name="utility_unfocused" geometry="utility" parent="normal_unfocused">
+ <piece position="title" draw_ops="title_utility"/>
+</frame_style>
+
+<frame_style name="utility_focused" geometry="utility" parent="normal_focused">
+ <piece position="title" draw_ops="title_utility_focused"/>
+</frame_style>
+
+<frame_style name="border" geometry="border" parent="normal_unfocused">
+ <piece position="entire_background" draw_ops="outer_bevel"/>
+ <piece position="title" draw_ops="blank"/>
+</frame_style>
+
+<frame_style_set name="normal">
+<frame focus="yes" state="normal" resize="both" style="normal_focused"/>
+<frame focus="no" state="normal" resize="both" style="normal_unfocused"/>
+<frame focus="yes" state="maximized" style="maximized_focused"/>
+<frame focus="no" state="maximized" style="maximized_unfocused"/>
+<frame focus="yes" state="shaded" style="normal_focused"/>
+<frame focus="no" state="shaded" style="normal_unfocused"/>
+<frame focus="yes" state="maximized_and_shaded" style="maximized_focused"/>
+<frame focus="no" state="maximized_and_shaded" style="maximized_unfocused"/>
+</frame_style_set>
+
+<frame_style_set name="utility" parent="normal">
+<frame focus="yes" state="normal" resize="both" style="utility_focused"/>
+<frame focus="no" state="normal" resize="both" style="utility_unfocused"/>
+<!-- this is a bunch of crack since utility windows shouldn't be maximized -->
+<frame focus="yes" state="maximized" style="utility_focused"/>
+<frame focus="no" state="maximized" style="utility_unfocused"/>
+<frame focus="yes" state="shaded" style="utility_focused"/>
+<frame focus="no" state="shaded" style="utility_unfocused"/>
+<frame focus="yes" state="maximized_and_shaded" style="utility_focused"/>
+<frame focus="no" state="maximized_and_shaded" style="utility_unfocused"/>
+</frame_style_set>
+
+<frame_style_set name="border">
+<frame focus="yes" state="normal" resize="both" style="border"/>
+<frame focus="no" state="normal" resize="both" style="border"/>
+<frame focus="yes" state="maximized" style="border"/>
+<frame focus="no" state="maximized" style="border"/>
+<frame focus="yes" state="shaded" style="border"/>
+<frame focus="no" state="shaded" style="border"/>
+<frame focus="yes" state="maximized_and_shaded" style="border"/>
+<frame focus="no" state="maximized_and_shaded" style="border"/>
+</frame_style_set>
+
+<window type="normal" style_set="normal"/>
+<window type="dialog" style_set="normal"/>
+<window type="modal_dialog" style_set="normal"/>
+<window type="menu" style_set="normal"/>
+<window type="utility" style_set="utility"/>
+<window type="border" style_set="border"/>
+
+<menu_icon function="close" state="normal" draw_ops="close_button_normal"/>
+<menu_icon function="maximize" state="normal" draw_ops="maximize_button_normal"/>
+<menu_icon function="unmaximize" state="normal" draw_ops="restore_button_normal"/>
+<menu_icon function="minimize" state="normal" draw_ops="minimize_button_normal"/>
+
+</metacity_theme>
diff --git a/src/themes/Crux/active-above-button.png b/src/themes/Crux/active-above-button.png
new file mode 100644
index 00000000..0eec82b8
--- /dev/null
+++ b/src/themes/Crux/active-above-button.png
Binary files differ
diff --git a/src/themes/Crux/active-shade-button.png b/src/themes/Crux/active-shade-button.png
new file mode 100644
index 00000000..2c86470e
--- /dev/null
+++ b/src/themes/Crux/active-shade-button.png
Binary files differ
diff --git a/src/themes/Crux/active-stick-button.png b/src/themes/Crux/active-stick-button.png
new file mode 100644
index 00000000..2bb224c5
--- /dev/null
+++ b/src/themes/Crux/active-stick-button.png
Binary files differ
diff --git a/src/themes/Crux/active-unabove-button.png b/src/themes/Crux/active-unabove-button.png
new file mode 100644
index 00000000..af1104ce
--- /dev/null
+++ b/src/themes/Crux/active-unabove-button.png
Binary files differ
diff --git a/src/themes/Crux/active-unshade-button.png b/src/themes/Crux/active-unshade-button.png
new file mode 100644
index 00000000..ddaf11f5
--- /dev/null
+++ b/src/themes/Crux/active-unshade-button.png
Binary files differ
diff --git a/src/themes/Crux/active-unstick-button.png b/src/themes/Crux/active-unstick-button.png
new file mode 100644
index 00000000..2936b166
--- /dev/null
+++ b/src/themes/Crux/active-unstick-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-above-button.png b/src/themes/Crux/inactive-above-button.png
new file mode 100644
index 00000000..dd6de031
--- /dev/null
+++ b/src/themes/Crux/inactive-above-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-shade-button.png b/src/themes/Crux/inactive-shade-button.png
new file mode 100644
index 00000000..93ff14b2
--- /dev/null
+++ b/src/themes/Crux/inactive-shade-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-stick-button.png b/src/themes/Crux/inactive-stick-button.png
new file mode 100644
index 00000000..14ffd9ed
--- /dev/null
+++ b/src/themes/Crux/inactive-stick-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-unabove-button.png b/src/themes/Crux/inactive-unabove-button.png
new file mode 100644
index 00000000..bc1052d9
--- /dev/null
+++ b/src/themes/Crux/inactive-unabove-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-unshade-button.png b/src/themes/Crux/inactive-unshade-button.png
new file mode 100644
index 00000000..982abeac
--- /dev/null
+++ b/src/themes/Crux/inactive-unshade-button.png
Binary files differ
diff --git a/src/themes/Crux/inactive-unstick-button.png b/src/themes/Crux/inactive-unstick-button.png
new file mode 100644
index 00000000..e4822729
--- /dev/null
+++ b/src/themes/Crux/inactive-unstick-button.png
Binary files differ
diff --git a/src/themes/Crux/metacity-theme-2.xml b/src/themes/Crux/metacity-theme-2.xml
new file mode 100644
index 00000000..f1e83806
--- /dev/null
+++ b/src/themes/Crux/metacity-theme-2.xml
@@ -0,0 +1,832 @@
+<?xml version="1.0"?>
+<metacity_theme>
+<info>
+ <name>Crux</name>
+ <author>Anders Carlsson &lt;andersca@gnu.org&gt;</author>
+ <copyright>&#194; Eazel Inc, 2000</copyright>
+ <date>February 6, 2002</date>
+ <description>A port of the Crux theme by Arlo Rose and John Harper</description>
+</info>
+
+<!-- define constants -->
+<constant name="IconTitleSpacing" value="2"/> <!-- Space between menu button and title -->
+<constant name="CenterTitlePieceWidth" value="48"/> <!-- Width of center title piece -->
+<constant name="ButtonWidth" value="16"/> <!-- Button width -->
+
+<frame_geometry name="normal" hide_buttons="true">
+ <distance name="left_width" value="5"/>
+ <distance name="right_width" value="6"/>
+ <distance name="bottom_height" value="6"/>
+ <distance name="left_titlebar_edge" value="5"/>
+ <distance name="right_titlebar_edge" value="6"/>
+ <aspect_ratio name="button" value="1.0"/>
+ <distance name="title_vertical_pad" value="0"/>
+ <border name="title_border" left="0" right="0" top="3" bottom="3"/>
+ <border name="button_border" left="0" right="0" top="3" bottom="3"/>
+</frame_geometry>
+
+<frame_geometry name="border" has_title="false" hide_buttons="true">
+ <distance name="left_width" value="5"/>
+ <distance name="right_width" value="6"/>
+ <distance name="bottom_height" value="6"/>
+ <distance name="left_titlebar_edge" value="0"/>
+ <distance name="right_titlebar_edge" value="0"/>
+ <distance name="button_width" value="0"/>
+ <distance name="button_height" value="0"/>
+ <distance name="title_vertical_pad" value="5"/>
+ <border name="title_border" left="0" right="0" top="0" bottom="0"/>
+ <border name="button_border" left="0" right="0" top="0" bottom="0"/>
+</frame_geometry>
+
+<!-- Buttons -->
+
+<draw_ops name="active_button">
+ <image filename="active-button.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="active_button_pressed">
+ <image filename="active-button-pressed.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="active_button_prelight">
+ <image filename="active-button-prelight.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="inactive_button">
+ <image filename="inactive-button.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="inactive_button_pressed">
+ <image filename="inactive-button-pressed.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<draw_ops name="inactive_button_prelight">
+ <image filename="inactive-button-prelight.png" x="0" y="0" width="width" height="height"/>
+</draw_ops>
+
+<!-- Inactive style -->
+<frame_style name="normal" geometry="normal">
+ <piece position="left_edge">
+ <draw_ops>
+ <image filename="inactive-left-border.png" x="0" y="0" width="object_width" height="height"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="right_edge">
+ <draw_ops>
+ <image filename="inactive-right-border.png" x="0" y="0" width="object_width" height="height"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="title">
+ <draw_ops>
+ <title color="gtk:fg[SELECTED]" x="IconTitleSpacing" y="0"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="titlebar">
+ <draw_ops>
+
+ <image filename="inactive-left-top-border.png"
+ x="0" y="0" width="object_width" height="height"/>
+ <image filename="inactive-right-top-border.png"
+ x="width - object_width" y="0" width="object_width" height="height"/>
+
+ <image filename="inactive-top-center-left.png"
+ x="4" y="0"
+ width="(left_width + ButtonWidth + IconTitleSpacing + title_width) `min`
+ (width - right_width - 3 * ButtonWidth - CenterTitlePieceWidth * height / 22 - 3)"
+ height="height"/>
+
+ <image filename="inactive-top-center-mid.png"
+ x="((left_width + ButtonWidth + IconTitleSpacing + title_width) `min` (width - object_width * height / 22 - right_width - 3 * ButtonWidth)) + 1"
+ y="0" width="object_width * height / 22" height="height"/>
+
+ <image filename="inactive-top-center-right.png"
+ x="((left_width + ButtonWidth + IconTitleSpacing + title_width + CenterTitlePieceWidth * height / 22) `min` (width - 3 * ButtonWidth - right_width)) + 1"
+ y="0"
+ width="(width - title_width - left_width - ButtonWidth - IconTitleSpacing - CenterTitlePieceWidth * height / 22 - right_width) `max` (3 * ButtonWidth)"
+ height="height"/>
+
+ </draw_ops>
+ </piece>
+
+ <!-- We have to draw the bottom edge in the background piece
+ because that's the only way we can get the correct window height -->
+ <piece position="overlay">
+ <draw_ops>
+ <image filename="inactive-bottom-left-corner.png"
+ x="0" y="height - object_height" width="object_width" height="object_height"/>
+ <image filename="inactive-bottom-left-border.png" x="5" y="height - object_height"
+ width="((title_width + height / 2 - 4) `min` (width - object_width - 26))"
+ height="object_height"/>
+ <image filename="inactive-bottom-mid-border.png"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="height - object_height" width="object_width" height="object_height"/>
+
+ <image filename="inactive-bottom-right-border.png"
+ x="((title_width + height / 2 + 32)) + 1"
+ y="height - object_height"
+ width="(width - title_width - height / 2 - 32 - 7) `max` 0"
+ height="object_height"/>
+
+ <image filename="inactive-bottom-right-corner.png"
+ x="width - object_width" y="height - object_height" width="object_height" height="object_height"/>
+
+ </draw_ops>
+ </piece>
+
+ <button function="close" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="close" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="close" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-maximize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-maximize-button.png" x="2" y="2" width="width - 4" height="height - 4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-maximize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="menu" state="normal">
+ <draw_ops>
+ <image filename="inactive-menu-button.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+
+ <button function="menu" state="pressed">
+ <draw_ops>
+ <image filename="inactive-menu-button-pressed.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+
+ <button function="menu" state="prelight">
+ <draw_ops>
+ <image filename="inactive-menu-button-prelight.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+</frame_style>
+
+<frame_style name="normal_maximized" parent="normal">
+ <button function="maximize" state="normal">
+ <draw_ops>
+ <include name="inactive_button"/>
+ <image filename="inactive-restore-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="pressed">
+ <draw_ops>
+ <include name="inactive_button_pressed"/>
+ <image filename="inactive-restore-button.png" x="2" y="2" width="width - 4" height="height - 4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="prelight">
+ <draw_ops>
+ <include name="inactive_button_prelight"/>
+ <image filename="inactive-restore-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+</frame_style>
+
+<!-- Active (focused) shaded style -->
+ <frame_style name="normal_shaded" geometry="normal" parent="normal">
+ <piece position="left_titlebar_edge">
+ <draw_ops>
+ <image filename="inactive-left-top-border-shaded.png" x="0" y="3" width="object_width" height="object_height"/>
+ </draw_ops>
+ </piece>
+ <piece position="right_titlebar_edge">
+ <draw_ops>
+ <image filename="inactive-right-top-border-shaded.png" x="width - object_width" y="3" width="object_width" height="object_height"/>
+ </draw_ops>
+ </piece>
+ </frame_style>
+
+
+<!-- Active (focused) style -->
+<frame_style name="focused" geometry="normal">
+ <piece position="left_edge">
+ <draw_ops>
+ <image colorize="gtk:bg[SELECTED]" filename="active-left-border.png" x="0" y="0" width="object_width" height="height"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="right_edge">
+ <draw_ops>
+ <image filename="active-right-border.png" x="0" y="0" width="object_width" height="height"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="title">
+ <draw_ops>
+ <title color="gtk:fg[SELECTED]" x="IconTitleSpacing" y="((height - title_height) / 2) `max` 0"/>
+ </draw_ops>
+ </piece>
+
+ <piece position="titlebar">
+ <draw_ops>
+
+ <image filename="active-left-top-border.png"
+ colorize="gtk:bg[SELECTED]"
+ x="0" y="0" width="object_width" height="height"/>
+
+ <image filename="active-right-top-border.png"
+ x="width - object_width" y="0" width="object_width" height="height"/>
+
+ <image filename="active-top-center-left.png"
+ colorize="gtk:bg[SELECTED]"
+ x="4" y="0"
+ width="(left_width + ButtonWidth + IconTitleSpacing + title_width) `min`
+ (width - right_width - 3 * ButtonWidth - CenterTitlePieceWidth * height / 22 - 3)"
+ height="height"/>
+
+ <image filename="active-top-center-mid-left.png"
+ colorize="gtk:bg[SELECTED]"
+ x="((left_width + ButtonWidth + IconTitleSpacing + title_width) `min` (width - object_width * height / 22 - right_width - 3 * ButtonWidth)) + 1"
+ y="0" width="object_width * height / 22" height="height"/>
+
+ <image filename="active-top-center-mid-right.png"
+ x="((left_width + ButtonWidth + IconTitleSpacing + title_width) `min` (width - object_width * height / 22 - right_width - 3 * ButtonWidth)) + 1"
+ y="0" width="object_width * height / 22" height="height"/>
+
+ <image filename="active-top-center-right.png"
+ x="((left_width + ButtonWidth + IconTitleSpacing + title_width + CenterTitlePieceWidth * height / 22) `min` (width - 3 * ButtonWidth - right_width)) + 1"
+ y="0"
+ width="(width - title_width - left_width - ButtonWidth - IconTitleSpacing - CenterTitlePieceWidth * height / 22 - right_width) `max` (3 * ButtonWidth)"
+ height="height"/>
+
+ </draw_ops>
+ </piece>
+
+ <!-- We have to draw the bottom edge in the background piece
+ because that's the only way we can get the correct window height -->
+ <piece position="overlay">
+ <draw_ops>
+ <image filename="active-bottom-left-corner.png"
+ colorize="gtk:bg[SELECTED]"
+ x="0" y="height - object_height" width="object_width" height="object_height"/>
+ <image filename="active-bottom-left-border.png" x="5" y="height - object_height"
+ colorize="gtk:bg[SELECTED]"
+ width="((title_width + height / 2 - 4) `min` (width - object_width - 26))"
+ height="object_height"/>
+ <image filename="active-bottom-mid-left-border.png"
+ colorize="gtk:bg[SELECTED]"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="height - object_height" width="object_width" height="object_height"/>
+ <image filename="active-bottom-mid-right-border.png"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="height - object_height" width="object_width" height="object_height"/>
+
+ <image filename="active-bottom-right-border.png"
+ x="((title_width + height / 2 + 32)) + 1"
+ y="height - object_height"
+ width="(width - title_width - height / 2 - 32 - 7) `max` 0"
+ height="object_height"/>
+
+ <image filename="active-bottom-right-corner.png"
+ x="width - object_width" y="height - object_height" width="object_height" height="object_height"/>
+
+ </draw_ops>
+ </piece>
+
+ <button function="close" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="close" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="close" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-close-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="minimize" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-minimize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-maximize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-maximize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-maximize-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="shade" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-shade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unshade" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-unshade-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="above" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-above-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unabove" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-unabove-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="stick" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-stick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="unstick" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-unstick-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="menu" state="normal">
+ <draw_ops>
+ <image colorize="gtk:bg[SELECTED]" filename="active-menu-button.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+
+ <button function="menu" state="pressed">
+ <draw_ops>
+ <image colorize="gtk:bg[SELECTED]" filename="active-menu-button-pressed.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+ <button function="menu" state="prelight">
+ <draw_ops>
+ <image colorize="gtk:bg[SELECTED]" filename="active-menu-button-prelight.png" x="0" y="0" width="width" height="height"/>
+ </draw_ops>
+ </button>
+</frame_style>
+
+<frame_style name="focused_maximized" geometry="normal" parent="focused">
+ <button function="maximize" state="normal">
+ <draw_ops>
+ <include name="active_button"/>
+ <image filename="active-restore-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="pressed">
+ <draw_ops>
+ <include name="active_button_pressed"/>
+ <image filename="active-restore-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+ <button function="maximize" state="prelight">
+ <draw_ops>
+ <include name="active_button_prelight"/>
+ <image filename="active-restore-button.png" x="2" y="2" width="width-4" height="height-4"/>
+ </draw_ops>
+ </button>
+
+</frame_style>
+
+<!-- Active (focused) shaded style -->
+<frame_style name="focused_shaded" geometry="normal" parent="focused">
+ <piece position="left_titlebar_edge">
+ <draw_ops>
+ <image colorize="gtk:bg[SELECTED]" filename="active-left-top-border-shaded.png" x="0" y="3" width="object_width" height="object_height"/>
+ </draw_ops>
+ </piece>
+ <piece position="right_titlebar_edge">
+ <draw_ops>
+ <image filename="active-right-top-border-shaded.png" x="width - object_width" y="3" width="object_width" height="object_height"/>
+ </draw_ops>
+ </piece>
+</frame_style>
+
+<!-- Inactive border style -->
+<frame_style name="border_unfocused" geometry="border" parent="normal">
+ <piece position="title"><draw_ops/></piece>
+ <piece position="titlebar">
+ <draw_ops>
+ <image filename="inactive-top-left-corner.png"
+ x="0" y="0" width="object_width" height="object_height"/>
+ <image filename="inactive-border-top-left-border.png" x="5" y="0"
+ width="((title_width + height / 2 - 4) `min` (width - object_width - 26))"
+ height="object_height"/>
+ <image filename="inactive-top-mid-border.png"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="0" width="object_width" height="object_height"/>
+ <image filename="inactive-border-top-right-border.png"
+ x="((title_width + height / 2 + 32)) + 1"
+ y="0"
+ width="(width - title_width - height / 2 - 32 - 7) `max` 0"
+ height="object_height"/>
+ <image filename="inactive-top-right-corner.png"
+ x="width - object_width" y="0" width="object_height" height="object_height"/>
+ </draw_ops>
+ </piece>
+</frame_style>
+
+<!-- Active (focused) border style -->
+<frame_style name="border_focused" geometry="border" parent="focused">
+ <piece position="title"><draw_ops/></piece>
+ <piece position="titlebar">
+ <draw_ops>
+ <image filename="active-top-left-corner.png"
+ colorize="gtk:bg[SELECTED]"
+ x="0" y="0" width="object_width" height="object_height"/>
+ <image filename="active-border-top-left-border.png"
+ colorize="gtk:bg[SELECTED]" x="5" y="0"
+ width="((title_width + height / 2 - 4) `min` (width - object_width - 26))"
+ height="object_height"/>
+ <image filename="active-top-mid-left-border.png"
+ colorize="gtk:bg[SELECTED]"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="0" width="object_width" height="object_height"/>
+ <image filename="active-top-mid-right-border.png"
+ x="((title_width + height / 2) `min` (width - object_width - 6)) + 1"
+ y="0" width="object_width" height="object_height"/>
+ <image filename="active-border-top-right-border.png"
+ x="((title_width + height / 2 + 32)) + 1" y="0"
+ width="(width - title_width - height / 2 - 32 - 7) `max` 0"
+ height="object_height"/>
+ <image filename="active-top-right-corner.png"
+ x="width - object_width" y="0" width="object_height" height="object_height"/>
+ </draw_ops>
+ </piece>
+</frame_style>
+
+<frame_style_set name="normal">
+<frame focus="yes" state="shaded" resize="both" style="focused_shaded"/>
+<frame focus="yes" state="normal" resize="both" style="focused"/>
+<frame focus="yes" state="maximized" style="focused_maximized"/>
+<frame focus="yes" state="maximized_and_shaded" style="focused_maximized"/>
+<frame focus="no" state="normal" resize="both" style="normal"/>
+<frame focus="no" state="shaded" resize="both" style="normal_shaded"/>
+<frame focus="no" state="maximized" style="normal_maximized"/>
+<frame focus="no" state="maximized_and_shaded" style="normal_maximized"/>
+</frame_style_set>
+
+<frame_style_set name="border">
+<frame focus="yes" state="normal" resize="both" style="border_focused"/>
+<frame focus="yes" state="maximized" style="border_focused"/>
+<frame focus="yes" state="shaded" resize="both" style="border_focused"/>
+<frame focus="yes" state="maximized_and_shaded" style="border_focused"/>
+<frame focus="no" state="normal" resize="both" style="border_unfocused"/>
+<frame focus="no" state="maximized" style="border_unfocused"/>
+<frame focus="no" state="shaded" resize="both" style="border_unfocused"/>
+<frame focus="no" state="maximized_and_shaded" style="border_unfocused"/>
+</frame_style_set>
+
+<window type="normal" style_set="normal"/>
+<window type="dialog" style_set="normal"/>
+<window type="modal_dialog" style_set="normal"/>
+<window type="menu" style_set="normal"/>
+<window type="utility" style_set="normal"/>
+<window type="border" style_set="border"/>
+
+<menu_icon function="close" state="normal">
+ <draw_ops>
+ <image filename="active-close-button.png"
+ x="(width - object_width) / 2"
+ y="(height - object_height) / 2"
+ width="object_width" height="object_height"/>
+ </draw_ops>
+</menu_icon>
+
+<menu_icon function="maximize" state="normal">
+ <draw_ops>
+ <image filename="active-maximize-button.png"
+ x="(width - object_width) / 2"
+ y="(height - object_height) / 2"
+ width="object_width" height="object_height"/>
+ </draw_ops>
+</menu_icon>
+
+
+<menu_icon function="minimize" state="normal">
+ <draw_ops>
+ <image filename="active-minimize-button.png"
+ x="(width - object_width) / 2"
+ y="(height - object_height) / 2"
+ width="object_width" height="object_height"/>
+ </draw_ops>
+</menu_icon>
+
+<menu_icon function="unmaximize" state="normal">
+ <draw_ops>
+ </draw_ops>
+</menu_icon>
+
+</metacity_theme>