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
| Field | Required | Meaning |
|---|---|---|
id | No | Stable unique id. If missing, Waydir falls back to the folder name. |
name | No | Display name in Preferences -> Plugins. |
version | No | Plugin version shown to the user. Defaults to 0.0.0. |
author | No | Author string shown with plugin metadata. |
description | No | Short explanation of the plugin. |
api_version | Yes | Must be 2 for this build. |
permissions | No | List containing exec, fs, both, or neither. |
Permissions
Ask for the least permission the plugin needs. Users see permissions before trusting a plugin.
| Permission | Unlocks |
|---|---|
exec | waydir.exec and waydir.run_task. |
fs | waydir.read_text, write_text, mkdir, exists, list, copy, move, delete, and trash. |
No permission is required for:
waydir.toastwaydir.notifywaydir.dialogwaydir.set_settingwaydir.refreshwaydir.log
Permission bitmask
Internally, the host converts manifest permissions to a native bitmask before calling the Rust plugin runtime:
| Permission | Bit |
|---|---|
exec | 1 << 0 |
fs | 1 << 1 |
Plugins do not need to handle this bitmask directly.