TerminalSettingsSchema.json

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "allOf": [
    {
      "$ref": "#/definitions/Globals"
    },
    {
      "additionalItems": true,
      "required": [
        "profiles",
        "schemes",
        "defaultProfile"
      ],
      "properties": {
        "profiles": {
          "oneOf": [
            {
              "$ref": "#/definitions/ProfilesObject"
            }
          ]
        },
        "schemes": {
          "$ref": "#/definitions/SchemeList"
        }
      }
    }
  ],
  "definitions": {
    "Profile": {
      "description": "Properties specific to a unique profile.",
      "additionalProperties": false,
      "type": "object",
      "properties": {
        "source": {
          "type": [
            "string",
            "null"
          ],
          "description": "Stores the name of the profile generator that originated this profile."
        },
        "selectionBackground": {
          "description": "Sets the background color of selected text. Overrides selectionBackground set in the color scheme. Uses hex color format: \"#rrggbb\".",
          "oneOf": [
            {
              "$ref": "#/definitions/Color"
            },
            {
              "type": "null"
            }
          ]
        },
        "foreground": {
          "description": "Sets the text color. Overrides \"foreground\" from the color scheme. Uses hex color format: \"#rrggbb\".",
          "default": "#cccccc",
          "$ref": "#/definitions/Color",
          "type": [
            "string",
            "null"
          ]
        },
        "backgroundImage": {
          "type": [
            "string",
            "null"
          ],
          "description": "Sets the file location of the image to draw over the window background."
        },
        "colorScheme": {
          "description": "Name of the terminal color scheme to use. Color schemes are defined under \"schemes\".",
          "default": "Campbell",
          "type": "string"
        },
        "startingDirectory": {
          "type": "string",
          "description": "The directory the shell starts in when it is loaded."
        },
        "padding": {
          "description": "Sets the padding around the text within the window. Can have three different formats:\n -\"#\" sets the same padding for all sides \n -\"#, #\" sets the same padding for left-right and top-bottom\n -\"#, #, #, #\" sets the padding individually for left, top, right, and bottom.",
          "default": "8, 8, 8, 8",
          "pattern": "^-?[0-9]+(\\.[0-9]+)?( *, *-?[0-9]+(\\.[0-9]+)?|( *, *-?[0-9]+(\\.[0-9]+)?){3})?$",
          "type": "string"
        },
        "scrollbarState": {
          "description": "Defines the visibility of the scrollbar.",
          "default": "visible",
          "enum": [
            "visible",
            "hidden"
          ],
          "type": "string"
        },
        "antialiasingMode": {
          "description": "Controls how text is antialiased in the renderer. Possible values are \"grayscale\", \"cleartype\" and \"aliased\". Note that changing this setting will require starting a new terminal instance.",
          "default": "grayscale",
          "enum": [
            "grayscale",
            "cleartype",
            "aliased"
          ],
          "type": "string"
        },
        "background": {
          "description": "Sets the background color of the text. Overrides \"background\" from the color scheme. Uses hex color format: \"#rrggbb\".",
          "default": "#0c0c0c",
          "$ref": "#/definitions/Color",
          "type": [
            "string",
            "null"
          ]
        },
        "cursorColor": {
          "description": "Sets the color of the cursor. Overrides the cursor color from the color scheme. Uses hex color format: \"#rrggbb\".",
          "oneOf": [
            {
              "$ref": "#/definitions/Color"
            },
            {
              "type": "null"
            }
          ]
        },
        "fontFace": {
          "description": "Name of the font face used in the profile.",
          "default": "Cascadia Mono",
          "type": "string"
        },
        "icon": {
          "type": [
            "string",
            "null"
          ],
          "description": "Image file location of the icon used in the profile. Displays within the tab and the dropdown menu."
        },
        "name": {
          "description": "Name of the profile. Displays in the dropdown menu.",
          "minLength": 1,
          "type": "string"
        },
        "backgroundImageOpacity": {
          "description": "Sets the transparency of the background image. Accepts floating point values from 0-1.",
          "default": 1.0,
          "minimum": 0.0,
          "type": "number",
          "maximum": 1.0
        },
        "tabTitle": {
          "type": [
            "string",
            "null"
          ],
          "description": "If set, will replace the name as the title to pass to the shell on startup. Some shells (like bash) may choose to ignore this initial value, while others (cmd, powershell) may use this value over the lifetime of the application."
        },
        "snapOnInput": {
          "description": "When set to true, the window will scroll to the command input line when typing. When set to false, the window will not scroll when you start typing.",
          "default": true,
          "type": "boolean"
        },
        "closeOnExit": {
          "description": "Sets how the profile reacts to termination or failure to launch. Possible values:\n -\"graceful\" (close when exit is typed or the process exits normally)\n -\"always\" (always close)\n -\"never\" (never close).\ntrue and false are accepted as synonyms for \"graceful\" and \"never\" respectively.",
          "default": "graceful",
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "never",
                "graceful",
                "always"
              ]
            },
            {
              "type": "boolean"
            }
          ]
        },
        "hidden": {
          "description": "If set to true, the profile will not appear in the list of profiles. This can be used to hide default profiles and dynamically generated profiles, while leaving them in your settings file.",
          "default": false,
          "type": "boolean"
        },
        "fontSize": {
          "description": "Size of the font in points.",
          "default": 12,
          "type": "integer",
          "minimum": 1
        },
        "historySize": {
          "description": "The number of lines above the ones displayed in the window you can scroll back to.",
          "default": 9001,
          "type": "integer",
          "minimum": -1
        },
        "commandline": {
          "type": "string",
          "description": "Executable used in the profile."
        },
        "backgroundImageStretchMode": {
          "description": "Sets how the background image is resized to fill the window.",
          "default": "uniformToFill",
          "enum": [
            "fill",
            "none",
            "uniform",
            "uniformToFill"
          ],
          "type": "string"
        },
        "useAcrylic": {
          "description": "When set to true, the window will have an acrylic background. When set to false, the window will have a plain, untextured background.",
          "default": false,
          "type": "boolean"
        },
        "backgroundImageAlignment": {
          "description": "Sets how the background image aligns to the boundaries of the window. Possible values: \"center\", \"left\", \"top\", \"right\", \"bottom\", \"topLeft\", \"topRight\", \"bottomLeft\", \"bottomRight\"",
          "default": "center",
          "enum": [
            "bottom",
            "bottomLeft",
            "bottomRight",
            "center",
            "left",
            "right",
            "top",
            "topLeft",
            "topRight"
          ],
          "type": "string"
        },
        "experimental.retroTerminalEffect": {
          "type": "boolean",
          "description": "When set to true, enable retro terminal effects. This is an experimental feature, and its continued existence is not guaranteed."
        },
        "cursorShape": {
          "description": "Sets the shape of the cursor. Possible values:\n -\"bar\" ( ???, default )\n -\"emptyBox\" ( ??? )\n -\"filledBox\" ( ??? )\n -\"underscore\" ( ??? )\n -\"vintage\" ( ??? )",
          "default": "bar",
          "enum": [
            "bar",
            "emptyBox",
            "filledBox",
            "underscore",
            "vintage"
          ],
          "type": "string"
        },
        "guid": {
          "description": "Unique identifier of the profile. Written in registry format: \"{00000000-0000-0000-0000-000000000000}\".",
          "$ref": "#/definitions/ProfileGuid"
        },
        "cursorHeight": {
          "description": "Sets the percentage height of the cursor starting from the bottom. Only works when cursorShape is set to \"vintage\". Accepts values from 25-100.",
          "minimum": 25,
          "default": 25,
          "type": [
            "integer",
            "null"
          ],
          "maximum": 100
        },
        "suppressApplicationTitle": {
          "description": "When set to true, tabTitle overrides the default title of the tab and any title change messages from the application will be suppressed. When set to false, tabTitle behaves as normal.",
          "default": false,
          "type": "boolean"
        },
        "acrylicOpacity": {
          "description": "When useAcrylic is set to true, it sets the transparency of the window for the profile. Accepts floating point values from 0-1 (default 0.5).",
          "default": 0.5,
          "minimum": 0,
          "type": "number",
          "maximum": 1
        }
      }
    },
    "NewTabAction": {
      "description": "Arguments corresponding to a New Tab Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "$ref": "#/definitions/NewTerminalArgs"
        },
        {
          "properties": {
            "action": {
              "type": "string",
              "pattern": "newTab"
            }
          }
        }
      ]
    },
    "ShortcutAction": {
      "type": "object",
      "required": [
        "action"
      ],
      "properties": {
        "action": {
          "description": "The action to execute",
          "$ref": "#/definitions/ShortcutActionName"
        }
      }
    },
    "KeyChordSegment": {
      "description": "The string should fit the format \"[ctrl+][alt+][shift+]<keyName>\", where each modifier is optional, separated by + symbols, and keyName is either one of the names listed in the table below, or any single key character. The string should be written in full lowercase.\nbackspace\tBACKSPACE key\ntab\tTAB key\nenter\tENTER key\nesc, escape\tESC key\nspace\tSPACEBAR\npgup, pageup\tPAGE UP key\npgdn, pagedown\tPAGE DOWN key\nend\tEND key\nhome\tHOME key\nleft\tLEFT ARROW key\nup\tUP ARROW key\nright\tRIGHT ARROW key\ndown\tDOWN ARROW key\ninsert\tINS key\ndelete\tDEL key\nnumpad_0-numpad_9, numpad0-numpad9\tNumeric keypad keys 0 to 9. Can't be combined with the shift modifier.\nnumpad_multiply\tNumeric keypad MULTIPLY key (*)\nnumpad_plus, numpad_add\tNumeric keypad ADD key (+)\nnumpad_minus, numpad_subtract\tNumeric keypad SUBTRACT key (-)\nnumpad_period, numpad_decimal\tNumeric keypad DECIMAL key (.). Can't be combined with the shift modifier.\nnumpad_divide\tNumeric keypad DIVIDE key (/)\nf1-f24\tF1 to F24 function keys\nplus\tADD key (+)",
      "pattern": "^(?<modifier>(ctrl|alt|shift)(?:\\+(ctrl|alt|shift)(?<!\\2))?(?:\\+(ctrl|alt|shift)(?<!\\2|\\3))?\\+)?(?<key>[^\\s+]|backspace|tab|enter|esc|escape|space|pgup|pageup|pgdn|pagedown|end|home|left|up|right|down|insert|delete|(?<!shift.+)(?:numpad_?[0-9]|numpad_(?:period|decimal))|numpad_(?:multiply|plus|add|minus|subtract|divide)|f[1-9]|f1[0-9]|f2[0-4]|plus)$",
      "type": "string"
    },
    "ShortcutActionName": {
      "type": "string",
      "enum": [
        "adjustFontSize",
        "closePane",
        "closeTab",
        "closeWindow",
        "copy",
        "duplicateTab",
        "moveFocus",
        "newTab",
        "nextTab",
        "openNewTabDropdown",
        "openSettings",
        "paste",
        "prevTab",
        "resetFontSize",
        "resizePane",
        "scrollDown",
        "scrollDownPage",
        "scrollUp",
        "scrollUpPage",
        "splitPane",
        "switchToTab",
        "toggleFullscreen",
        "find",
        "unbound"
      ]
    },
    "ProfileList": {
      "description": "A list of profiles and the properties specific to each.",
      "items": {
        "required": [
          "guid",
          "name"
        ],
        "$ref": "#/definitions/Profile"
      },
      "type": "array"
    },
    "NewTerminalArgs": {
      "type": "object",
      "properties": {
        "profile": {
          "type": "string",
          "description": "Either the GUID or name of a profile to use, instead of launching the default"
        },
        "tabTitle": {
          "type": "string",
          "description": "An initial tabTitle to use instead of the profile's"
        },
        "startingDirectory": {
          "type": "string",
          "description": "A startingDirectory to use instead of the profile's"
        },
        "index": {
          "type": "integer",
          "description": "The index of the profile in the new tab dropdown (starting at 0)"
        },
        "commandline": {
          "type": "string",
          "description": "A commandline to use instead of the profile's"
        }
      }
    },
    "Color": {
      "default": "#",
      "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$",
      "format": "color",
      "type": "string"
    },
    "SplitPaneAction": {
      "description": "Arguments corresponding to a Split Pane Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "$ref": "#/definitions/NewTerminalArgs"
        },
        {
          "properties": {
            "action": {
              "type": "string",
              "pattern": "splitPane"
            },
            "splitMode": {
              "default": "duplicate",
              "description": "Control how the pane splits. Only accepts \"duplicate\" which will duplicate the focused pane's profile into a new pane."
            },
            "split": {
              "description": "The orientation to split the pane in. Possible values:\n -\"auto\" (splits pane based on remaining space)\n -\"horizontal\" (think [-])\n -\"vertical\" (think [|])",
              "default": "auto",
              "$ref": "#/definitions/SplitState"
            }
          }
        }
      ]
    },
    "Globals": {
      "description": "Properties that affect the entire window, regardless of the profile settings.",
      "additionalProperties": true,
      "type": "object",
      "required": [
        "defaultProfile"
      ],
      "properties": {
        "rowsToScroll": {
          "description": "The number of rows to scroll at a time with the mouse wheel. This will override the system setting if the value is not zero or \"system\".",
          "default": "system",
          "minimum": 0,
          "type": [
            "integer",
            "string"
          ],
          "maximum": 999
        },
        "experimental.rendering.software": {
          "type": "boolean",
          "description": "When set to true, we will use the software renderer (a.k.a. WARP) instead of the hardware one."
        },
        "keybindings": {
          "description": "Properties are specific to each custom key binding.",
          "items": {
            "$ref": "#/definitions/Keybinding"
          },
          "type": "array"
        },
        "defaultProfile": {
          "description": "Sets the default profile. Opens by clicking the \"+\" icon or typing the key binding assigned to \"newTab\". The \"guid\" of the desired default profile is used as the value.",
          "$ref": "#/definitions/ProfileGuid"
        },
        "alwaysShowTabs": {
          "description": "When set to true, tabs are always displayed. When set to false and \"showTabsInTitlebar\" is set to false, tabs only appear after opening a new tab.",
          "default": true,
          "type": "boolean"
        },
        "theme": {
          "description": "Sets the theme of the application. The special value \"system\" refers to the active Windows system theme.",
          "default": "system",
          "enum": [
            "light",
            "dark",
            "system"
          ],
          "type": "string"
        },
        "copyFormatting": {
          "description": "When set to `true`, the color and font formatting of selected text is also copied to your clipboard. When set to `false`, only plain text is copied to your clipboard.",
          "default": true,
          "type": "boolean"
        },
        "showTabsInTitlebar": {
          "description": "When set to true, the tabs are moved into the titlebar and the titlebar disappears. When set to false, the titlebar sits above the tabs.",
          "default": true,
          "type": "boolean"
        },
        "initialCols": {
          "description": "The number of columns displayed in the window upon first load.",
          "default": 120,
          "minimum": 1,
          "type": "integer",
          "maximum": 999
        },
        "confirmCloseAllTabs": {
          "description": "When set to \"true\" closing a window with multiple tabs open will require confirmation. When set to \"false\", the confirmation dialog will not appear.",
          "default": true,
          "type": "boolean"
        },
        "initialRows": {
          "description": "The number of rows displayed in the window upon first load.",
          "default": 30,
          "minimum": 1,
          "type": "integer",
          "maximum": 999
        },
        "snapToGridOnResize": {
          "description": "When set to true, the window will snap to the nearest character boundary on resize. When false, the window will resize smoothly",
          "default": false,
          "type": "boolean"
        },
        "disabledProfileSources": {
          "description": "Disables all the dynamic profile generators in this list, preventing them from adding their profiles to the list of profiles on startup.",
          "items": {
            "$ref": "#/definitions/DynamicProfileSource"
          },
          "type": "array"
        },
        "launchMode": {
          "description": "Defines whether the Terminal will launch as maximized or not.",
          "default": "default",
          "enum": [
            "maximized",
            "default"
          ],
          "type": "string"
        },
        "wordDelimiters": {
          "description": "Determines the delimiters used in a double click selection.",
          "default": " ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}~????",
          "type": "string"
        },
        "showTerminalTitleInTitlebar": {
          "description": "When set to true, titlebar displays the title of the selected tab. When set to false, titlebar displays \"Windows Terminal\".",
          "default": true,
          "type": "boolean"
        },
        "initialPosition": {
          "description": "The position of the top left corner of the window upon first load. On a system with multiple displays, these coordinates are relative to the top left of the primary display. If \"launchMode\" is set to maximized, the window will be maximized on the monitor specified by those coordinates.",
          "$ref": "#/definitions/Coordinates"
        },
        "tabWidthMode": {
          "description": "Sets the width of the tabs. Possible values include:\n -\"equal\" sizes each tab to the same width\n -\"titleLength\" sizes each tab to the length of its title",
          "default": "equal",
          "enum": [
            "equal",
            "titleLength"
          ],
          "type": "string"
        },
        "experimental.rendering.forceFullRepaint": {
          "type": "boolean",
          "description": "When set to true, we will redraw the entire screen each frame. When set to false, we will render only the updates to the screen between frames."
        },
        "copyOnSelect": {
          "description": "When set to true, a selection is immediately copied to your clipboard upon creation. When set to false, the selection persists and awaits further action.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "ProfileGuid": {
      "default": "{}",
      "pattern": "^\\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\\}$",
      "type": "string"
    },
    "Coordinates": {
      "type": "string",
      "pattern": "^(-?\\d+)?(,\\s?(-?\\d+)?)?$"
    },
    "SwitchToTabAction": {
      "description": "Arguments corresponding to a Switch To Tab Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "properties": {
            "index": {
              "description": "Which tab to switch to, with the first being 0",
              "default": 0,
              "type": "integer"
            },
            "action": {
              "type": "string",
              "pattern": "switchToTab"
            }
          }
        }
      ],
      "required": [
        "index"
      ]
    },
    "SchemeList": {
      "description": "Properties are specific to each color scheme. ColorTool is a great tool you can use to create and explore new color schemes. All colors use hex color format.",
      "items": {
        "additionalProperties": false,
        "type": "object",
        "properties": {
          "foreground": {
            "description": "Sets the foreground color of the color scheme.",
            "$ref": "#/definitions/Color"
          },
          "brightPurple": {
            "description": "Sets the color used as ANSI bright purple.",
            "$ref": "#/definitions/Color"
          },
          "brightGreen": {
            "description": "Sets the color used as ANSI bright green.",
            "$ref": "#/definitions/Color"
          },
          "blue": {
            "description": "Sets the color used as ANSI blue.",
            "$ref": "#/definitions/Color"
          },
          "selectionBackground": {
            "description": "Sets the selection background color of the color scheme.",
            "$ref": "#/definitions/Color"
          },
          "green": {
            "description": "Sets the color used as ANSI green.",
            "$ref": "#/definitions/Color"
          },
          "brightWhite": {
            "description": "Sets the color used as ANSI bright white.",
            "$ref": "#/definitions/Color"
          },
          "name": {
            "description": "Name of the color scheme.",
            "minLength": 1,
            "type": "string"
          },
          "black": {
            "description": "Sets the color used as ANSI black.",
            "$ref": "#/definitions/Color"
          },
          "cursorColor": {
            "description": "Sets the cursor color of the color scheme.",
            "default": "#FFFFFF",
            "$ref": "#/definitions/Color"
          },
          "cyan": {
            "description": "Sets the color used as ANSI cyan.",
            "$ref": "#/definitions/Color"
          },
          "brightBlue": {
            "description": "Sets the color used as ANSI bright blue.",
            "$ref": "#/definitions/Color"
          },
          "brightBlack": {
            "description": "Sets the color used as ANSI bright black.",
            "$ref": "#/definitions/Color"
          },
          "yellow": {
            "description": "Sets the color used as ANSI yellow.",
            "$ref": "#/definitions/Color"
          },
          "brightCyan": {
            "description": "Sets the color used as ANSI bright cyan.",
            "$ref": "#/definitions/Color"
          },
          "white": {
            "description": "Sets the color used as ANSI white.",
            "$ref": "#/definitions/Color"
          },
          "brightRed": {
            "description": "Sets the color used as ANSI bright red.",
            "$ref": "#/definitions/Color"
          },
          "purple": {
            "description": "Sets the color used as ANSI purple.",
            "$ref": "#/definitions/Color"
          },
          "red": {
            "description": "Sets the color used as ANSI red.",
            "$ref": "#/definitions/Color"
          },
          "background": {
            "description": "Sets the background color of the color scheme.",
            "$ref": "#/definitions/Color"
          },
          "brightYellow": {
            "description": "Sets the color used as ANSI bright yellow.",
            "$ref": "#/definitions/Color"
          }
        }
      },
      "type": "array"
    },
    "ProfilesObject": {
      "description": "A list of profiles and default settings that apply to all of them",
      "type": "object",
      "properties": {
        "defaults": {
          "description": "The default settings that apply to every profile.",
          "$ref": "#/definitions/Profile"
        },
        "list": {
          "$ref": "#/definitions/ProfileList"
        }
      }
    },
    "AdjustFontSizeAction": {
      "description": "Arguments corresponding to an Adjust Font Size Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "properties": {
            "delta": {
              "description": "How much to change the current font point size",
              "default": 0,
              "type": "integer"
            },
            "action": {
              "type": "string",
              "pattern": "adjustFontSize"
            }
          }
        }
      ],
      "required": [
        "delta"
      ]
    },
    "DynamicProfileSource": {
      "type": "string",
      "enum": [
        "Windows.Terminal.Wsl",
        "Windows.Terminal.Azure",
        "Windows.Terminal.PowershellCore"
      ]
    },
    "CopyAction": {
      "description": "Arguments corresponding to a Copy Text Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "properties": {
            "singleLine": {
              "description": "If true, the copied content will be copied as a single line (even if there are hard line breaks present in the text). If false, newlines persist from the selected text.",
              "default": false,
              "type": "boolean"
            },
            "action": {
              "type": "string",
              "pattern": "copy"
            }
          }
        }
      ]
    },
    "MoveFocusAction": {
      "description": "Arguments corresponding to a Move Focus Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "properties": {
            "direction": {
              "description": "The direction to move focus in, between panes",
              "default": "left",
              "$ref": "#/definitions/Direction"
            },
            "action": {
              "type": "string",
              "pattern": "moveFocus"
            }
          }
        }
      ],
      "required": [
        "direction"
      ]
    },
    "Keybinding": {
      "additionalProperties": false,
      "type": "object",
      "required": [
        "command",
        "keys"
      ],
      "properties": {
        "command": {
          "description": "The action executed when the associated key bindings are pressed.",
          "oneOf": [
            {
              "$ref": "#/definitions/AdjustFontSizeAction"
            },
            {
              "$ref": "#/definitions/CopyAction"
            },
            {
              "$ref": "#/definitions/ShortcutActionName"
            },
            {
              "$ref": "#/definitions/NewTabAction"
            },
            {
              "$ref": "#/definitions/SwitchToTabAction"
            },
            {
              "$ref": "#/definitions/MoveFocusAction"
            },
            {
              "$ref": "#/definitions/ResizePaneAction"
            },
            {
              "$ref": "#/definitions/SplitPaneAction"
            },
            {
              "type": "null"
            }
          ]
        },
        "keys": {
          "description": "Defines the key combinations used to call the command. It must be composed of...\n -any number of modifiers (ctrl/alt/shift)\n -a non-modifier key",
          "oneOf": [
            {
              "$ref": "#/definitions/KeyChordSegment"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/KeyChordSegment"
              },
              "minItems": 1
            }
          ]
        }
      }
    },
    "ResizePaneAction": {
      "description": "Arguments corresponding to a Resize Pane Action",
      "allOf": [
        {
          "$ref": "#/definitions/ShortcutAction"
        },
        {
          "properties": {
            "direction": {
              "description": "The direction to move the pane separator in",
              "default": "left",
              "$ref": "#/definitions/Direction"
            },
            "action": {
              "type": "string",
              "pattern": "resizePane"
            }
          }
        }
      ],
      "required": [
        "direction"
      ]
    },
    "Direction": {
      "type": "string",
      "enum": [
        "left",
        "right",
        "up",
        "down"
      ]
    },
    "SplitState": {
      "type": "string",
      "enum": [
        "vertical",
        "horizontal",
        "auto"
      ]
    }
  },
  "$id": "https://github.com/microsoft/terminal/blob/master/doc/cascadia/profiles.schema.json",
  "title": "Microsoft's Windows Terminal Settings Profile Schema"
}