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
Type | Required |
---|---|
string | no |
gauntlet.name
Name of the plugin. Displayed in main search view on each item and in settings
Type | Required |
---|---|
string | yes |
gauntlet.description
Description of the plugin. Displayed in settings
Type | Required |
---|---|
string | yes |
gauntlet.authors.[*].name
Name of one of the author of the plugin
Type | Required |
---|---|
string | no |
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
Type | Required |
---|---|
list of string | no |
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
Type | Required |
---|---|
string | yes |
preferences.[*].name
Name of the plugin preference. Displayed in settings
Type | Required |
---|---|
string | yes |
preferences.[*].description
Description of the plugin preference. Displayed in settings
Type | Required |
---|---|
string | yes |
preferences.[*].type
Type of the plugin preference.
Allowed values: "number"
, "string"
, "enum"
, "bool"
, "list_of_strings"
, "list_of_numbers"
and "list_of_enums"
Type | Required |
---|---|
enum | yes |
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
Type | Required |
---|---|
number , string , bool or list of one of those depending on type of preference | no |
preferences.[*].enum_values.[*].label
Label of the enum value. Displayed in settings
Type | Required |
---|---|
string | yes |
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
Type | Required |
---|---|
string | yes |
Entrypoints
entrypoint.[*].id
Identifier of the entrypoint. Can only contain: numbers, lowercase letters and dash
Type | Required |
---|---|
string | yes |
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
Type | Required |
---|---|
string | yes |
entrypoint.[*].description
Description of the entrypoint. Displayed in settings
Type | Required |
---|---|
string | yes |
entrypoint.[*].path
Path to TypeScript source file (.ts
or .tsx
). Default export has to be a function, actual function signature depends on entrypoint type
Type | Required |
---|---|
string | yes |
entrypoint.[*].icon
Path to assets file image file relative to assets
directory. Currently displayed size is 18x18 pixels
Type | Required |
---|---|
string | no |
entrypoint.[*].type
Type of the entrypoint. Only following values are allowed: "command"
, "view"
, "inline-view"
and "entrypoint-generator"
Type | Required |
---|---|
enum | yes |
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
Type | Required |
---|---|
string | yes |
entrypoint.[*].actions.[*].description
Description of the action. Displayed in settings
Type | Required |
---|---|
string | yes |
entrypoint.[*].actions.[*].shortcut
Shortcut that can be used to execute action
Type | Required |
---|---|
object | false |
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"
"-"
"="
","
"."
"/"
"["
"]"
";"
"'"
"\\"
"_"
"+"
"<"
">"
"?"
"{"
"}"
":"
"\""
"|"
Type | Required |
---|---|
string | yes |
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
Type | Required |
---|---|
enum | yes |
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
Type | Required |
---|---|
string | yes |
entrypoint.[*].preferences.[*].name
Name of the entrypoint preference. Displayed in settings
Type | Required |
---|---|
string | yes |
entrypoint.[*].preferences.[*].description
Description of the entrypoint preference. Displayed in settings
Type | Required |
---|---|
string | yes |
entrypoint.[*].preferences.[*].type
Type of the entrypoint preference.
Allowed values: "number"
, "string"
, "enum"
, "bool"
, "list_of_strings"
, "list_of_numbers"
and "list_of_enums"
Type | Required |
---|---|
enum | yes |
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
Type | Required |
---|---|
number , string , bool or list of one of those depending on type of preference | no |
entrypoint.[*].preferences.[*].enum_values.[*].label
Label of the enum value. Displayed in settings
Type | Required |
---|---|
string | yes |
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
Type | Required |
---|---|
string | yes |
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
Type | Required |
---|---|
list of string | false |
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
Type | Required |
---|---|
list of string | false |
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
- Resolves to
{linux:user-home}
- Resolves to
$HOME
, i.e./home/<username>
- Only available if plugin supports Linux
- Resolves to
{windows:user-home}
- Resolves to
{FOLDERID_Profile}
, i.e.C:\Users\<username>
- Only available if plugin supports Windows
- Resolves to
{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>
- On Windows:
{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>
- On Windows:
Type | Required |
---|---|
list of string | false |
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
Type | Required |
---|---|
list of string | false |
permissions.[*].exec.command
Allows plugins to spawn subprocesses.
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
Type | Required |
---|---|
list of string | false |
permissions.[*].exec.executable
Allows plugins to spawn subprocesses
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
Type | Required |
---|---|
list of string | false |
permissions.[*].system
Some APIs in Deno require special system information permission. See Deno documentation
Type | Required |
---|---|
list of string | false |
permissions.[*].clipboard
Allows plugin to read and manipulate OS clipboard via Gauntlet's Clipboard API
Allowed values: "read"
, "write"
and "clear"
Type | Required |
---|---|
list of enum | false |
permissions.[*].main_search_bar
Allows plugin to read value of main search bar at any time. Required to use Inline view entrypoint
Allowed values: "read"
Type | Required |
---|---|
list of enum | false |
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"
Type | Required |
---|---|
enum | true |