BMPx XML Configuration File

The configuration file is domain/key based. This means there are 'domains' which are contained inside the element <domain/> of which you can think as of 'sets', e.g. one 'set' (for example) for the playlist window, one set for the main window, one set with global settings, etc. Each <domain/> element holds an id attribute which specifies the unique domain identifer.

Each of the domains contains any number of keys, which are held inside a <key/> element, which has an id attribute that specifies the key id. The key id has to be unique per-domain, but not inter-domain unique. A key also has a type attribute which specifies it's value type. The type can be one of string, integer or boolean. For booleans, a value of either 'TRUE' or '1' means true, any other value means false. Unlike the <domain/> element, the <key/> element also holds a text node child which is the key value.

To illustrate everything better, here is a complete exemplary configuration file:

<?xml version="1.0"?>
<bmp version="0.7">

  <domain id="bmp">
    <key id="playlists-path" type="string">/home/user/.bmp/playlists</key>
    <key id="skin" type="string">/home/user/share/bmpx/skins/default</key>
    <key id="titlestring-format" type="string">%p: %t</key>
    <key id="volume" type="integer">0</key>
  </domain>

  <domain id="playlist-window">
    <key id="vsep-width" type="integer">250</key>
    <key id="font" type="string">Bitstream Vera Sans 9</key>
    <key id="pos_x" type="integer">251</key>
    <key id="pos_y" type="integer">148</key>
    <key id="width" type="integer">550</key>
    <key id="height" type="integer">464</key>
    <key id="visible" type="boolean">TRUE</key>
    <key id="current-playlist" type="string">Bossa_Nova_2001</key>
  </domain>

  <domain id="main-window">
    <key id="pos_x" type="integer">801</key>
    <key id="pos_y" type="integer">148</key>
  </domain>

</bmp>

First of all, we have the root node, <bmp>, which also holds the version information of the bmp version that saved this configuration file (note that 0.7 currently refers to the BMPx codebase version, not the mainline BMPx which is at 0.9.7.1 in CVS). This root node contains the domains with their keys.

This example configuration file shows also all domains/keys currently respected by BMPx (BMPx). Following a listing of all domains and keys with explanations.

Domain: 'bmp'

  • string: playlists-path
    Specifies the path where BMPx is saving the playlists at exit. This can be any local path (not URI, currently), e..g $HOME/Desktop/Playlists (although you presently can't use $HOME in the specification, you have to use a fully qualified path). At the moment this cannot be changed trough the GUI so make sure you also actually move your playlists when you change the path.
  • string: skin
    Specifies the fully qualified local path to the currently used skin file or directory (not URI).
    Changeable from the GUI (Preferences section 'Appearance') (Actually you choose the skin trough a list, but what gets stored is the respective's skin file path.)
  • string: titlestring-format
    The titlestring format which specifies how metadata is displayed in the track list.
    Changeable from the GUI (Preferences section 'Playlist').
  • integer: volume
    The saved volume at exit. Integer value, range 0-100.
  • string: file-chooser-path
    The path at which the file selector was the last time it was opened.

Domain: 'playlist-window'

  • integer: vsep-width
    Specifies the width of the right-side of the playlist pane. Do not change this value manually, the results could be unexpected.
  • string: font
    Specifies the font used in the playlist window.
    Changeable from the GUI (Preferences section 'Appearance').
  • integer: pos_x
    Saved x-position of the playlist window.
    Don't change it manually unless needed (error condition or other).
  • integer: pos_y
    Saved y-position of the playlist window.
    Don't change it manually unless needed (error condition or other).
  • integer: width
    Saved width of the playlist window.
    Don't change it manually unless needed (error condition or other).
  • integer: height
    Saved height of the playlist window.
    Don't change it manually unless needed (error condition or other).
  • boolean: visible
    Indicates whether the playlist window should be initially shown after startup.
  • string: current-playlist
    The currently selected playlist name as file basename without extension.

Domain: 'main-window'

  • integer: pos_x
    Saved x-position of the main window.
    Don't change it manually unless needed (error condition or other).
  • integer: pos_y
    Saved y-position of the main window.
    Don't change it manually unless needed (error condition or other).