Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions docs/dev/plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,37 @@ To start, we suggest you download the [sample plugin](https://github.com/Vector3
- For small scripts, you can include all the code inside `__init__.py`, though we recommend for larger scripts that `__init__.py` just act as an initializer and calls into functions organized appropriately in other files.
- If you have python dependencies, create a [requirements.txt](https://pip.pypa.io/en/latest/cli/pip_freeze/) listing any python dependencies.

### Submitting to the Plugin Manager
### Plugin Description Display

If your plugin was created as described above, there's only two steps to get it submitted to the plugin manager!
Binary Ninja displays plugin descriptions differently depending on the contents of the `plugin.json` file.

- If `longdescription` exists **and is longer than 100 characters**, the Extension Manager displays the `longdescription`.
- If `longdescription` is missing, or is **100 characters or fewer**, the Extension Manager instead displays the contents of the plugin repository's `README.md`.

**Tip:** If you want the Extension Manager to display your full README as the plugin description, leave the `longdescription` field blank. When longdescription is omitted, Binary Ninja falls back to displaying the contents of your `README.md`, which generally provides a richer and better-formatted description of your plugin.

### Images in README Files

When you include images for preview in the Extension Manager, be aware that animated gifs are not fully supported. They will be rendered as static images of the first frame.

Additionally, all images should be included using FULL GitHub URLs as they will not render in the Extension Manager without that.

For example:

![](https://raw.githubusercontent.com/Vector35/6502/refs/heads/master/media/nes.png)

### Submitting to the Extension Manager

If your plugin was created as described above, there's only two steps to get it submitted to the Extension Manager!

1. First, create a release either [manually](https://binary.ninja/2019/07/04/plugin-manager-2.0.html#5-create-a-release) or using our [release helper](https://github.com/Vector35/release_helper).
1. Next, just [file an issue](https://github.com/Vector35/community-plugins/issues/new/choose) letting us know about your plugin.
2. Next, just [file an issue](https://github.com/Vector35/community-plugins/issues/new/choose) letting us know about your plugin.

For future releases all you need to do is increment the version and create a new release.

### Using Your Own Plugin Repository

The simplest way to run your own plugin repository using the new V2 plugin manager is to use the [mock server](https://github.com/Vector35/binaryninja-api/blob/dev/python/examples/mock_extension_server.py) helper script (a copy is available offline as well in the install path, in the python exapmle scripts subfolder).
The simplest way to run your own plugin repository using the new Extension Manager is to use the [mock server](https://github.com/Vector35/binaryninja-api/blob/dev/python/examples/mock_extension_server.py) helper script (a copy is available offline as well in the install path, in the python exapmle scripts subfolder).

Once you've created your test repository, use the `pluginManager.unofficialName` and `pluginManager.unofficialUrl` settings to add your third-party repository.

Expand Down Expand Up @@ -381,9 +400,9 @@ There are a few other options you can use to assist in debugging:
As a footnote, it should be noted that most of the team at Vector 35 use VSCode as a bare text editor
and use command-line lldb or gdb to debug their code. Shout-outs to people trying to get this working in Vim.

## Submitting to the plugin manager
## Submitting to the Extension Manager

While native plugins are not fully supported in the plugin manager at this time, it's possible to work around this limitation by pre-building a native plugin for all three platforms and using a python plugin that acts as a loader for the native plugin. Additionally, you can submit a plugin as "view_only" which helps with discoverability.
While native plugins are not fully supported in the Extension Manager at this time, it's possible to work around this limitation by pre-building a native plugin for all three platforms and using a python plugin that acts as a loader for the native plugin. Additionally, you can submit a plugin as "view_only" which helps with discoverability.

## Examples

Expand Down
Loading