Docs

Theme

The UniPad theme system lets you customize the appearance of the play screen. Themes are distributed as ZIP files and can change button images, backgrounds, chain area visuals, and UI colors.

File Structure

my-theme.zip
├── theme.json          (Required) Theme metadata
├── theme_ic.png        (Required) Theme icon/thumbnail
├── playbg.png          Background image
├── btn.png             Pad button (default state)
├── btn_.png            Pad button (pressed state)
├── phantom.png         Guide overlay
├── phantom_.png        Guide overlay variant (optional)
├── custom_logo.png     Custom logo (optional)
├── chainled.png        Chain LED mode image (Mode A)
├── chain.png           Chain default state (Mode B)
├── chain_.png          Chain selected state (Mode B)
├── chain__.png         Chain guide state (Mode B)
└── colors.json         UI color customization (optional)

Required Files

theme.json

A JSON file containing the theme's name, author, and version information.

{
  "name": "My Theme",
  "author": "Your Name",
  "version": "1.0.0"
}
FieldTypeRequiredDescription
namestringOTheme display name
authorstringOCreator name
versionstringVersion (default: "1.0")

theme_ic.png

The icon displayed in the theme selection list. Rendered at 44dp with rounded corners.

  • Recommended size: 132x132px (xxhdpi)
  • Square images recommended

Image Resources

All image files must be in PNG format. Any missing resources will fall back to the app's default theme.

Pad Area

FileDescriptionUsage
playbg.pngFull background of the play screenDisplayed behind the pad grid
btn.pngPad button default stateEach pad in the 8x8 grid
btn_.pngPad button pressed stateWhen a pad is touched/pressed
phantom.pngGuide overlayUsed for autoplay guides, etc.
phantom_.pngGuide overlay variantAlternates with phantom.png in a 2x2 pattern on even-sized pads (optional)
custom_logo.pngCustom logoDisplayed as an overlay on the play screen (optional)

Chain Area

Choose one of two chain modes:

Mode A: LED Mode

Activated when chainled.png exists. Uses the pad button (btn.png) as background, places chainled.png on the phantom layer, and overlays LED colors on top.

FileDescription
chainled.pngChain LED image. LED colors are applied as overlays

Mode B: Drawable Mode

Activated when chainled.png does not exist. Displays different images directly for each state.

FileDescription
chain.pngChain default state / LED channel
chain_.pngChain selected state
chain__.pngAutoplay guide state

Color Customization

colors.json

You can customize the colors of UI elements. All fields are optional; unspecified fields will use default colors. Color values should be hex strings in #RRGGBB or #AARRGGBB format.

{
  "checkbox": "#FF5722",
  "trace_log": "#2196F3",
  "option_window": "#424242",
  "option_window_checkbox": "#FF9800"
}
FieldDescription
checkboxOption checkbox color
trace_logTrace log text color
option_windowOption panel background color
option_window_checkboxCheckbox color inside the option panel

Screen Layout

┌──────────────────────────────────┐
│           playbg.png             │
│  ┌─────────────────────┐ ┌───┐  │
│  │  8x8 Pad Grid       │ │ C │  │
│  │  ┌───┬───┬───┬───┐  │ │ h │  │
│  │  │btn│btn│btn│btn│  │ │ a │  │
│  │  ├───┼───┼───┼───┤  │ │ i │  │
│  │  │btn│btn│btn│btn│  │ │ n │  │
│  │  ├───┼───┼───┼───┤  │ │   │  │
│  │  │btn│btn│btn│btn│  │ │   │  │
│  │  ├───┼───┼───┼───┤  │ │   │  │
│  │  │btn│btn│btn│btn│  │ │   │  │
│  │  └───┴───┴───┴───┘  │ └───┘  │
│  │   phantom overlay    │        │
│  └─────────────────────┘        │
│         custom_logo.png         │
└──────────────────────────────────┘

Examples

Minimal Setup (Required Files Only)

minimal-theme.zip
├── theme.json
└── theme_ic.png

All resources will fall back to the app's default theme. Only the icon and name will appear in the theme list.

Full Setup

full-theme.zip
├── theme.json
├── theme_ic.png
├── colors.json
├── playbg.png
├── btn.png
├── btn_.png
├── phantom.png
├── phantom_.png
├── custom_logo.png
└── chainled.png

Installation

  1. Prepare your files according to the structure above.
  2. Compress all files into a single ZIP file. Files must be located at the ZIP root (do not place them inside a subfolder).
  3. In the UniPad app, go to Theme → Add Theme → Import ZIP file.
  4. Select the ZIP file and it will be automatically validated and installed.

Validation

The following items are validated during import:

  • theme.json must exist at the ZIP root.
  • theme_ic.png must exist at the ZIP root.
  • theme.json must be valid JSON with name and author fields required.

If validation fails, the theme will not be installed and an error message will be displayed.

Design Tips

  • Using transparent backgrounds (alpha channel) in images allows LED colors to blend naturally.
  • btn.png has LED colors overlaid on top, so dark-toned images work best.
  • phantom_.png alternates with phantom.png in a 2x2 pattern when the pad size is even (e.g., 8x8). Use a slightly different design for visual distinction.
  • Chain Mode A (LED mode) dynamically applies LED colors to a single image, allowing diverse states with just one image.
  • Chain Mode B (Drawable mode) gives you direct control over each state's image, enabling more creative freedom in design.