deKorator is a twin engine that takes several user-defined images and presents them as a window decoration. deKorator expects to find those in a theme. Here is a guide for building such a theme.

In the package

deKorator comes with:


deKorator expects the same directory structure and file names as the ones in default-theme. Every theme file should end with "-theme" (as in "default-theme"), and should contain all the folders that are in default-theme (deco, buttons, masks).


deKorator determines the 4 borders' sizes from:

Property Source
the left border widthmidLeftFrameBg's width
the right border widthmidRightFrameBg's width
the top bar heightmidTitleBg's height
the bottom border heightmidBottomFrameBg's height

All parts that build up a specific border should be in the same width or height correspondingly. An example follows for a window decoration with a 10px high top bar, a 20px wide left border, a 30px wide right border and a 40px high bottom border.

All tiles in the top bar should be 10 pixel high:

All tiles in the left border should be 20 pixel wide:

All tiles in the right border should be 30 pixel wide:

All tiles in the bottom border should be 40 pixel high:

The corner tiles should fit into the tile grid:

Tile Height Width
topLeftCornerBg 10 20
topRightCornerBg 10 30
leftBottomFrameBg 40 20
rightBottomFrameBg 40 30


The button images are separated into background and foreground ones.


The button background uses the leftButtonsBg and the rightButtonsBg tiles. Their height should be the same as the top bar's. The background's repeated horizontally to fit the buttons in.


The width is determined by the button width. This way theme makers can put the buttons as close as they wish. To make space between buttons you can add transparent pixels to the right and left. A button with a smaller height than the top bar's gets centered vertically. To place the button in a custom height use transparent pixels, too.


Masks contain only black and white. Black pixels are subtracted from the decoration.

Image format

All images should be in PNG.