Skip to content

Manifest

manifest.json is read before Lua runs. If it is missing, invalid, or uses an unsupported API version, Waydir disables the plugin and shows the load error in plugin settings.

Example

json
{
  "id": "my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "author": "you",
  "description": "One sentence about what it does.",
  "api_version": 2,
  "permissions": ["exec", "fs"]
}

Fields

FieldRequiredMeaning
idNoStable unique id. If missing, Waydir falls back to the folder name.
nameNoDisplay name in Preferences -> Plugins.
versionNoPlugin version shown to the user. Defaults to 0.0.0.
authorNoAuthor string shown with plugin metadata.
descriptionNoShort explanation of the plugin.
api_versionYesMust be 2 for this build.
permissionsNoList containing exec, fs, both, or neither.

Permissions

Ask for the least permission the plugin needs. Users see permissions before trusting a plugin.

PermissionUnlocks
execwaydir.exec and waydir.run_task.
fswaydir.read_text, write_text, mkdir, exists, list, copy, move, delete, and trash.

No permission is required for:

  • waydir.toast
  • waydir.notify
  • waydir.dialog
  • waydir.set_setting
  • waydir.refresh
  • waydir.log

Permission bitmask

Internally, the host converts manifest permissions to a native bitmask before calling the Rust plugin runtime:

PermissionBit
exec1 << 0
fs1 << 1

Plugins do not need to handle this bitmask directly.

MIT licensed. Open source.