Skip to main content

Plugin Manifest

Overview

Plugin Manifest uses TOML file format

Main

$schema

Some editors use $schema field to validate the content of the file. It is not used by Gauntlet. The schema can be found at https://raw.githubusercontent.com/project-gauntlet/gauntlet/refs/heads/main/docs/schema/plugin_manifest.schema.json

TypeRequired
stringno

gauntlet.name

Name of the plugin. Displayed in main search view on each item and in settings

TypeRequired
stringyes

gauntlet.description

Description of the plugin. Displayed in settings

TypeRequired
stringyes

gauntlet.authors.[*].name

Name of one of the author of the plugin

TypeRequired
stringno

gauntlet.authors.[*].uris

List of URIs that identify the author. Can be a link to social media page or an email.

E.g. https://github.com/Exidex or mailto:exidex@example.com

TypeRequired
list of stringno

Plugin Preferences

preferences.[*].id

ID of the plugin preference. This will be used as name of the field in TypeScript. Can only contain: numbers, uppercase and lowercase letters

TypeRequired
stringyes

preferences.[*].name

Name of the plugin preference. Displayed in settings

TypeRequired
stringyes

preferences.[*].description

Description of the plugin preference. Displayed in settings

TypeRequired
stringyes

preferences.[*].type

Type of the plugin preference. Allowed values: "number", "string", "enum", "bool", "list_of_strings", "list_of_numbers" and "list_of_enums"

TypeRequired
enumyes

preferences.[*].default

Provides default value for the plugin preference. If not specified, preference will be considered required and user will be prompted to enter the value

If preference type is "enum" or "list_of_enums", enum_values property has to be provided and default value has to be one of values defined in enum_values

Currently, not supported for list types, for which default value will be an empty list

TypeRequired
number, string, bool or list of one of those depending on type of preferenceno

preferences.[*].enum_values.[*].label

Label of the enum value. Displayed in settings

TypeRequired
stringyes

preferences.[*].enum_values.[*].value

Value of the enum value. One of these values will be used as a value of the field in TypeScript and in default property

TypeRequired
stringyes

Entrypoints

entrypoint.[*].id

Identifier of the entrypoint. Can only contain: numbers, lowercase letters and dash

TypeRequired
stringyes

entrypoint.[*].name

Name of the entrypoint. Displayed in main search view on each item, in settings and in bottom left of each plugin created view

TypeRequired
stringyes

entrypoint.[*].description

Description of the entrypoint. Displayed in settings

TypeRequired
stringyes

entrypoint.[*].path

Path to TypeScript source file (.ts or .tsx). Default export has to be a function, actual function signature depends on entrypoint type

TypeRequired
stringyes

entrypoint.[*].icon

Path to assets file image file relative to assets directory. Currently displayed size is 18x18 pixels

TypeRequired
stringno

entrypoint.[*].type

Type of the entrypoint. Only following values are allowed: "command", "view", "inline-view" and "entrypoint-generator"

TypeRequired
enumyes

Entrypoint Actions

entrypoint.[*].actions.[*].id

ID of an action. Referenced from code to assign shortcut to an action. Can only contain: numbers, uppercase and lowercase letters

TypeRequired
stringyes

entrypoint.[*].actions.[*].description

Description of the action. Displayed in settings

TypeRequired
stringyes

entrypoint.[*].actions.[*].shortcut

Shortcut that can be used to execute action

TypeRequired
objectfalse

entrypoint.[*].actions.[*].shortcut.key

Key part of the shortcut

All possible key values...
  • "0"
  • "1"
  • "2"
  • "3"
  • "4"
  • "5"
  • "6"
  • "7"
  • "8"
  • "9"
  • "!"
  • "@"
  • "#"
  • "$"
  • "%"
  • "^"
  • "&"
  • "*"
  • "("
  • ")"
  • "a"
  • "b"
  • "c"
  • "d"
  • "e"
  • "f"
  • "g"
  • "h"
  • "i"
  • "j"
  • "k"
  • "l"
  • "m"
  • "n"
  • "o"
  • "p"
  • "q"
  • "r"
  • "s"
  • "t"
  • "u"
  • "v"
  • "w"
  • "x"
  • "y"
  • "z"
  • "A"
  • "B"
  • "C"
  • "D"
  • "E"
  • "F"
  • "G"
  • "H"
  • "I"
  • "J"
  • "K"
  • "L"
  • "M"
  • "N"
  • "O"
  • "P"
  • "Q"
  • "R"
  • "S"
  • "T"
  • "U"
  • "V"
  • "W"
  • "X"
  • "Y"
  • "Z"
  • "-"
  • "="
  • ","
  • "."
  • "/"
  • "["
  • "]"
  • ";"
  • "'"
  • "\\"
  • "_"
  • "+"
  • "<"
  • ">"
  • "?"
  • "{"
  • "}"
  • ":"
  • "\""
  • "|"
TypeRequired
stringyes

entrypoint.[*].actions.[*].shortcut.kind

Kind of the shortcut. Allowed values: "main" and "alternative"

Modifiers:

  • "main"
    • Windows and Linux: CTRL
    • macOS: CMD
  • "alternative"
    • Windows and Linux: ALT
    • macOS: OPT

Whether SHIFT is also required depends on character specified for shortcut key, e.g. key property value "$" will require SHIFT to be pressed, while "4" will not

TypeRequired
enumyes

