Theme Assets, Fonts, and Resource Paths
Written By launchbox
Last updated About 1 month ago
LaunchBox Desktop themes can include their own images, fonts, plugins, and other supporting files. These assets live inside the active theme folder under LBThemes, and theme XAML can reference them with LaunchBox-specific path placeholders.
Using those placeholders is important because LaunchBox may be installed in different locations for different users. Hard-coded absolute paths will usually break when the theme is shared.
Theme Folder Location
LaunchBox Desktop themes live in the LBThemes folder inside the LaunchBox root folder.
LaunchBox\LBThemes\[Theme Name]\ Views\ Images\ Fonts\ Plugins\The active theme is selected from Tools > Manage > LaunchBox Themes and Media. When LaunchBox needs a themed view, it looks in the active theme's Views folder.
LBThemes\[Theme Name]\Views\MainView.xaml LBThemes\[Theme Name]\Views\SideBarView.xaml LBThemes\[Theme Name]\Views\BoxesContentView.xamlIf the active theme folder cannot be found, LaunchBox falls back to the Default theme. If a specific view cannot be found, LaunchBox attempts to load the Default version of that view.
Standard Theme Folders
A LaunchBox theme usually uses these folders:
The Default theme ships with Views, Images, and Fonts. Custom themes can follow the same structure.
LAUNCHBOX_THEME_FOLDER
Use LAUNCHBOX_THEME_FOLDER when referencing files that are inside the current theme folder. Before LaunchBox loads the XAML, it replaces this placeholder with a file URI pointing to the active theme folder.
LAUNCHBOX_THEME_FOLDER/Images/Header.png LAUNCHBOX_THEME_FOLDER/Fonts/Poppins-Regular.ttf#PoppinsThis is the safest way to reference theme-specific assets because the path follows the active theme wherever the user's LaunchBox installation is located.
Image Example
<Image Source="LAUNCHBOX_THEME_FOLDER/Images/Logo.png" Stretch="Uniform" />Background Example
<Grid> <Grid.Background> <ImageBrush ImageSource="LAUNCHBOX_THEME_FOLDER/Images/Background.jpg" Stretch="UniformToFill" /> </Grid.Background></Grid>Font Example
<TextBlock Text="{Binding Title}" FontFamily="LAUNCHBOX_THEME_FOLDER/Fonts/Poppins-Bold.ttf#Poppins Bold" />LAUNCHBOX_ROOT_FOLDER
Use LAUNCHBOX_ROOT_FOLDER when you need to reference files from the LaunchBox root folder rather than the current theme folder.
LAUNCHBOX_ROOT_FOLDER/Images/Platforms/Nintendo Entertainment System/Banner/example.pngMost theme-specific files should use LAUNCHBOX_THEME_FOLDER. Use LAUNCHBOX_ROOT_FOLDER only when the file is expected to come from the user's LaunchBox installation, media folders, or another shared LaunchBox folder.
Legacy Site-of-Origin Paths
LaunchBox also converts old pack://siteoforigin:,,, references to the LaunchBox root folder when loading theme XAML.
pack://siteoforigin:,,,/LBThemes/[Theme Name]/Images/File.pngThis exists for compatibility with older themes. New themes should prefer LAUNCHBOX_THEME_FOLDER and LAUNCHBOX_ROOT_FOLDER because they are clearer and easier to move between installations.
Referencing Fonts
Theme fonts usually belong in the theme's Fonts folder. In XAML, reference the font file and then include the font family name after the # symbol.
FontFamily="LAUNCHBOX_THEME_FOLDER/Fonts/Poppins-Regular.ttf#Poppins"The family name must match the actual font family name inside the font file. If the file name and family name are different, use the family name that Windows reports for the font.
When in doubt, test the font in LaunchBox after restarting the application. If the font does not apply, the file path or family name is usually the problem.
Referencing Images
Theme images can be referenced directly from XAML controls such as Image, ImageBrush, and custom LaunchBox controls that accept image paths.
<Image Source="LAUNCHBOX_THEME_FOLDER/Images/Controller.png" />For theme artwork, keep files inside the theme's Images folder. This keeps the theme portable and avoids depending on files that may not exist in another user's LaunchBox installation.
Theme-Specific Plugins
LaunchBox checks for a Plugins folder inside the active LaunchBox theme folder.
LBThemes\[Theme Name]\PluginsIf that folder exists, LaunchBox loads plugins from it for that theme. This is useful when a theme needs custom controls or behavior that cannot be done with XAML alone.
Use theme-specific plugins only when necessary. For most visual changes, XAML, images, fonts, bindings, and existing LaunchBox controls are enough.
What Gets Loaded From Views
LaunchBox loads themed XAML from:
LBThemes\[Theme Name]\Views\[ViewName].xamlFor example:
LBThemes\[Theme Name]\Views\MainView.xaml LBThemes\[Theme Name]\Views\GameDetailsView.xaml LBThemes\[Theme Name]\Views\PlatformFiltersDetailsView.xamlIf PlatformFiltersDetailsView.xaml is missing, LaunchBox can fall back to GameDetailsView.xaml for that view. For other missing views, LaunchBox falls back to the Default theme when possible.
Best Practices
Keep custom images in
LBThemes\[Theme Name]\Images.Keep custom fonts in
LBThemes\[Theme Name]\Fonts.Keep view XAML files in
LBThemes\[Theme Name]\Views.Use
LAUNCHBOX_THEME_FOLDERfor theme-specific files.Use
LAUNCHBOX_ROOT_FOLDERonly for files outside the theme folder.Avoid absolute paths such as
C:\LaunchBox\....Avoid referencing assets from another theme folder.
Restart LaunchBox after changing fonts, plugins, or loaded view files.
Related Articles
In Short
Put theme assets inside the theme folder and reference them with LaunchBox's path placeholders. Use LAUNCHBOX_THEME_FOLDER for images, fonts, and files bundled with the theme. Use LAUNCHBOX_ROOT_FOLDER only when you intentionally need something from the wider LaunchBox installation. This keeps themes portable, easier to share, and less likely to break on another user's machine.