1
0
silverbullet/website/Plugs.md
Zef Hemel f30b1d3418
Templates 2.0 (#636)
Templates 2.0 and a whole bunch of other refactoring
2024-01-20 19:16:07 +01:00

1.6 KiB

SilverBullet at its core is bare bones in terms of functionality, most of its power it gains from plugs.

Plugs are an extension mechanism (implemented using a library called PlugOS) that runs “plug” code in the browser using web workers.

Plugs can hook into SB in various ways:

  • Extend the Markdown parser and its syntax
  • Define new commands and keybindings
  • Respond to various events triggered either on the server or client-side
  • Run recurring and background tasks.
  • Define their own extension mechanisms through custom events

Each plug runs in its own sandboxed environment and communicates with SB via syscalls that expose a vast range of functionality. Plugs can be loaded, unloaded, and updated without having to restart SilverBullet itself.

Plugs are distributed as self-contained JavaScript bundles (ending with .plug.js). SilverBullet will load all core plugs bundled with SB itself (listed below), as well as any additional plugs stored in the _plug folder in your Spaces. Typically, management of plugs in the _plug folder is done using Plug Management.

Core plugs

These plugs are distributed with SilverBullet and are automatically enabled:

plug where uri = null order by name render [[internal-template/plug]]

Third-party plugs

These plugs are written either by third parties or distributed separately from the main SB distribution.

plug where uri != null order by name render [[internal-template/plug]]

Want to develop your own plugs? Have a look at Plugs/Development.