Advanced themes

Create and use custom JSON-based themes.

Getting to your themes

Navigate to Nuclear → Preferences → Themes and look for the "Advanced themes" dropdown. Any JSON files you've added to your themes folder will show up here, ready to apply.

Your themes folder lives at:

  • Linux: ~/.local/share/com.nuclearplayer/themes

  • macOS: ~/Library/Application Support/com.nuclearplayer/themes

  • Windows: %APPDATA%/com.nuclearplayer/themes

When you select a theme, it applies instantly. If you edit the file while it's active, you'll see your changes update live in the app.

Creating your theme

Making a custom theme is straightforward:

  1. Create a new .json file with any name you like. Copy one of the existing themes or the template at the end of this manual.

  2. Save it to your themes folder (see paths above).

  3. Select it from the Advanced themes dropdown in Nuclear.

Here's the basic structure to get you started:

{
  "version": 1,
  "name": "My Theme",
  "vars": { /* your light mode colors and settings */ },
  "dark": { /* your dark mode colors and settings */ }
}

What you can customize

Colors

  • background, background-secondary, background-input

  • foreground, foreground-secondary, foreground-input

  • primary

  • border, border-input, ring

  • accent-green, accent-yellow, accent-purple, accent-blue, accent-orange, accent-cyan, accent-red

Typography

  • font-family (example: "'Inter', system-ui, -apple-system, sans-serif")

  • font-family-heading

  • font-weight-normal, font-weight-bold, font-weight-extra-bold

Shape & visual effects

  • radius-sm, radius-md, radius-lg

  • shadow-color, shadow-x, shadow-y, shadow-blur

A few helpful notes

  • version must always be 1

  • Put your light mode values in vars and dark mode values in dark

  • Variable names don't need the -- prefix—just use the name itself

  • You can use hex colors (#ff0000), OKLCH (oklch(70% 0.15 30)), or any valid CSS color

  • To reset everything back to default, just choose "Default" from the dropdown

Template

Here's a complete template with Nuclear's default values that you can copy and customize:

Last updated