# WorkspacesPlugin Info.plist Keys

`WorkspacesPlugin` is a dictionary inside a plugin app's `Info.plist`.
It tells Workspaces how the plugin should be exposed and handled.

## Example

```xml
<key>WorkspacesPlugin</key>
<dict>
    <key>IsWorkspacesAction</key>
    <true/>
    <key>ActionName</key>
    <string>My Plugin</string>
    <key>CanEdit</key>
    <true/>
    <key>CanShowPreferences</key>
    <true/>
    <key>RunInNewInstance</key>
    <false/>
    <key>SetLaunch</key>
    <string>onStart</string>
</dict>
```

## Keys

### `IsWorkspacesAction`

`Boolean`, default: `false`

Marks the app as a Workspaces action plugin. The plugin can be added as a
resource to a workspace.

### `IsAction`

`Boolean`, default: `false`

Legacy alias for `IsWorkspacesAction`. It is still recognized for
backward compatibility.

### `IsCommand`

`Boolean`, default: `false`

Marks the app as a Workspaces command plugin. The plugin becomes available
from Workspaces search commands.

### `ActionName`

`String`, default: plugin bundle name

Display name used when the plugin is added as a workspace resource.

### `CommandName`

`String`, default: plugin bundle name

Display name used for the search command.

### `CommandDescription`

`String`, default: empty string

Short description shown for the search command.

### `CommandIcon`

`String`, default: main app icon

Name of an image resource from the plugin bundle used as the command icon.

### `Options`

`Array<String>`, default: empty array

List of allowed constant values for the command parameter.

### `IsOptionRequired`

`Boolean`, default: `false`

If `true`, the command requires a parameter.

### `CanEdit`

`Boolean`, default: `false`

If `true`, Workspaces allows the plugin resource to open its local
configuration editor.

### `CanShowPreferences`

`Boolean`, default: `false`

If `true`, Workspaces allows the plugin to open its global preferences.

### `RunInNewInstance`

`Boolean`, default: `false`

If `true`, Workspaces launches the plugin in a new app instance.

### `SetLaunch`

`String`, optional

Defines the launch mode used when the plugin action is added to a
workspace.

Allowed values:

- `onStart`
- `onFinish`
- `manually`

If the key is missing, `nil`, or contains an invalid value, Workspaces
falls back to the app-wide default resource launch setting.

## Notes

- A plugin can be both a command and an action.
- If neither `IsWorkspacesAction` nor `IsCommand` is enabled, Workspaces
  does not treat the app as a plugin.
