MetacityThemingLimitation
From Mandriva Community Wiki
[edit] Window Manager theme limitation for GNOME (Metacity)
Here are what are needed (ie what need to be designed by graphic team) to implement a Mandrake theme for GNOME window manager (ie window border). This is based on http://developer.gnome.org/doc/tutorials/metacity/metacity-themes.html
Currently, there are 6 differents types of window:
- normal : a normal window (just like MCC, or any other application)
- dialog : a dialog window (like a preference sub-window)
- modal dialog : same as above, except this dialog is modal : it prevent user to access the application main window
- menu : when you have a window only window (ie a floating menu)
- utility : small window for utilities, like a floating toolbar
- border window : this is for window without any decoration (like xmms or when a window is displayed in full-screen mode)
We don't have to implement the 6 window types as visually different types but we can..
For each type of window, there are 3 independent possible states :
- window has focus (or not)
- window is (un)maximized / (un)shaded (only the window top bar is visible) or both
- window can be vertically, horizontaly or both resized..
Windows can be either rectangular (with 90° angle) or rounded (can't be customized, rounding is hardcoded).
On the window bar, there are 6 positions available for button:
- 3 on the left side of the bar
- 3 on the right side of the bar
The following function are available for buttons on the bar:
- close
- maximize
- minimize
- menu
each in 3 states : normal, pressed and prelight. It is not possible to do transition effect between one state to another or to do animations when in a specific state.
The window menu can have the following buttons near text entry :
- close
- maximize
- minimize
- unmaximize
each in the following state (normal, prelight, active, selected, insensitive)
It is not possible to add a "resize" grip button on the window bar.
The following graphical primitives are available to compose the theme :
- line
- rectangle
- arc
- apply a color on a image (or any other operations)
- draw a linear gradient (either vertical, horizontal or diagonal)
- images
- small arrow (like the one in scrollbars)
Alpha layers are supported when combining those primitives to create window borders.
Transparency with system background is not supported.

