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 Version 3: THEMEDIR/metacity-1/metacity-theme-3.xml The subdirectory name is "metacity-1" in all versions. As you might expect, older versions of marco will not understand newer theme formats. However, newer versions will use old themes. Marco 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 marco 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 3.1 ======================================== Additional predefined variables are added for positioning expressions: frame_x_center: the X center of the entire frame, with respect to the piece currently being drawn. frame_y_center: the Y center of the entire frame, with respect to the piece currently being drawn. New Features in Theme Format Version 3 ====================================== Format version 3 has exactly one new feature; any element in the file can now have a version attribute: version="[<|<=|=>|>] MAJOR.MINOR" (< and > should be to be entity escaped as < and >). If this version check is not met, then the element and its children will be ignored. This allows having alternate sections of the theme file for older and newer version of the Metacity theme format. When placed on the toplevel element, an unsatisfied version check will not just cause the contents of the file to be ignored, it will also cause the lookup of a theme file to proceed on and look for an older format 2 or format 1 file. This allows making a metacity-theme-3.xml file that is only used the format version 3.2 or newer is supported, and using metacity-theme-1.xml for older window managers. New Features in Theme Format Version 2 ====================================== The optional attributes rounded_top_left, rounded_top_right, rounded_bottom_left and rounded_bottom_right on 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. 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: 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 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: s are parsed but ignored. Fallback icons can be specified using . There are two optional arguments, icon and mini_icon. The values of these arguments are identical to that of the filename attribute of . Fallback icons are used when a window does not supply its own icon. If a fallback icon is not specified with , Marco will use a built-in icon, as in metacity-theme-1. The 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: may now take an optional resize attribute, with the same interpretation as the resize attribute on . 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