Skin Template: Steam Customizer Code format - SteamCustomizer/Editor GitHub Wiki

Introduction

Each skin has a file called skin.json in the root of the folder.
This file is an important link between visual representation and customization information.

Format

Steam Customizer Code is heavily based on JSON data-interchange format.

NOTICE: In contrast to JSON, Steam Customizer Code is capable of storing comments inside of it, despite being named as *.json

Such file consists of 6 core parts:

{
  "version": <string>,
  "metadata": <object>,
  "variables": <object>,
  "groups": <object>,
  "views": <object>,
  "files": <object>
}

Version

Skin version number.
Ideally this should be convertible into a number and should be updated in an increasing order.

Metadata

Metadata object:

{
  "skinBase": <string, required>,
  "folderName": <string, required>,
  "name": <string, required>,
  "author": <string, required>,
  "authorUrl": <string>,
  "skinURL": <string>,
  "description": <string>,
  "themeVariable": <string>
}

skinBase Required
Name of the skin on which to base this skin on ("default" - base on Valve default Steam skin)

NOTICE: This could be used to base customized skin based on custom skin. This enabled to create customizable modifications of already created skins!

folderName Required
Name of the generated skin folder name in .../Steam/skins/ folder

name Required
Name of the skin, rendered in GUI

author Required
Author name, used as extra metadata in manager

authorUrl
Author site link, used as extra metadata in manager

skinURL
Original skin site link, used as extra metadata in manager

description
Description of the skin, used as extra metadata in manager

themeVariable
Color variable name which value would be used as skin theme color

Variables

Variables are the core of Steam Customizer templating.
Read about the whole format here.

Groups

Groups are required for variable organization.
They reside in groups object and has a format as follows:

"groups":
{
  <group_name>:
  {
    [
      "name":
      {
        "default": <string>[, <language_name>: <string>, ...]
      },
    ]
    "variables": [ <variable_name>[, <variable_name>, ...] ]
  }
}

Which could be described as such:
There is a group object, where each property is an object with at least variables property defined as an array of variable names to include in this group.
Additionally each group can have a name object, which should contain default (fallback) name and any number of additional localized names.

Views

Files

⚠️ **GitHub.com Fallback** ⚠️