Skip to content

Creating custom themes

Timothy Johnson edited this page Oct 1, 2024 · 18 revisions

WinDynamicDesktop includes the macOS dynamic desktop themes by default, and you can download community created themes here. If you want to use a different set of wallpaper images, follow the instructions below to create your own custom theme.

Note: See this video from AddictiveTipsTV for a summary of the process: https://youtu.be/_pnF66tctQo?si=7-eFiIh9OI2uutFe

Image files

The images used by your theme can be any file format that is standard for Windows (JPEG, PNG, BMP, GIF, etc.). If you want to use a set of HEIC images (the format used by macOS for dynamic wallpapers), they need to be converted to a different format because HEIC is not natively supported by Windows. You can easily convert them to JPEG format with this online image converter.

Each of the images you want to use in your theme must have the same filename, except for a number to distinguish them (e.g., mojave_dynamic_1.jpeg, mojave_dynamic_2.jpeg, ... mojave_dynamic_16.jpeg). They should all be in the same folder, or they can also be bundled in a ZIP file and uploaded to the Internet if you want to make your theme publicly available.

Theme file

Theme files use the JSON format, which is human readable and easy to write. A nice online editor for JSON is available here, which validates the file as you type it.

The name of the JSON file must be the name of the theme, with any spaces replaced by underscores, plus the .json extension (e.g., Mojave_Desert.json). Here are some sample theme files to show their format:

4-segment theme

{
  "imageFilename": "Big_Sur_*.jpg",
  "imageCredits": "Apple",
  "sunriseImageList": [
    3,
    4
  ],
  "dayImageList": [
    1,
    5,
    6
  ],
  "sunsetImageList": [
    7,
    8
  ],
  "nightImageList": [
    2
  ]
}
Sample Day Segment Images Shown
Sunrise (06/15 05:30-07:00) #3, 4 (45 min each)
Day (06/15 07:00-18:30) #1, 5, 6 (3.83 hr each)
Sunset (06/15 18:30-20:00) #7, 8 (45 min each)
Night (06/15 20:00 - 06/16 05:30) #2 (9.5 hr)

2-segment theme

{
  "imageFilename": "Big_Sur_Abstract_*.jpg",
  "imageCredits": "Apple",
  "dayImageList": [
    1
  ],
  "nightImageList": [
    2
  ]
}
Sample Day Segment Images Shown
Day (12/01 06:00-17:00) #1 (11 hr)
Night (12/01 17:00 - 12/02 06:00) #2 (13 hr)

Supported values

The following properties can be defined in a theme file:

  • displayName - String containing the user friendly name of the theme (can contain spaces). If not present, the theme name will be derived from the JSON filename.
  • imageFilename (required) - String containing the filename of each wallpaper image, with an asterisk (*) substituted for the image number (e.g., mojave_dynamic_*.jpeg).
  • imageCredits (required) - String containing the name of the person or company that the images should be credited to (e.g., Apple, Bob Ross).
  • dayHighlight - Image number to show on left side of theme preview thumbnail
  • nightHighlight - Image number to show on right side of theme preview thumbnail
  • sunriseImageList - Array of numbers listing the image numbers to display throughout the sunrise period (from when the sun is 6 degrees below to 6 degrees above the horizon).
  • dayImageList (required) - Array of numbers listing the image numbers to display throughout the day (between sunrise and sunset). They will display in the order you list them, each for the same length of time. If you have 12 images listed and there are 12 hours between sunrise and sunset, each image will show for an hour.
  • sunsetImageList - Array of numbers listing the image numbers to display throughout the sunset period (from when the sun is 6 degrees above to 6 degrees below the horizon).
  • nightImageList (required) - Array of numbers listing the image numbers to display throughout the night (between sunset and sunrise). The behavior is identical to dayImageList which is described above.

Theme package

If you want to package your theme for others to use, rename the theme file to theme.json. Then add your image files and theme file into a ZIP archive. The ZIP file should have the same name you used for your theme file earlier (theme name with underscores instead of spaces, e.g. Mojave_Desert.zip).

Managing custom themes

After you have created your JSON file, open the theme manager in WinDynamicDesktop and click the "Import from file..." button. Select the file for your custom theme and you should now see it added to the list of themes. If you want to delete a custom theme, right click on it in the list of themes and select "Delete permanently".

If you have created a custom theme and would like it to be added to the list of community created themes on the WDD Themes site, you can submit it following the steps here.