docs » Seal.plugins.useractions

Allow accessing user-defined bookmarks and arbitrary actions from Seal.

API Overview

API Documentation


Signature Seal.plugins.useractions.actions
Type Variable
  • 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.plugins.useractions.actions =
      ["Hammerspoon docs webpage"] = {
         url = "",
         icon = hs.image.imageFromName(hs.image.systemImageNames.ApplicationIcon),
         description = "Open Hammerspoon documentation",
         hotkey = { hyper, "h" },
      ["Leave corpnet"] = {
         fn = function()
            spoon.WiFiTransitions:processTransition('foo', 'corpnet01')
      ["Arrive in corpnet"] = {
         fn = function()
            spoon.WiFiTransitions:processTransition('corpnet01', 'foo')
      ["Translate using Leo"] = {
         url = "${query}",
         icon = 'favicon',
         keyword = "leo",
      ["Tell me something"] = {
         keyword = "tellme",
         fn = function(str) end,
Source Source/Seal.spoon/seal_useractions.lua line 12
Signature Seal.plugins.useractions.get_favicon
Type Variable
Source Source/Seal.spoon/seal_useractions.lua line 58