Creating custom themes

Audacity supports themes via files called ImageCache.png

Note: It is recommended to only use the ImageCache.png to distribute themes, not to author them. This is due to the ImageCache breaking whenever buttons are added or removed from Audacity, which may happen more often in the coming releases.

Making custom themes from source

Audacity stores the source files for the built-in themes in libraries/lib-theme-resources/ as a group of individual files.

To create a theme out of this, use the following steps:

Set up a build environment

  1. get a copy of the audacity source and set up a build environment. Details can be found in BUILDING.md.

Set up a new theme

  1. Copy an existing theme folder in lib-theme-resources to create a base for your own theme and rename it with your theme name (for this example, Yourtheme).

  2. Replace all relevant files with your own themed versions. Some files found in the sources are no longer (or not yet) used in current versions of Audacity. Note: Make sure to use an editor that's capable of handling transparencies - MSPaint will not work. Additionally, make sure to not resize any images.

  3. Create a copy of ClassicThemeAsCeeCode.cpp and edit it:

static const std::vector<unsigned char> ImageCacheAsData {
// Include the generated file full of numbers
#include "YourthemeThemeAsCeeCode.h"
};

static ThemeBase::RegisteredTheme theme{
   /* i18n-hint: the name of a theme */
   { "Yourtheme", XO("Your theme") }, PreferredSystemAppearance::Light, ImageCacheAsData
                                   //PreferredSystemAppearance can be Light, Dark, and HighContrastDark. 
                                   //It gives a hint to the OS what kind of theme you'd prefer for the 
                                   //system-native buttons, but usually is ignored.
};
  1. Open lib-theme-resources' CMakeLists.txt file and add your theme like the others:

foreach( pair
   "classic;ClassicThemeAsCeeCode"
   # ...
   "yourtheme;YourthemeAsCeeCode"

# ...

set( SOURCES
   ClassicThemeAsCeeCode.cpp
   ClassicThemeAsCeeCode.h
   # ...
   YourthemeThemeAsCeeCode.cpp
   YourthemeThemeAsCeeCode.h
  1. In libraries/lib-theme/Theme.cpp's function GUITheme(), add your theme to the list:

     static const Identifier names[] = {
         "classic", "light", "dark", "high-contrast", "yourtheme"
      };

Enable experimental theming options

  1. In src/Experimental.cmake, uncomment the THEME_PREFS flag (remove the # before THEME_PREFS):

   #August 2009 - Theming not locked down enough for a stable release.
   # This turns on the Theme panel in Prefs dialog. It is independent of THEMING.
   THEME_PREFS
  1. Compile and run Audacity.

Export the ImageCache.png

  1. Open the preferences.

  2. In the Interface preferences, untick the option "Blend system and Audacity theme".

  3. Press OK and restart Audacity.

Editing the ImageCache.png directly

If you want to avoid the dance described above, you can also edit the ImageCache.png directly. A copy for the version found in 3.2.x can be found below.

3.2.0 imagecache.zip

But again, the version of the ImageCache in above ZIP will likely only work for one version of Audacity.

For users

Our help pages contain info on how to use custom themes as a user.

Last updated