{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/zigai/pi-tweaks/master/packages/pi-status-bar/config.schema.json",
  "title": "Pi Status Bar settings",
  "description": "Settings for active, idle, and rotating status-bar content.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "type": "string",
      "default": "./schemas/pi-status-bar.schema.json",
      "description": "JSON Schema used by editors for this settings file."
    },
    "statusBar": {
      "type": "object",
      "properties": {
        "active": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "Custom active status text."
            },
            "spinner": {
              "type": "object",
              "properties": {
                "frames": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Spinner frames displayed while Pi is active."
                }
              },
              "additionalProperties": false
            },
            "timer": {
              "type": "object",
              "properties": {
                "visible": {
                  "type": "boolean",
                  "default": true,
                  "description": "Show the active-run timer."
                },
                "paused": {
                  "type": "boolean",
                  "default": false,
                  "description": "Display the active-run timer as paused."
                }
              },
              "default": {},
              "additionalProperties": false
            }
          },
          "default": {},
          "additionalProperties": false
        },
        "idle": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "Custom idle status text."
            },
            "visible": {
              "type": "boolean",
              "default": true,
              "description": "Show the status bar while Pi is idle."
            },
            "showLastRunSummary": {
              "type": "boolean",
              "default": true,
              "description": "Show the previous run summary while idle."
            }
          },
          "default": {},
          "additionalProperties": false
        }
      },
      "default": {},
      "additionalProperties": false
    },
    "rightMessages": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false,
          "description": "Enable rotating messages on the right side."
        },
        "intervalMs": {
          "type": "integer",
          "minimum": 1,
          "default": 10000,
          "description": "Delay between rotating messages in milliseconds."
        },
        "minGap": {
          "type": "integer",
          "minimum": 0,
          "default": 4,
          "description": "Minimum spaces between repeated scrolling messages."
        },
        "minScrollCycles": {
          "type": "integer",
          "minimum": 1,
          "default": 1,
          "description": "Minimum completed scroll cycles before advancing."
        },
        "scrollColumnIntervalMs": {
          "type": "integer",
          "minimum": 1,
          "default": 120,
          "description": "Delay between horizontal scroll columns in milliseconds."
        },
        "dimmed": {
          "type": "boolean",
          "default": true,
          "description": "Render rotating messages with dim styling."
        },
        "italic": {
          "type": "boolean",
          "default": true,
          "description": "Render rotating messages with italic styling."
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "description": "Inline rotating status messages."
        },
        "messagesFile": {
          "type": "string",
          "minLength": 1,
          "x-control": "path",
          "description": "Path to a newline-delimited messages file."
        }
      },
      "default": {},
      "additionalProperties": false
    }
  }
}