Entrypoint Preferences

entrypoint.[*].preferences.[*].id

ID of the entrypoint preference. This will be used as name of the field in TypeScript. Can only contain: numbers, uppercase and lowercase letters

TypeRequired
stringyes

entrypoint.[*].preferences.[*].name

Name of the entrypoint preference. Displayed in settings

TypeRequired
stringyes

entrypoint.[*].preferences.[*].description

Description of the entrypoint preference. Displayed in settings

TypeRequired
stringyes

entrypoint.[*].preferences.[*].type

Type of the entrypoint preference. Allowed values: "number", "string", "enum", "bool", "list_of_strings", "list_of_numbers" and "list_of_enums"

TypeRequired
enumyes

entrypoint.[*].preferences.[*].default

Provides default value for the entrypoint preference. If not specified, preference will be considered required and user will be prompted to enter the value

If preference type is "enum" or "list_of_enums", enum_values property has to be provided and default value has to be one of values defined in enum_values

Currently, not supported for list types, for which default value will be an empty list

TypeRequired
number, string, bool or list of one of those depending on type of preferenceno

entrypoint.[*].preferences.[*].enum_values.[*].label

Label of the enum value. Displayed in settings

TypeRequired
stringyes

entrypoint.[*].preferences.[*].enum_values.[*].value

Value of the enum value. One of these values will be used as a value of the field in TypeScript and in default property

TypeRequired
stringyes

Permissions

Permission system in Gauntlet relies on Deno Security model. See Deno documentation for in depth information

permissions.[*].environment

Allows plugin to set or read listed environment variables. Values are names of environment variables

TypeRequired
list of stringfalse

permissions.[*].network

Allows plugin to make network requests, open network listeners or perform DNS resolution. This includes making HTTP requests, opening TCP/UDP sockets, and listening for incoming connections on TCP or UDP. Values are IPv4, IPv6 or domain name, with optional port number

TypeRequired
list of stringfalse

permissions.[*].filesystem.read

Allows plugin to read files on the file system inside specified path. This includes listing the contents of directories, checking for the existence of a given file, and connecting to Unix sockets

Only absolute paths are allowed

For Windows paths only C: drive is allowed to be specified

Path variables

Path permissions can contain also variables which will be resolved at plugin load time

Examples: "{linux:user-home}/.local/share", "{common:plugin-cache}/my-plugin-cache"

Variables can only be used at the beginning of the path

List of currently available variables:

  • {macos:user-home}
    • Resolves to $HOME, i.e. /Users/<username>
    • Only available if plugin supports macOS
  • {linux:user-home}
    • Resolves to $HOME, i.e. /home/<username>
    • Only available if plugin supports Linux
  • {windows:user-home}
    • Resolves to {FOLDERID_Profile}, i.e. C:\Users\<username>
    • Only available if plugin supports Windows
  • {common:plugin-data}
    • On Windows: {FOLDERID_RoamingAppData}\Gauntlet\data\plugins\<plugin-uuid>
    • On Linux: $XDG_DATA_HOME/gauntlet/plugins/<plugin-uuid>
    • On macOS: $HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>
  • {common:plugin-cache}
    • On Windows: {FOLDERID_LocalAppData}\Gauntlet\cache\plugins\<plugin-uuid>
    • On Linux: $XDG_CACHE_HOME/gauntlet/plugins/<plugin-uuid>
    • On macOS: $HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>
TypeRequired
list of stringfalse

permissions.[*].filesystem.write

Allows plugin to write to files on the file system inside specified path. This includes creating files or directories, writing to files and opening to Unix sockets

Only absolute paths are allowed

For Windows paths only C: drive is allowed to be specified

Path permissions can contain also variables which will be resolved at plugin load time. See filesystem read permissions section for allowed variables

TypeRequired
list of stringfalse

permissions.[*].exec.command

Allows plugins to spawn subprocesses.

warning

Plugin with ability to create subprocesses can effectively do any arbitrary action on user machine without declaring proper permissions

Values are names of commands on PATH environment variable. Actual path to used executable is resolved at plugin runtime load time due to restriction in Deno, so spawning subprocess of command whose executable was created after plugin runtime load time will fail with permission error

TypeRequired
list of stringfalse

permissions.[*].exec.executable

Allows plugins to spawn subprocesses

warning

Plugin with ability to create subprocesses can effectively do any arbitrary action on user machine without declaring proper permissions

Only absolute paths are allowed

For Windows paths only C: drive is allowed to be specified

Path permissions can contain also variables which will be resolved at plugin load time. See filesystem read permissions section for allowed variables

TypeRequired
list of stringfalse

permissions.[*].system

Some APIs in Deno require special system information permission. See Deno documentation

TypeRequired
list of stringfalse

permissions.[*].clipboard

Allows plugin to read and manipulate OS clipboard via Gauntlet's Clipboard API

Allowed values: "read", "write" and "clear"

TypeRequired
list of enumfalse

Allows plugin to read value of main search bar at any time. Required to use Inline view entrypoint

Allowed values: "read"

TypeRequired
list of enumfalse

Other

supported_system.[*].os

Specifies which OS is supported by plugin. Only required if plugin uses one of the following permissions: environment variables, filesystem, system, exec. If plugin doesn't use any of those permissions, plugin is considered cross-platform

Allowed values: "linux", "windows" and "macos"

TypeRequired
enumtrue