{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": false,
  "id": "https://json.schemastore.org/tmuxinator.json",
  "properties": {
    "defaults": {
      "type": "object"
    },
    "name": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "minLength": 1
        }
      ]
    },
    "project_name": {
      "description": "Name of project root (deprecated, use `name`)",
      "type": "string"
    },
    "root": {
      "type": "string"
    },
    "project_root": {
      "description": "Name of project root (deprecated, use `root`)",
      "type": "string"
    },
    "socket_name": {
      "description": "Optional tmux socket.",
      "type": "string"
    },
    "on_project_start": {
      "description": "Runs on project start, always.",
      "type": "string"
    },
    "on_project_first_start": {
      "description": "Run on project start, the first time.",
      "type": "string"
    },
    "on_project_restart": {
      "description": "Run on project start, after the first time.",
      "type": "string"
    },
    "on_project_exit": {
      "description": "Run on project exit (detaching from tmux session).",
      "type": "string"
    },
    "on_project_stop": {
      "description": "Run on project stop.",
      "type": "string"
    },
    "pre": {
      "description": "Runs before everything (deprecated).",
      "type": "string"
    },
    "post": {
      "description": "Runs after everything (deprecated).",
      "type": "string"
    },
    "rbenv": {
      "description": "Specify version for rbenv (deprecated)",
      "type": "string"
    },
    "cli_args": {
      "description": "Pass arguments to tmux (deprecated)",
      "type": "string"
    },
    "tabs": {
      "description": "Specify tabs (deprecated)",
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "object"
          }
        ]
      }
    },
    "pre_window": {
      "description": "Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions.",
      "type": "string"
    },
    "tmux_options": {
      "description": "Pass command line options to tmux. Useful for specifying a different tmux.conf.",
      "type": "string"
    },
    "tmux_command": {
      "description": "Change the command to call tmux.  This can be used by derivatives/wrappers like byobu.",
      "type": "string"
    },
    "startup_window": {
      "description": "Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ]
    },
    "startup_pane": {
      "description": "Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used.",
      "type": "integer"
    },
    "attach": {
      "description": "Controls whether the tmux session should be attached to automatically. Defaults to true.",
      "type": "boolean",
      "default": true
    },
    "tmux_detached": {
      "description": "Deprecated. Use `attach`",
      "type": "boolean"
    },
    "windows": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "object",
            "properties": {
              "pre": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "layout": {
                "description": "The layout setting gets handed down to tmux directly, so you can choose from one of the five tmux standard layouts or specify your own.",
                "type": "string"
              },
              "panes": {
                "description": "Panes are optional and are children of window entries.",
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                }
              }
            }
          }
        ]
      }
    }
  },
  "type": "object"
}
