D.1. Overview

It does not really have anything to do with the skin format, but you should know that MPlayer has no builtin skin, so at least one skin must be installed in order to be able to use the GUI.

D.1.1. Directories

The directories searched for skins are (in order):

  1. $(DATADIR)/Skin/

  2. $(PREFIX)/share/mplayer/Skin/

  3. ~/.mplayer/Skin/

Note that the first path may vary according to the way MPlayer was configured (see the --prefix and --datadir arguments of the configure script).

Every skin is installed into its own directory under one of the directories listed above, for example:

$(PREFIX)/share/mplayer/Skin/default/

D.1.2. Image formats

Images must be truecolor (24 or 32 bpp) PNGs.

In the main window and in the playbar (see below) you can use images with `transparency': Regions filled with the color #FF00FF (magenta) are fully transparent when viewed by MPlayer. This means that you can even have shaped windows if your X server has the XShape extension.

D.1.3. Skin components

Skins are quite free-format (unlike the fixed-format skins of Winamp/XMMS, for example), so it is up to you to create something great.

Currently there are four windows to be decorated: the main window, the subwindow, the playbar, and the skin menu (which can be activated by a right click).

  • The main window and/or the playbar is where you can control MPlayer. The background of the window is an image. Various items can (and must) be placed in the window: buttons, potmeters (sliders) and labels. For every item, you must specify its position and size.

    A button has three states (pressed, released, disabled), thus its image must be divided into three parts vertically. See the button item for details.

    A potmeter (mainly used for the seek bar and volume/balance control) can have any number of phases by dividing its image into different parts below each other. See hpotmeter and potmeter for details.

    Labels are a bit special: The characters needed to draw them are taken from an image file, and the characters in the image are described by a font description file. The latter is a plain text file which specifies the x,y position and size of each character in the image (the image file and its font description file form a font together). See dlabel and slabel for details.

    Note

    All images can have full transparency as described in the section about image formats. If the X server doesn't support the XShape extension, the parts marked transparent will be black. If you'd like to use this feature, the width of the main window's background image must be dividable by 8.

  • The subwindow is where the movie appears. It can display a specified image if there is no movie loaded (it is quite boring to have an empty window :-)) Note: transparency is not allowed here.

  • The skin menu is just a way to control MPlayer by means of menu entries. Two images are required for the menu: one of them is the base image that shows the menu in its normal state, the other one is used to display the selected entries. When you pop up the menu, the first image is shown. If you move the mouse over the menu entries, the currently selected entry is copied from the second image over the menu entry below the mouse pointer (the second image is never shown as a whole).

    A menu entry is defined by its position and size in the image (see the section about the skin menu for details).

There is an important thing not mentioned yet: For buttons, potmeters and menu entries to work, MPlayer must know what to do if they are clicked. This is done by messages (events). For these items you must define the messages to be generated when they are clicked.

D.1.4. Files

You need the following files to build a skin:

  • The configuration file named skin tells MPlayer how to put different parts of the skin together and what to do if you click somewhere in the window.

  • The background image for the main window.

  • Images for the items in the main window (including one or more font description files needed to draw labels).

  • The image to be displayed in the subwindow (optional).

  • Two images for the skin menu (they are needed only if you want to create a menu).

With the exception of the skin configuration file, you can name the other files whatever you want (but note that font description files must have a .fnt extension).