[comment]: # (Copyright © The Arvados Authors. All rights reserved.) [comment]: # () [comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0) # Plugin support Workbench supports plugins to add new functionality to the user interface. It is also possible to remove the majority of standard UI elements and replace them with your own, enabling you to use workbench as a basis for developing essentially new applications for Arvados. ## Installing plugins 1. Check out the source of your plugin into a directory under `arvados-workbench2/src/plugins` 2. Register the plugin by editing `arvados-workbench2/src/plugins/plugins.tsx`. It will look something like this: ``` import { register as examplePluginRegister } from 'plugins/example/index'; examplePluginRegister(pluginConfig); ``` 3. Rebuild Workbench 2 For testing/development: `yarn start` For production: `APP_NAME=arvados-workbench2-with-custom-plugins make packages` Set `APP_NAME=` to whatever you like, but it is important to name it differently from the standard `arvados-workbench2` to avoid confusion. ## Existing plugins ### example This is an example plugin showing how to add a new navigation tree item, displaying a new center panel, as well as adding account menu and "New" menu items, and showing how to use SET_PROPERTY and getProperty() for state. ### blank This deletes all of the existing user interface. If you want the application to only display your plugin's UI elements and none of the standard elements, you would load and register this first. ### root-redirect This helper takes a path when registered. It tweaks the navigation behavior so that the default starting location when the application loads will be the path you provide, instead of "Projects". ### sample-tracker This is a a new set of user interface screens that assist with clinical sample tracking and analysis. It is intended as a demo of how a real-world application can built using the Workbench 2 plug-in interface. It can be found at https://github.com/arvados/sample-tracker . ## Developing plugins For information about the plugin API, see [../common/plugintypes.ts](src/common/plugintypes.ts).