[
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [
      {
        "def": "Seal:bindHotkeys(mapping)",
        "desc": "Binds hotkeys for Seal",
        "doc": "Binds hotkeys for Seal\n\nParameters:\n * mapping - A table containing hotkey modifier/key details for the following (optional) items:\n  * show - This will cause Seal's UI to be shown\n  * toggle - This will cause Seal's UI to be shown or hidden depending on its current state\n\nReturns:\n * The Seal object",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "157",
        "name": "bindHotkeys",
        "notes": [],
        "parameters": [
          " * mapping - A table containing hotkey modifier/key details for the following (optional) items:\n   * show - This will cause Seal's UI to be shown\n   * toggle - This will cause Seal's UI to be shown or hidden depending on its current state"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:bindHotkeys(mapping)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:loadPluginFromFile(plugin_name, file)",
        "desc": "Loads a plugin from a given file",
        "doc": "Loads a plugin from a given file\n\nParameters:\n * plugin_name - the name of the plugin, without \"seal_\" at the beginning or \".lua\" at the end\n * file - the file where the plugin code is stored.\n\nReturns:\n * The Seal object if the plugin was successfully loaded, `nil` otherwise\n\nNotes:\n * You should normally use `Seal:loadPlugins()`. This method allows you to load plugins\n   from non-standard locations and is mostly a development interface.\n * Some plugins may immediately begin doing background work (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "94",
        "name": "loadPluginFromFile",
        "notes": [
          " * You should normally use `Seal:loadPlugins()`. This method allows you to load plugins",
          "   from non-standard locations and is mostly a development interface.",
          " * Some plugins may immediately begin doing background work (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * plugin_name - the name of the plugin, without \"seal_\" at the beginning or \".lua\" at the end",
          " * file - the file where the plugin code is stored."
        ],
        "returns": [
          " * The Seal object if the plugin was successfully loaded, `nil` otherwise"
        ],
        "signature": "Seal:loadPluginFromFile(plugin_name, file)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:loadPlugins(plugins)",
        "desc": "Loads a list of Seal plugins",
        "doc": "Loads a list of Seal plugins\n\nParameters:\n * plugins - A list containing the names of plugins to load\n\nReturns:\n * The Seal object\n\nNotes:\n * The plugins live inside the Seal.spoon directory\n * The plugin names in the list, should not have `seal_` at the start, or `.lua` at the end\n * Some plugins may immediately begin doing background work (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "122",
        "name": "loadPlugins",
        "notes": [
          " * The plugins live inside the Seal.spoon directory",
          " * The plugin names in the list, should not have `seal_` at the start, or `.lua` at the end",
          " * Some plugins may immediately begin doing background work (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * plugins - A list containing the names of plugins to load"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:loadPlugins(plugins)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:refreshAllCommands()",
        "desc": "Refresh the list of commands provided by all the currently loaded plugins.",
        "doc": "Refresh the list of commands provided by all the currently loaded plugins.\n\nParameters:\n * None\n\nReturns:\n * The Seal object\n\nNotes:\n * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands.",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "75",
        "name": "refreshAllCommands",
        "notes": [
          " * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands."
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:refreshAllCommands()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:refreshCommandsForPlugin(plugin_name)",
        "desc": "Refresh the list of commands provided by the given plugin.",
        "doc": "Refresh the list of commands provided by the given plugin.\n\nParameters:\n * plugin_name - the name of the plugin. Should be the name as passed to `loadPlugins()` or `loadPluginFromFile`.\n\nReturns:\n * The Seal object\n\nNotes:\n * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands.",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "50",
        "name": "refreshCommandsForPlugin",
        "notes": [
          " * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands."
        ],
        "parameters": [
          " * plugin_name - the name of the plugin. Should be the name as passed to `loadPlugins()` or `loadPluginFromFile`."
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:refreshCommandsForPlugin(plugin_name)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:show(query)",
        "desc": "Shows the Seal UI",
        "doc": "Shows the Seal UI\n\nParameters:\n * query - An optional string to pre-populate the query box with\n\nReturns:\n * None\n\nNotes:\n * This may be useful if you wish to show Seal in response to something other than its hotkey",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "234",
        "name": "show",
        "notes": [
          " * This may be useful if you wish to show Seal in response to something other than its hotkey"
        ],
        "parameters": [
          " * query - An optional string to pre-populate the query box with"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal:show(query)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:start()",
        "desc": "Starts Seal",
        "doc": "Starts Seal\n\nParameters:\n * None\n\nReturns:\n * The Seal object",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "190",
        "name": "start",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:start()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:stop()",
        "desc": "Stops Seal",
        "doc": "Stops Seal\n\nParameters:\n * None\n\nReturns:\n * The Seal object\n\nNotes:\n * Some Seal plugins will continue performing background work even after this call (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "210",
        "name": "stop",
        "notes": [
          " * Some Seal plugins will continue performing background work even after this call (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:stop()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:toggle(query)",
        "desc": "Shows or hides the Seal UI",
        "doc": "Shows or hides the Seal UI\n\nParameters:\n * query - An optional string to pre-populate the query box with\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "252",
        "name": "toggle",
        "notes": [],
        "parameters": [
          " * query - An optional string to pre-populate the query box with"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal:toggle(query)",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "Variable": [
      {
        "def": "Seal.plugin_search_paths",
        "desc": "List of directories where Seal will look for plugins. Defaults to `~/.hammerspoon/seal_plugins/` and the Seal Spoon directory.",
        "doc": "List of directories where Seal will look for plugins. Defaults to `~/.hammerspoon/seal_plugins/` and the Seal Spoon directory.",
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "45",
        "name": "plugin_search_paths",
        "signature": "Seal.plugin_search_paths",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.queryChangedTimerDuration",
        "desc": "Time between the last keystroke and the start of the recalculation of the choices to display, in seconds.",
        "doc": "Time between the last keystroke and the start of the recalculation of the choices to display, in seconds.\n\nNotes:\n * Defaults to 0.02s (20ms).",
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "37",
        "name": "queryChangedTimerDuration",
        "notes": [
          " * Defaults to 0.02s (20ms)."
        ],
        "signature": "Seal.queryChangedTimerDuration",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "desc": "Pluggable launch bar",
    "doc": "Pluggable launch bar\n\nDownload: [https://github.com/Hammerspoon/Spoons/raw/master/Spoons/Seal.spoon.zip](https://github.com/Hammerspoon/Spoons/raw/master/Spoons/Seal.spoon.zip)\n\nSeal includes a number of plugins, which you can choose to load (see `:loadPlugins()` below):\n * apps : Launch applications by name\n * calc : Simple calculator\n * rot13 : Apply ROT13 substitution cipher\n * safari_bookmarks : Open Safari bookmarks (this is broken since at least High Sierra)\n * screencapture : Lets you take screenshots in various ways\n * urlformats : User defined URL formats to open\n * useractions : User defined custom actions\n * vpn : Connect and disconnect VPNs (currently supports Viscosity and macOS system preferences)A",
    "items": [
      {
        "def": "Seal:bindHotkeys(mapping)",
        "desc": "Binds hotkeys for Seal",
        "doc": "Binds hotkeys for Seal\n\nParameters:\n * mapping - A table containing hotkey modifier/key details for the following (optional) items:\n  * show - This will cause Seal's UI to be shown\n  * toggle - This will cause Seal's UI to be shown or hidden depending on its current state\n\nReturns:\n * The Seal object",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "157",
        "name": "bindHotkeys",
        "notes": [],
        "parameters": [
          " * mapping - A table containing hotkey modifier/key details for the following (optional) items:\n   * show - This will cause Seal's UI to be shown\n   * toggle - This will cause Seal's UI to be shown or hidden depending on its current state"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:bindHotkeys(mapping)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:loadPluginFromFile(plugin_name, file)",
        "desc": "Loads a plugin from a given file",
        "doc": "Loads a plugin from a given file\n\nParameters:\n * plugin_name - the name of the plugin, without \"seal_\" at the beginning or \".lua\" at the end\n * file - the file where the plugin code is stored.\n\nReturns:\n * The Seal object if the plugin was successfully loaded, `nil` otherwise\n\nNotes:\n * You should normally use `Seal:loadPlugins()`. This method allows you to load plugins\n   from non-standard locations and is mostly a development interface.\n * Some plugins may immediately begin doing background work (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "94",
        "name": "loadPluginFromFile",
        "notes": [
          " * You should normally use `Seal:loadPlugins()`. This method allows you to load plugins",
          "   from non-standard locations and is mostly a development interface.",
          " * Some plugins may immediately begin doing background work (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * plugin_name - the name of the plugin, without \"seal_\" at the beginning or \".lua\" at the end",
          " * file - the file where the plugin code is stored."
        ],
        "returns": [
          " * The Seal object if the plugin was successfully loaded, `nil` otherwise"
        ],
        "signature": "Seal:loadPluginFromFile(plugin_name, file)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:loadPlugins(plugins)",
        "desc": "Loads a list of Seal plugins",
        "doc": "Loads a list of Seal plugins\n\nParameters:\n * plugins - A list containing the names of plugins to load\n\nReturns:\n * The Seal object\n\nNotes:\n * The plugins live inside the Seal.spoon directory\n * The plugin names in the list, should not have `seal_` at the start, or `.lua` at the end\n * Some plugins may immediately begin doing background work (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "122",
        "name": "loadPlugins",
        "notes": [
          " * The plugins live inside the Seal.spoon directory",
          " * The plugin names in the list, should not have `seal_` at the start, or `.lua` at the end",
          " * Some plugins may immediately begin doing background work (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * plugins - A list containing the names of plugins to load"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:loadPlugins(plugins)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal.plugin_search_paths",
        "desc": "List of directories where Seal will look for plugins. Defaults to `~/.hammerspoon/seal_plugins/` and the Seal Spoon directory.",
        "doc": "List of directories where Seal will look for plugins. Defaults to `~/.hammerspoon/seal_plugins/` and the Seal Spoon directory.",
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "45",
        "name": "plugin_search_paths",
        "signature": "Seal.plugin_search_paths",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.queryChangedTimerDuration",
        "desc": "Time between the last keystroke and the start of the recalculation of the choices to display, in seconds.",
        "doc": "Time between the last keystroke and the start of the recalculation of the choices to display, in seconds.\n\nNotes:\n * Defaults to 0.02s (20ms).",
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "37",
        "name": "queryChangedTimerDuration",
        "notes": [
          " * Defaults to 0.02s (20ms)."
        ],
        "signature": "Seal.queryChangedTimerDuration",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal:refreshAllCommands()",
        "desc": "Refresh the list of commands provided by all the currently loaded plugins.",
        "doc": "Refresh the list of commands provided by all the currently loaded plugins.\n\nParameters:\n * None\n\nReturns:\n * The Seal object\n\nNotes:\n * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands.",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "75",
        "name": "refreshAllCommands",
        "notes": [
          " * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands."
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:refreshAllCommands()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:refreshCommandsForPlugin(plugin_name)",
        "desc": "Refresh the list of commands provided by the given plugin.",
        "doc": "Refresh the list of commands provided by the given plugin.\n\nParameters:\n * plugin_name - the name of the plugin. Should be the name as passed to `loadPlugins()` or `loadPluginFromFile`.\n\nReturns:\n * The Seal object\n\nNotes:\n * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands.",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "50",
        "name": "refreshCommandsForPlugin",
        "notes": [
          " * Most Seal plugins expose a static list of commands (if any), which are registered at the time the plugin is loaded. This method is used for plugins which expose a dynamic or changing (e.g. depending on configuration) list of commands."
        ],
        "parameters": [
          " * plugin_name - the name of the plugin. Should be the name as passed to `loadPlugins()` or `loadPluginFromFile`."
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:refreshCommandsForPlugin(plugin_name)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:show(query)",
        "desc": "Shows the Seal UI",
        "doc": "Shows the Seal UI\n\nParameters:\n * query - An optional string to pre-populate the query box with\n\nReturns:\n * None\n\nNotes:\n * This may be useful if you wish to show Seal in response to something other than its hotkey",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "234",
        "name": "show",
        "notes": [
          " * This may be useful if you wish to show Seal in response to something other than its hotkey"
        ],
        "parameters": [
          " * query - An optional string to pre-populate the query box with"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal:show(query)",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:start()",
        "desc": "Starts Seal",
        "doc": "Starts Seal\n\nParameters:\n * None\n\nReturns:\n * The Seal object",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "190",
        "name": "start",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:start()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:stop()",
        "desc": "Stops Seal",
        "doc": "Stops Seal\n\nParameters:\n * None\n\nReturns:\n * The Seal object\n\nNotes:\n * Some Seal plugins will continue performing background work even after this call (e.g. Spotlight searches)",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "210",
        "name": "stop",
        "notes": [
          " * Some Seal plugins will continue performing background work even after this call (e.g. Spotlight searches)"
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * The Seal object"
        ],
        "signature": "Seal:stop()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal:toggle(query)",
        "desc": "Shows or hides the Seal UI",
        "doc": "Shows or hides the Seal UI\n\nParameters:\n * query - An optional string to pre-populate the query box with\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//init.lua",
        "lineno": "252",
        "name": "toggle",
        "notes": [],
        "parameters": [
          " * query - An optional string to pre-populate the query box with"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal:toggle(query)",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "name": "Seal",
    "stripped_doc": "\nDownload: [https://github.com/Hammerspoon/Spoons/raw/master/Spoons/Seal.spoon.zip](https://github.com/Hammerspoon/Spoons/raw/master/Spoons/Seal.spoon.zip)\n\nSeal includes a number of plugins, which you can choose to load (see `:loadPlugins()` below):\n * apps : Launch applications by name\n * calc : Simple calculator\n * rot13 : Apply ROT13 substitution cipher\n * safari_bookmarks : Open Safari bookmarks (this is broken since at least High Sierra)\n * screencapture : Lets you take screenshots in various ways\n * urlformats : User defined URL formats to open\n * useractions : User defined custom actions\n * vpn : Connect and disconnect VPNs (currently supports Viscosity and macOS system preferences)A",
    "submodules": [
      "plugins"
    ],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [],
    "desc": "Various APIs for Seal plugins",
    "doc": "Various APIs for Seal plugins",
    "items": [],
    "name": "Seal.plugins",
    "stripped_doc": "",
    "submodules": [
      "apps",
      "filesearch",
      "pasteboard",
      "safari_bookmarks",
      "screencapture",
      "urlformats",
      "useractions"
    ],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [
      {
        "def": "Seal.plugins.apps:restart()",
        "desc": "Restarts the Spotlight app searcher",
        "doc": "Restarts the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "105",
        "name": "restart",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:restart()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal.plugins.apps:start()",
        "desc": "Starts the Spotlight app searcher",
        "doc": "Starts the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None\n\nNotes:\n * This is called automatically when the plugin is loaded",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "70",
        "name": "start",
        "notes": [
          " * This is called automatically when the plugin is loaded"
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:start()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal.plugins.apps:stop()",
        "desc": "Stops the Spotlight app searcher",
        "doc": "Stops the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "90",
        "name": "stop",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:stop()",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "Variable": [
      {
        "def": "Seal.plugins.apps.appSearchPaths",
        "desc": "Table containing the paths to search for launchable items",
        "doc": "Table containing the paths to search for launchable items\n\nNotes:\n * If you change this, you will need to call `spoon.Seal.plugins.apps:restart()` to force Spotlight to search for new items.",
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "9",
        "name": "appSearchPaths",
        "notes": [
          " * If you change this, you will need to call `spoon.Seal.plugins.apps:restart()` to force Spotlight to search for new items."
        ],
        "signature": "Seal.plugins.apps.appSearchPaths",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "desc": "A plugin to add launchable apps/scripts, making Seal act as a launch bar",
    "doc": "A plugin to add launchable apps/scripts, making Seal act as a launch bar",
    "items": [
      {
        "def": "Seal.plugins.apps.appSearchPaths",
        "desc": "Table containing the paths to search for launchable items",
        "doc": "Table containing the paths to search for launchable items\n\nNotes:\n * If you change this, you will need to call `spoon.Seal.plugins.apps:restart()` to force Spotlight to search for new items.",
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "9",
        "name": "appSearchPaths",
        "notes": [
          " * If you change this, you will need to call `spoon.Seal.plugins.apps:restart()` to force Spotlight to search for new items."
        ],
        "signature": "Seal.plugins.apps.appSearchPaths",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.apps:restart()",
        "desc": "Restarts the Spotlight app searcher",
        "doc": "Restarts the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "105",
        "name": "restart",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:restart()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal.plugins.apps:start()",
        "desc": "Starts the Spotlight app searcher",
        "doc": "Starts the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None\n\nNotes:\n * This is called automatically when the plugin is loaded",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "70",
        "name": "start",
        "notes": [
          " * This is called automatically when the plugin is loaded"
        ],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:start()",
        "stripped_doc": "",
        "type": "Method"
      },
      {
        "def": "Seal.plugins.apps:stop()",
        "desc": "Stops the Spotlight app searcher",
        "doc": "Stops the Spotlight app searcher\n\nParameters:\n * None\n\nReturns:\n * None",
        "examples": [],
        "file": "Source/Seal.spoon//seal_apps.lua",
        "lineno": "90",
        "name": "stop",
        "notes": [],
        "parameters": [
          " * None"
        ],
        "returns": [
          " * None"
        ],
        "signature": "Seal.plugins.apps:stop()",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "name": "Seal.plugins.apps",
    "stripped_doc": "",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [
      {
        "def": "Seal.plugins.filesearch.displayResultsTimeout",
        "desc": "Maximum time to wait before displaying the results",
        "doc": "Maximum time to wait before displaying the results\nDefaults to 0.2s (200ms).\n\nNotes:\n * higher value might give you more results but will give a less snappy experience",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "21",
        "name": "displayResultsTimeout",
        "notes": [
          " * higher value might give you more results but will give a less snappy experience"
        ],
        "signature": "Seal.plugins.filesearch.displayResultsTimeout",
        "stripped_doc": "Defaults to 0.2s (200ms).",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.filesearch.fileSearchPaths",
        "desc": "Table containing the paths to search for files",
        "doc": "Table containing the paths to search for files\n\nNotes:\n * You will need to authorize hammerspoon to access the folders in this list in order for this to work.",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "8",
        "name": "fileSearchPaths",
        "notes": [
          " * You will need to authorize hammerspoon to access the folders in this list in order for this to work."
        ],
        "signature": "Seal.plugins.filesearch.fileSearchPaths",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.filesearch.maxResults",
        "desc": "Maximum number of results to display",
        "doc": "Maximum number of results to display",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "16",
        "name": "maxResults",
        "signature": "Seal.plugins.filesearch.maxResults",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "desc": "A plugin to add file search capabilities, making Seal act as a spotlight file search",
    "doc": "A plugin to add file search capabilities, making Seal act as a spotlight file search",
    "items": [
      {
        "def": "Seal.plugins.filesearch.displayResultsTimeout",
        "desc": "Maximum time to wait before displaying the results",
        "doc": "Maximum time to wait before displaying the results\nDefaults to 0.2s (200ms).\n\nNotes:\n * higher value might give you more results but will give a less snappy experience",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "21",
        "name": "displayResultsTimeout",
        "notes": [
          " * higher value might give you more results but will give a less snappy experience"
        ],
        "signature": "Seal.plugins.filesearch.displayResultsTimeout",
        "stripped_doc": "Defaults to 0.2s (200ms).",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.filesearch.fileSearchPaths",
        "desc": "Table containing the paths to search for files",
        "doc": "Table containing the paths to search for files\n\nNotes:\n * You will need to authorize hammerspoon to access the folders in this list in order for this to work.",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "8",
        "name": "fileSearchPaths",
        "notes": [
          " * You will need to authorize hammerspoon to access the folders in this list in order for this to work."
        ],
        "signature": "Seal.plugins.filesearch.fileSearchPaths",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.filesearch.maxResults",
        "desc": "Maximum number of results to display",
        "doc": "Maximum number of results to display",
        "file": "Source/Seal.spoon//seal_filesearch.lua",
        "lineno": "16",
        "name": "maxResults",
        "signature": "Seal.plugins.filesearch.maxResults",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "name": "Seal.plugins.filesearch",
    "stripped_doc": "",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [
      {
        "def": "Seal.plugins.pasteboard.historySize",
        "desc": "",
        "doc": "\nThe number of history items to keep. Defaults to 50",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "12",
        "name": "historySize",
        "signature": "Seal.plugins.pasteboard.historySize",
        "stripped_doc": "The number of history items to keep. Defaults to 50",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.pasteboard.saveHistory",
        "desc": "",
        "doc": "\nA boolean, true if Seal should automatically load/save clipboard history. Defaults to true",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "18",
        "name": "saveHistory",
        "signature": "Seal.plugins.pasteboard.saveHistory",
        "stripped_doc": "A boolean, true if Seal should automatically load/save clipboard history. Defaults to true",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.pasteboard.skipUTIs",
        "desc": "",
        "doc": "\nAn array of UTIs to skip when saving to the history. Defaults to:\n```\n{\n  \"de.petermaurer.TransientPasteboardType\",\n  \"com.typeit4me.clipping\",\n  \"Pasteboard generator type\",\n  \"com.agilebits.onepassword\",\n  \"org.nspasteboard.TransientType\",\n  \"org.nspasteboard.ConcealedType\",\n  \"org.nspasteboard.AutoGeneratedType\"\n}\n```",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "24",
        "name": "skipUTIs",
        "signature": "Seal.plugins.pasteboard.skipUTIs",
        "stripped_doc": "An array of UTIs to skip when saving to the history. Defaults to:\n```\n{\n  \"de.petermaurer.TransientPasteboardType\",\n  \"com.typeit4me.clipping\",\n  \"Pasteboard generator type\",\n  \"com.agilebits.onepassword\",\n  \"org.nspasteboard.TransientType\",\n  \"org.nspasteboard.ConcealedType\",\n  \"org.nspasteboard.AutoGeneratedType\"\n}\n```",
        "type": "Variable"
      }
    ],
    "desc": "Visual, searchable pasteboard (ie clipboard) history",
    "doc": "Visual, searchable pasteboard (ie clipboard) history",
    "items": [
      {
        "def": "Seal.plugins.pasteboard.historySize",
        "desc": "",
        "doc": "\nThe number of history items to keep. Defaults to 50",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "12",
        "name": "historySize",
        "signature": "Seal.plugins.pasteboard.historySize",
        "stripped_doc": "The number of history items to keep. Defaults to 50",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.pasteboard.saveHistory",
        "desc": "",
        "doc": "\nA boolean, true if Seal should automatically load/save clipboard history. Defaults to true",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "18",
        "name": "saveHistory",
        "signature": "Seal.plugins.pasteboard.saveHistory",
        "stripped_doc": "A boolean, true if Seal should automatically load/save clipboard history. Defaults to true",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.pasteboard.skipUTIs",
        "desc": "",
        "doc": "\nAn array of UTIs to skip when saving to the history. Defaults to:\n```\n{\n  \"de.petermaurer.TransientPasteboardType\",\n  \"com.typeit4me.clipping\",\n  \"Pasteboard generator type\",\n  \"com.agilebits.onepassword\",\n  \"org.nspasteboard.TransientType\",\n  \"org.nspasteboard.ConcealedType\",\n  \"org.nspasteboard.AutoGeneratedType\"\n}\n```",
        "file": "Source/Seal.spoon//seal_pasteboard.lua",
        "lineno": "24",
        "name": "skipUTIs",
        "signature": "Seal.plugins.pasteboard.skipUTIs",
        "stripped_doc": "An array of UTIs to skip when saving to the history. Defaults to:\n```\n{\n  \"de.petermaurer.TransientPasteboardType\",\n  \"com.typeit4me.clipping\",\n  \"Pasteboard generator type\",\n  \"com.agilebits.onepassword\",\n  \"org.nspasteboard.TransientType\",\n  \"org.nspasteboard.ConcealedType\",\n  \"org.nspasteboard.AutoGeneratedType\"\n}\n```",
        "type": "Variable"
      }
    ],
    "name": "Seal.plugins.pasteboard",
    "stripped_doc": "",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [
      {
        "def": "Seal.plugins.safari_bookmarks.always_open_with_safari",
        "desc": "If `true` (default), bookmarks are always opened with Safari, otherwise they are opened with the default application using the `/usr/bin/open` command.",
        "doc": "If `true` (default), bookmarks are always opened with Safari, otherwise they are opened with the default application using the `/usr/bin/open` command.",
        "file": "Source/Seal.spoon//seal_safari_bookmarks.lua",
        "lineno": "11",
        "name": "always_open_with_safari",
        "signature": "Seal.plugins.safari_bookmarks.always_open_with_safari",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "desc": "",
    "doc": "\nNote: Apple has changed the way Safari stores bookmarks and this plugin no longer works on recent macOS releases.",
    "items": [
      {
        "def": "Seal.plugins.safari_bookmarks.always_open_with_safari",
        "desc": "If `true` (default), bookmarks are always opened with Safari, otherwise they are opened with the default application using the `/usr/bin/open` command.",
        "doc": "If `true` (default), bookmarks are always opened with Safari, otherwise they are opened with the default application using the `/usr/bin/open` command.",
        "file": "Source/Seal.spoon//seal_safari_bookmarks.lua",
        "lineno": "11",
        "name": "always_open_with_safari",
        "signature": "Seal.plugins.safari_bookmarks.always_open_with_safari",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "name": "Seal.plugins.safari_bookmarks",
    "stripped_doc": "Note: Apple has changed the way Safari stores bookmarks and this plugin no longer works on recent macOS releases.",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [
      {
        "def": "Seal.plugins.screencapture.showPostUI",
        "desc": "Whether or not to show the screen capture UI in macOS 10.14 or later",
        "doc": "Whether or not to show the screen capture UI in macOS 10.14 or later",
        "file": "Source/Seal.spoon//seal_screencapture.lua",
        "lineno": "8",
        "name": "showPostUI",
        "signature": "Seal.plugins.screencapture.showPostUI",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "desc": "A plugin to capture the screen in various ways",
    "doc": "A plugin to capture the screen in various ways",
    "items": [
      {
        "def": "Seal.plugins.screencapture.showPostUI",
        "desc": "Whether or not to show the screen capture UI in macOS 10.14 or later",
        "doc": "Whether or not to show the screen capture UI in macOS 10.14 or later",
        "file": "Source/Seal.spoon//seal_screencapture.lua",
        "lineno": "8",
        "name": "showPostUI",
        "signature": "Seal.plugins.screencapture.showPostUI",
        "stripped_doc": "",
        "type": "Variable"
      }
    ],
    "name": "Seal.plugins.screencapture",
    "stripped_doc": "",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [
      {
        "def": "Seal.plugins.urlformats:providersTable(aTable)",
        "desc": "Gets or sets the current providers table",
        "doc": "Gets or sets the current providers table\n\nParameters:\n * aTable - An optional table of providers, which must contain the following keys:\n   * name - A string naming the provider, which will be shown in the Seal results\n   * url - A string containing the URL to insert the user's query into. This should contain one and only one `%s`\n\nReturns:\n * Either a table of current providers, if no parameter was passed, or nothing if a parmameter was passed.\n\nNotes:\n * An example table might look like:\n```lua\n{\n  rhbz = { name = \"Red Hat Bugzilla\", url = \"https://bugzilla.redhat.com/show_bug.cgi?id=%s\", },\n  lp = { name = \"Launchpad Bug\", url = \"https://launchpad.net/bugs/%s\", },\n}\n```",
        "examples": [],
        "file": "Source/Seal.spoon//seal_urlformats.lua",
        "lineno": "97",
        "name": "providersTable",
        "notes": [
          " * An example table might look like:",
          "```lua",
          "{",
          "  rhbz = { name = \"Red Hat Bugzilla\", url = \"https://bugzilla.redhat.com/show_bug.cgi?id=%s\", },",
          "  lp = { name = \"Launchpad Bug\", url = \"https://launchpad.net/bugs/%s\", },",
          "}",
          "```"
        ],
        "parameters": [
          " * aTable - An optional table of providers, which must contain the following keys:\n   * name - A string naming the provider, which will be shown in the Seal results\n   * url - A string containing the URL to insert the user's query into. This should contain one and only one `%s`"
        ],
        "returns": [
          " * Either a table of current providers, if no parameter was passed, or nothing if a parmameter was passed."
        ],
        "signature": "Seal.plugins.urlformats:providersTable(aTable)",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "Variable": [],
    "desc": "A plugin to quickly open URLs containing a search/query term",
    "doc": "A plugin to quickly open URLs containing a search/query term\nThis plugin is invoked with the `uf` keyword and requires some configuration, see `:providersTable()`\n\nThe way this works is by defining a set of providers, each of which contains a URL with a `%s` somewhere insert it.\nWhen the user types `uf` in Seal, followed by some more characters, those characters will be inserted into the string at the point where the `%s` is.\n\nBy way of an example, you could define a provider with a url like `http://bugs.mycorp.com/showBug?id=%s`, and just need to type `uf 123456` in Seal to get a quick shortcut to open the full URL.",
    "items": [
      {
        "def": "Seal.plugins.urlformats:providersTable(aTable)",
        "desc": "Gets or sets the current providers table",
        "doc": "Gets or sets the current providers table\n\nParameters:\n * aTable - An optional table of providers, which must contain the following keys:\n   * name - A string naming the provider, which will be shown in the Seal results\n   * url - A string containing the URL to insert the user's query into. This should contain one and only one `%s`\n\nReturns:\n * Either a table of current providers, if no parameter was passed, or nothing if a parmameter was passed.\n\nNotes:\n * An example table might look like:\n```lua\n{\n  rhbz = { name = \"Red Hat Bugzilla\", url = \"https://bugzilla.redhat.com/show_bug.cgi?id=%s\", },\n  lp = { name = \"Launchpad Bug\", url = \"https://launchpad.net/bugs/%s\", },\n}\n```",
        "examples": [],
        "file": "Source/Seal.spoon//seal_urlformats.lua",
        "lineno": "97",
        "name": "providersTable",
        "notes": [
          " * An example table might look like:",
          "```lua",
          "{",
          "  rhbz = { name = \"Red Hat Bugzilla\", url = \"https://bugzilla.redhat.com/show_bug.cgi?id=%s\", },",
          "  lp = { name = \"Launchpad Bug\", url = \"https://launchpad.net/bugs/%s\", },",
          "}",
          "```"
        ],
        "parameters": [
          " * aTable - An optional table of providers, which must contain the following keys:\n   * name - A string naming the provider, which will be shown in the Seal results\n   * url - A string containing the URL to insert the user's query into. This should contain one and only one `%s`"
        ],
        "returns": [
          " * Either a table of current providers, if no parameter was passed, or nothing if a parmameter was passed."
        ],
        "signature": "Seal.plugins.urlformats:providersTable(aTable)",
        "stripped_doc": "",
        "type": "Method"
      }
    ],
    "name": "Seal.plugins.urlformats",
    "stripped_doc": "This plugin is invoked with the `uf` keyword and requires some configuration, see `:providersTable()`\n\nThe way this works is by defining a set of providers, each of which contains a URL with a `%s` somewhere insert it.\nWhen the user types `uf` in Seal, followed by some more characters, those characters will be inserted into the string at the point where the `%s` is.\n\nBy way of an example, you could define a provider with a url like `http://bugs.mycorp.com/showBug?id=%s`, and just need to type `uf 123456` in Seal to get a quick shortcut to open the full URL.",
    "submodules": [],
    "type": "Module"
  },
  {
    "Command": [],
    "Constant": [],
    "Constructor": [],
    "Deprecated": [],
    "Field": [],
    "Function": [],
    "Method": [],
    "Variable": [
      {
        "def": "Seal.plugins.useractions.actions",
        "desc": "",
        "doc": "\nNotes:\n * A table containing the definitions of static user-defined actions. Each entry is indexed by the name of the entry as it will be shown in the chooser. Its value is a table which can have the following keys (one of `fn` or `url` is required. If both are provided, `url` is ignored):\n  * fn - A function which will be called when the entry is selected. The function receives no arguments.\n  * url - A URL which will be opened when the entry is selected. Can also be non-HTTP URLs, such as `mailto:` or other app-specific URLs.\n  * description - (optional) A string or `hs.styledtext` object that will be shown underneath the main text of the choice.\n  * icon - (optional) An `hs.image` object that will be shown next to the entry in the chooser. If not provided, `Seal.plugins.useractions.default_icon` is used. For `url` bookmarks, it can be set to `\"favicon\"` to fetch and use the website's favicon.\n  * keyword - (optional) A command by which this action will be invoked, effectively turning it into a Seal command. Any arguments passed to the command will be handled as follows:\n    * For `fn` actions, passed as an argument to the function\n    * For `url` actions, substituted into the URL, taking the place of any occurrences of `${query}`.\n  * hotkey - (optional) A hotkey specification in the form `{ modifiers, key }` by which this action can be invoked.\n * Example configuration:\n```\nspoon.Seal:loadPlugins({\"useractions\"})\nspoon.Seal.plugins.useractions.actions =\n   {\n      [\"Hammerspoon docs webpage\"] = {\n         url = \"http://hammerspoon.org/docs/\",\n         icon = hs.image.imageFromName(hs.image.systemImageNames.ApplicationIcon),\n         description = \"Open Hammerspoon documentation\",\n         hotkey = { hyper, \"h\" },\n      },\n      [\"Leave corpnet\"] = {\n         fn = function()\n            spoon.WiFiTransitions:processTransition('foo', 'corpnet01')\n         end,\n      },\n      [\"Arrive in corpnet\"] = {\n         fn = function()\n            spoon.WiFiTransitions:processTransition('corpnet01', 'foo')\n         end,\n      },\n      [\"Translate using Leo\"] = {\n         url = \"http://dict.leo.org/ende/index_de.html#/search=${query}\",\n         icon = 'favicon',\n         keyword = \"leo\",\n      },\n      [\"Tell me something\"] = {\n         keyword = \"tellme\",\n         fn = function(str) hs.alert.show(str) end,\n      }\n```",
        "file": "Source/Seal.spoon//seal_useractions.lua",
        "lineno": "12",
        "name": "actions",
        "notes": [
          " * A table containing the definitions of static user-defined actions. Each entry is indexed by the name of the entry as it will be shown in the chooser. Its value is a table which can have the following keys (one of `fn` or `url` is required. If both are provided, `url` is ignored):",
          "  * fn - A function which will be called when the entry is selected. The function receives no arguments.",
          "  * url - A URL which will be opened when the entry is selected. Can also be non-HTTP URLs, such as `mailto:` or other app-specific URLs.",
          "  * description - (optional) A string or `hs.styledtext` object that will be shown underneath the main text of the choice.",
          "  * icon - (optional) An `hs.image` object that will be shown next to the entry in the chooser. If not provided, `Seal.plugins.useractions.default_icon` is used. For `url` bookmarks, it can be set to `\"favicon\"` to fetch and use the website's favicon.",
          "  * keyword - (optional) A command by which this action will be invoked, effectively turning it into a Seal command. Any arguments passed to the command will be handled as follows:",
          "    * For `fn` actions, passed as an argument to the function",
          "    * For `url` actions, substituted into the URL, taking the place of any occurrences of `${query}`.",
          "  * hotkey - (optional) A hotkey specification in the form `{ modifiers, key }` by which this action can be invoked.",
          " * Example configuration:",
          "```",
          "spoon.Seal:loadPlugins({\"useractions\"})",
          "spoon.Seal.plugins.useractions.actions =",
          "   {",
          "      [\"Hammerspoon docs webpage\"] = {",
          "         url = \"http://hammerspoon.org/docs/\",",
          "         icon = hs.image.imageFromName(hs.image.systemImageNames.ApplicationIcon),",
          "         description = \"Open Hammerspoon documentation\",",
          "         hotkey = { hyper, \"h\" },",
          "      },",
          "      [\"Leave corpnet\"] = {",
          "         fn = function()",
          "            spoon.WiFiTransitions:processTransition('foo', 'corpnet01')",
          "         end,",
          "      },",
          "      [\"Arrive in corpnet\"] = {",
          "         fn = function()",
          "            spoon.WiFiTransitions:processTransition('corpnet01', 'foo')",
          "         end,",
          "      },",
          "      [\"Translate using Leo\"] = {",
          "         url = \"http://dict.leo.org/ende/index_de.html#/search=${query}\",",
          "         icon = 'favicon',",
          "         keyword = \"leo\",",
          "      },",
          "      [\"Tell me something\"] = {",
          "         keyword = \"tellme\",",
          "         fn = function(str) hs.alert.show(str) end,",
          "      }",
          "```"
        ],
        "signature": "Seal.plugins.useractions.actions",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.useractions.get_favicon",
        "desc": "",
        "doc": "\nIf `true`, attempt to obtain the favicon for URLs added through the `add` command, and use it in the chooser. Defaults to `true`",
        "file": "Source/Seal.spoon//seal_useractions.lua",
        "lineno": "58",
        "name": "get_favicon",
        "signature": "Seal.plugins.useractions.get_favicon",
        "stripped_doc": "If `true`, attempt to obtain the favicon for URLs added through the `add` command, and use it in the chooser. Defaults to `true`",
        "type": "Variable"
      }
    ],
    "desc": "Allow accessing user-defined bookmarks and arbitrary actions from Seal.",
    "doc": "Allow accessing user-defined bookmarks and arbitrary actions from Seal.\n",
    "items": [
      {
        "def": "Seal.plugins.useractions.actions",
        "desc": "",
        "doc": "\nNotes:\n * A table containing the definitions of static user-defined actions. Each entry is indexed by the name of the entry as it will be shown in the chooser. Its value is a table which can have the following keys (one of `fn` or `url` is required. If both are provided, `url` is ignored):\n  * fn - A function which will be called when the entry is selected. The function receives no arguments.\n  * url - A URL which will be opened when the entry is selected. Can also be non-HTTP URLs, such as `mailto:` or other app-specific URLs.\n  * description - (optional) A string or `hs.styledtext` object that will be shown underneath the main text of the choice.\n  * icon - (optional) An `hs.image` object that will be shown next to the entry in the chooser. If not provided, `Seal.plugins.useractions.default_icon` is used. For `url` bookmarks, it can be set to `\"favicon\"` to fetch and use the website's favicon.\n  * keyword - (optional) A command by which this action will be invoked, effectively turning it into a Seal command. Any arguments passed to the command will be handled as follows:\n    * For `fn` actions, passed as an argument to the function\n    * For `url` actions, substituted into the URL, taking the place of any occurrences of `${query}`.\n  * hotkey - (optional) A hotkey specification in the form `{ modifiers, key }` by which this action can be invoked.\n * Example configuration:\n```\nspoon.Seal:loadPlugins({\"useractions\"})\nspoon.Seal.plugins.useractions.actions =\n   {\n      [\"Hammerspoon docs webpage\"] = {\n         url = \"http://hammerspoon.org/docs/\",\n         icon = hs.image.imageFromName(hs.image.systemImageNames.ApplicationIcon),\n         description = \"Open Hammerspoon documentation\",\n         hotkey = { hyper, \"h\" },\n      },\n      [\"Leave corpnet\"] = {\n         fn = function()\n            spoon.WiFiTransitions:processTransition('foo', 'corpnet01')\n         end,\n      },\n      [\"Arrive in corpnet\"] = {\n         fn = function()\n            spoon.WiFiTransitions:processTransition('corpnet01', 'foo')\n         end,\n      },\n      [\"Translate using Leo\"] = {\n         url = \"http://dict.leo.org/ende/index_de.html#/search=${query}\",\n         icon = 'favicon',\n         keyword = \"leo\",\n      },\n      [\"Tell me something\"] = {\n         keyword = \"tellme\",\n         fn = function(str) hs.alert.show(str) end,\n      }\n```",
        "file": "Source/Seal.spoon//seal_useractions.lua",
        "lineno": "12",
        "name": "actions",
        "notes": [
          " * A table containing the definitions of static user-defined actions. Each entry is indexed by the name of the entry as it will be shown in the chooser. Its value is a table which can have the following keys (one of `fn` or `url` is required. If both are provided, `url` is ignored):",
          "  * fn - A function which will be called when the entry is selected. The function receives no arguments.",
          "  * url - A URL which will be opened when the entry is selected. Can also be non-HTTP URLs, such as `mailto:` or other app-specific URLs.",
          "  * description - (optional) A string or `hs.styledtext` object that will be shown underneath the main text of the choice.",
          "  * icon - (optional) An `hs.image` object that will be shown next to the entry in the chooser. If not provided, `Seal.plugins.useractions.default_icon` is used. For `url` bookmarks, it can be set to `\"favicon\"` to fetch and use the website's favicon.",
          "  * keyword - (optional) A command by which this action will be invoked, effectively turning it into a Seal command. Any arguments passed to the command will be handled as follows:",
          "    * For `fn` actions, passed as an argument to the function",
          "    * For `url` actions, substituted into the URL, taking the place of any occurrences of `${query}`.",
          "  * hotkey - (optional) A hotkey specification in the form `{ modifiers, key }` by which this action can be invoked.",
          " * Example configuration:",
          "```",
          "spoon.Seal:loadPlugins({\"useractions\"})",
          "spoon.Seal.plugins.useractions.actions =",
          "   {",
          "      [\"Hammerspoon docs webpage\"] = {",
          "         url = \"http://hammerspoon.org/docs/\",",
          "         icon = hs.image.imageFromName(hs.image.systemImageNames.ApplicationIcon),",
          "         description = \"Open Hammerspoon documentation\",",
          "         hotkey = { hyper, \"h\" },",
          "      },",
          "      [\"Leave corpnet\"] = {",
          "         fn = function()",
          "            spoon.WiFiTransitions:processTransition('foo', 'corpnet01')",
          "         end,",
          "      },",
          "      [\"Arrive in corpnet\"] = {",
          "         fn = function()",
          "            spoon.WiFiTransitions:processTransition('corpnet01', 'foo')",
          "         end,",
          "      },",
          "      [\"Translate using Leo\"] = {",
          "         url = \"http://dict.leo.org/ende/index_de.html#/search=${query}\",",
          "         icon = 'favicon',",
          "         keyword = \"leo\",",
          "      },",
          "      [\"Tell me something\"] = {",
          "         keyword = \"tellme\",",
          "         fn = function(str) hs.alert.show(str) end,",
          "      }",
          "```"
        ],
        "signature": "Seal.plugins.useractions.actions",
        "stripped_doc": "",
        "type": "Variable"
      },
      {
        "def": "Seal.plugins.useractions.get_favicon",
        "desc": "",
        "doc": "\nIf `true`, attempt to obtain the favicon for URLs added through the `add` command, and use it in the chooser. Defaults to `true`",
        "file": "Source/Seal.spoon//seal_useractions.lua",
        "lineno": "58",
        "name": "get_favicon",
        "signature": "Seal.plugins.useractions.get_favicon",
        "stripped_doc": "If `true`, attempt to obtain the favicon for URLs added through the `add` command, and use it in the chooser. Defaults to `true`",
        "type": "Variable"
      }
    ],
    "name": "Seal.plugins.useractions",
    "stripped_doc": "",
    "submodules": [],
    "type": "Module"
  }
]