| Back to menu
By default, blueMSX comes with two themes :
- the classic theme (only for small and large
- the DIGIblue Suite-X theme (only for large
Last theme is built with customisable skins (see
the contents of the Themes subdirectory) , so it
means that you can also create new themes to give
a personal feeling to blueMSX !
Some tools such as the Mixer or the Controllers/Keyboard
Editor are also built with a theme.
Each theme is a combination of graphics, controls,
triggers and actions.
The first thing to do when creating a theme is to
create graphics that will serve as support for
different things that happen in the emulator.
You must also imagine an great introduction
picture that will be used when the emulator is in
stop mode, waiting for the running of a MSX
machine. In the DIGIblue theme, it's the monitorpanel.bmp
file. Another picture is required for the
fullscreen mode (see the fullscreen-bk.bmp
The middle of the picture is reserved for the
screen of the emulated machine, it's very
important to take this in account to determine
the position of the different graphics that
compose the theme.
Different types of graphics are used in a theme :
fonts (for texts), icons, leds, buttons, ...
The main tool for the good working of a theme is
the theme.xml file, it contains
all the required controls,
triggers and actions.
Some controls are described below. On the page
you'll find all the other controls; most of them
can be associated with triggers and actions.
Each theme configuration file
contains a main block called "bluemsxtheme".
The field has one attribute, name, which
overrides the concerned directory name
example : <bluemsxtheme name="DIGIblue
The "bluemsxtheme" block can contain
one to four different sub-blocks.
At the beginning of each sub-block, it's very
important to determine the theme mode or the name
of the special window.
If more than 1 page is used by the theme, then
you must precise the type; to enable or disable
the theme or window frame, you can give the value
1 or 0 to the "frame" attribute
Keyboard Editor" type="multipage"
The "handler" attribute is only used
for special windows that are implemented as
plugins like the mixer or the keyboard editor.
For each page of the theme, you must precise
- the dimensions and the name of the page ; example
: <page width="800"
- the position of the menu and the colors used
for the menu ; example : <menu
x="20" y="3" bgcolor="bdbdbd"
- the starting coordinates x and
y of the theme window ; examples
: <emuwindow x="10"
y="65"/> or <emuwindow
To define a section of a page, you must use
"block" and precise the starting
coordinates x and y
of the concerned block
<block x="0" y="64">
include here all the commands for this block
You can determine clip regions
in the theme that you are creating.
They work like the windows media player which
means that the windows frame is visible if you
put the mouse where it is supposed to be and then
it hides when the mouse is moved away.
The clip region can be of any shape. Just add as
many corners as needed, by precising the
coordinates x, y of each corner.
example : <clipregion>
With the value 0 for the attribute "frame",
you don't need to use the clipregion tags unless
you want a more complex clip region of course.
What happens internally is that if frame="0",
the defined clip region will be used if it is
If there is no clip region, a default clip region
will be used that is the size of the theme.
A clip region can correspond to the window of a
tool like the mixer or the keyboard editor. To
make this window draggable, use grabimages.
Using of native Windows
The native windows fonts work like this :
- You need to provide a background image in src.
This image is the boundary of the text and the
main reason why it is required is for redrawing
Since the text is drawn transparent, the
background has to be refreshed before the text is
- You need to specify type="native" in
the font directive
- To set the color of the text, specify the
The width attribute is ignored with native fonts
(the type and fgcolor are ignored with the other
<text x="118" y="553"
Back to menu