mirror of
https://github.com/mfontanini/presenterm.git
synced 2025-05-05 15:32:58 +00:00
814 lines
22 KiB
JSON
814 lines
22 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Config",
|
|
"type": "object",
|
|
"properties": {
|
|
"bindings": {
|
|
"$ref": "#/definitions/KeyBindingsConfig"
|
|
},
|
|
"defaults": {
|
|
"description": "The default configuration for the presentation.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/DefaultsConfig"
|
|
}
|
|
]
|
|
},
|
|
"export": {
|
|
"$ref": "#/definitions/ExportConfig"
|
|
},
|
|
"mermaid": {
|
|
"$ref": "#/definitions/MermaidConfig"
|
|
},
|
|
"options": {
|
|
"$ref": "#/definitions/OptionsConfig"
|
|
},
|
|
"snippet": {
|
|
"$ref": "#/definitions/SnippetConfig"
|
|
},
|
|
"speaker_notes": {
|
|
"$ref": "#/definitions/SpeakerNotesConfig"
|
|
},
|
|
"transition": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SlideTransitionConfig"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"typst": {
|
|
"$ref": "#/definitions/TypstConfig"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"definitions": {
|
|
"DefaultsConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"image_protocol": {
|
|
"description": "The image protocol to use.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ImageProtocol"
|
|
}
|
|
]
|
|
},
|
|
"incremental_lists": {
|
|
"description": "The configuration for lists when incremental lists are enabled.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/IncrementalListsConfig"
|
|
}
|
|
]
|
|
},
|
|
"max_columns": {
|
|
"description": "A max width in columns that the presentation must always be capped to.",
|
|
"default": 65535,
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"max_columns_alignment": {
|
|
"description": "The alignment the presentation should have if `max_columns` is set and the terminal is larger than that.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/MaxColumnsAlignment"
|
|
}
|
|
]
|
|
},
|
|
"max_rows": {
|
|
"description": "A max height in rows that the presentation must always be capped to.",
|
|
"default": 65535,
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"max_rows_alignment": {
|
|
"description": "The alignment the presentation should have if `max_rows` is set and the terminal is larger than that.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/MaxRowsAlignment"
|
|
}
|
|
]
|
|
},
|
|
"terminal_font_size": {
|
|
"description": "Override the terminal font size when in windows or when using sixel.",
|
|
"default": 16,
|
|
"type": "integer",
|
|
"format": "uint8",
|
|
"minimum": 1.0
|
|
},
|
|
"theme": {
|
|
"description": "The theme to use by default in every presentation unless overridden.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"validate_overflows": {
|
|
"description": "Validate that the presentation does not overflow the terminal screen.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/ValidateOverflows"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ExportConfig": {
|
|
"description": "The export configuration.",
|
|
"type": "object",
|
|
"properties": {
|
|
"dimensions": {
|
|
"description": "The dimensions to use for presentation exports.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ExportDimensionsConfig"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"pauses": {
|
|
"description": "Whether pauses should create new slides.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/PauseExportPolicy"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ExportDimensionsConfig": {
|
|
"description": "The dimensions to use for presentation exports.",
|
|
"type": "object",
|
|
"required": [
|
|
"columns",
|
|
"rows"
|
|
],
|
|
"properties": {
|
|
"columns": {
|
|
"description": "The number of columns.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"rows": {
|
|
"description": "The number of rows.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ImageProtocol": {
|
|
"oneOf": [
|
|
{
|
|
"description": "Automatically detect the best image protocol to use.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto"
|
|
]
|
|
},
|
|
{
|
|
"description": "Use the iTerm2 image protocol.",
|
|
"type": "string",
|
|
"enum": [
|
|
"iterm2"
|
|
]
|
|
},
|
|
{
|
|
"description": "Use the kitty protocol in \"local\" mode, meaning both presenterm and the terminal run in the same host and can share the filesystem to communicate.",
|
|
"type": "string",
|
|
"enum": [
|
|
"kitty-local"
|
|
]
|
|
},
|
|
{
|
|
"description": "Use the kitty protocol in \"remote\" mode, meaning presenterm and the terminal run in different hosts and therefore can only communicate via terminal escape codes.",
|
|
"type": "string",
|
|
"enum": [
|
|
"kitty-remote"
|
|
]
|
|
},
|
|
{
|
|
"description": "Use the sixel protocol. Note that this requires compiling presenterm using the --features sixel flag.",
|
|
"type": "string",
|
|
"enum": [
|
|
"sixel"
|
|
]
|
|
},
|
|
{
|
|
"description": "The default image protocol to use when no other is specified.",
|
|
"type": "string",
|
|
"enum": [
|
|
"ascii-blocks"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"IncrementalListsConfig": {
|
|
"description": "The configuration for lists when incremental lists are enabled.",
|
|
"type": "object",
|
|
"properties": {
|
|
"pause_after": {
|
|
"description": "Whether to pause after a list ends.",
|
|
"default": null,
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"pause_before": {
|
|
"description": "Whether to pause before a list begins.",
|
|
"default": null,
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"KeyBinding": {
|
|
"type": "string"
|
|
},
|
|
"KeyBindingsConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"close_modal": {
|
|
"description": "The key binding to close the currently open modal.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"execute_code": {
|
|
"description": "The key binding to execute a piece of shell code.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"exit": {
|
|
"description": "The key binding to close the application.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"first_slide": {
|
|
"description": "The key binding to jump to the first slide.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"go_to_slide": {
|
|
"description": "The key binding to jump to a specific slide.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"last_slide": {
|
|
"description": "The key binding to jump to the last slide.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"next": {
|
|
"description": "The keys that cause the presentation to move forwards.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"next_fast": {
|
|
"description": "The keys that cause the presentation to jump to the next slide \"fast\".\n\n\"fast\" means for slides that contain pauses, we will only jump between the first and last pause rather than going through each individual one.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"previous": {
|
|
"description": "The keys that cause the presentation to move backwards.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"previous_fast": {
|
|
"description": "The keys that cause the presentation to move backwards \"fast\".\n\n\"fast\" means for slides that contain pauses, we will only jump between the first and last pause rather than going through each individual one.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"reload": {
|
|
"description": "The key binding to reload the presentation.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"suspend": {
|
|
"description": "The key binding to suspend the application.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"toggle_bindings": {
|
|
"description": "The key binding to toggle the key bindings modal.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
},
|
|
"toggle_slide_index": {
|
|
"description": "The key binding to toggle the slide index modal.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/KeyBinding"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"LanguageSnippetExecutionConfig": {
|
|
"description": "The snippet execution configuration for a specific programming language.",
|
|
"type": "object",
|
|
"required": [
|
|
"commands",
|
|
"filename"
|
|
],
|
|
"properties": {
|
|
"commands": {
|
|
"description": "The commands to be run when executing snippets for this programming language.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"environment": {
|
|
"description": "The environment variables to set before invoking every command.",
|
|
"default": {},
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"filename": {
|
|
"description": "The filename to use for the snippet input file.",
|
|
"type": "string"
|
|
},
|
|
"hidden_line_prefix": {
|
|
"description": "The prefix to use to hide lines visually but still execute them.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"MaxColumnsAlignment": {
|
|
"description": "The alignment to use when `defaults.max_columns` is set.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Align the presentation to the left.",
|
|
"type": "string",
|
|
"enum": [
|
|
"left"
|
|
]
|
|
},
|
|
{
|
|
"description": "Align the presentation on the center.",
|
|
"type": "string",
|
|
"enum": [
|
|
"center"
|
|
]
|
|
},
|
|
{
|
|
"description": "Align the presentation to the right.",
|
|
"type": "string",
|
|
"enum": [
|
|
"right"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"MaxRowsAlignment": {
|
|
"description": "The alignment to use when `defaults.max_rows` is set.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Align the presentation to the top.",
|
|
"type": "string",
|
|
"enum": [
|
|
"top"
|
|
]
|
|
},
|
|
{
|
|
"description": "Align the presentation on the center.",
|
|
"type": "string",
|
|
"enum": [
|
|
"center"
|
|
]
|
|
},
|
|
{
|
|
"description": "Align the presentation to the bottom.",
|
|
"type": "string",
|
|
"enum": [
|
|
"bottom"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"MermaidConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scale": {
|
|
"description": "The scaling parameter to be used in the mermaid CLI.",
|
|
"default": 2,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"OptionsConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auto_render_languages": {
|
|
"description": "Assume snippets for these languages contain `+render` and render them automatically.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/SnippetLanguage"
|
|
}
|
|
},
|
|
"command_prefix": {
|
|
"description": "The prefix to use for commands.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"end_slide_shorthand": {
|
|
"description": "Whether to treat a thematic break as a slide end.",
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"image_attributes_prefix": {
|
|
"description": "The prefix to use for image attributes.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"implicit_slide_ends": {
|
|
"description": "Whether slides are automatically terminated when a slide title is found.",
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"incremental_lists": {
|
|
"description": "Show all lists incrementally, by implicitly adding pauses in between elements.",
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"strict_front_matter_parsing": {
|
|
"description": "Whether to be strict about parsing the presentation's front matter.",
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PauseExportPolicy": {
|
|
"description": "The policy for pauses when exporting.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Whether to ignore pauses.",
|
|
"type": "string",
|
|
"enum": [
|
|
"ignore"
|
|
]
|
|
},
|
|
{
|
|
"description": "Create a new slide when a pause is found.",
|
|
"type": "string",
|
|
"enum": [
|
|
"new_slide"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"SlideTransitionConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"animation"
|
|
],
|
|
"properties": {
|
|
"animation": {
|
|
"description": "The slide transition style.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SlideTransitionStyleConfig"
|
|
}
|
|
]
|
|
},
|
|
"duration_millis": {
|
|
"description": "The amount of time to take to perform the transition.",
|
|
"default": 1000,
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"frames": {
|
|
"description": "The number of frames in a transition.",
|
|
"default": 30,
|
|
"type": "integer",
|
|
"format": "uint",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SlideTransitionStyleConfig": {
|
|
"oneOf": [
|
|
{
|
|
"description": "Slide horizontally.",
|
|
"type": "object",
|
|
"required": [
|
|
"style"
|
|
],
|
|
"properties": {
|
|
"style": {
|
|
"type": "string",
|
|
"enum": [
|
|
"slide_horizontal"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Fade the new slide into the previous one.",
|
|
"type": "object",
|
|
"required": [
|
|
"style"
|
|
],
|
|
"properties": {
|
|
"style": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fade"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Collapse the current slide into the center of the screen.",
|
|
"type": "object",
|
|
"required": [
|
|
"style"
|
|
],
|
|
"properties": {
|
|
"style": {
|
|
"type": "string",
|
|
"enum": [
|
|
"collapse_horizontal"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"SnippetConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"exec": {
|
|
"description": "The properties for snippet execution.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SnippetExecConfig"
|
|
}
|
|
]
|
|
},
|
|
"exec_replace": {
|
|
"description": "The properties for snippet execution.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SnippetExecReplaceConfig"
|
|
}
|
|
]
|
|
},
|
|
"render": {
|
|
"description": "The properties for snippet auto rendering.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SnippetRenderConfig"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SnippetExecConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"enable"
|
|
],
|
|
"properties": {
|
|
"custom": {
|
|
"description": "Custom snippet executors.",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/LanguageSnippetExecutionConfig"
|
|
}
|
|
},
|
|
"enable": {
|
|
"description": "Whether to enable snippet execution.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SnippetExecReplaceConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"enable"
|
|
],
|
|
"properties": {
|
|
"enable": {
|
|
"description": "Whether to enable snippet replace-executions, which automatically run code snippets without the user's intervention.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SnippetLanguage": {
|
|
"description": "The language of a code snippet.",
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"Ada",
|
|
"Asp",
|
|
"Awk",
|
|
"Bash",
|
|
"BatchFile",
|
|
"C",
|
|
"CMake",
|
|
"Crontab",
|
|
"CSharp",
|
|
"Clojure",
|
|
"Cpp",
|
|
"Css",
|
|
"DLang",
|
|
"Diff",
|
|
"Docker",
|
|
"Dotenv",
|
|
"Elixir",
|
|
"Elm",
|
|
"Erlang",
|
|
"File",
|
|
"Fish",
|
|
"Go",
|
|
"GraphQL",
|
|
"Haskell",
|
|
"Html",
|
|
"Java",
|
|
"JavaScript",
|
|
"Json",
|
|
"Julia",
|
|
"Kotlin",
|
|
"Latex",
|
|
"Lua",
|
|
"Makefile",
|
|
"Mermaid",
|
|
"Markdown",
|
|
"Nix",
|
|
"Nushell",
|
|
"OCaml",
|
|
"Perl",
|
|
"Php",
|
|
"Protobuf",
|
|
"Puppet",
|
|
"Python",
|
|
"R",
|
|
"Racket",
|
|
"Ruby",
|
|
"Rust",
|
|
"RustScript",
|
|
"Scala",
|
|
"Shell",
|
|
"Sql",
|
|
"Swift",
|
|
"Svelte",
|
|
"Tcl",
|
|
"Terraform",
|
|
"Toml",
|
|
"TypeScript",
|
|
"Typst",
|
|
"Xml",
|
|
"Yaml",
|
|
"Verilog",
|
|
"Vue",
|
|
"Zig",
|
|
"Zsh"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"Unknown"
|
|
],
|
|
"properties": {
|
|
"Unknown": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"SnippetRenderConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"threads": {
|
|
"description": "The number of threads to use when rendering.",
|
|
"default": 2,
|
|
"type": "integer",
|
|
"format": "uint",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SpeakerNotesConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"always_publish": {
|
|
"description": "Whether to always publish speaker notes.",
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"listen_address": {
|
|
"description": "The address in which to listen for speaker note events.",
|
|
"default": "127.255.255.255:59418",
|
|
"type": "string"
|
|
},
|
|
"publish_address": {
|
|
"description": "The address in which to publish speaker notes events.",
|
|
"default": "127.255.255.255:59418",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"TypstConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ppi": {
|
|
"description": "The pixels per inch when rendering latex/typst formulas.",
|
|
"default": 300,
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ValidateOverflows": {
|
|
"type": "string",
|
|
"enum": [
|
|
"never",
|
|
"always",
|
|
"when_presenting",
|
|
"when_developing"
|
|
]
|
|
}
|
|
}
|
|
} |