disguise developers

Designer Plugins

Plugins for Disguise Designer software.

Plugin Configuration

This page covers how Designer discovers and loads plugins, how to configure plugin metadata, and how to style your plugin to match Designer’s UI.

Discovery

Designer supports two methods of plugin discovery: local plugins found in project folders and remote plugins discovered through the network.

Local Plugins

Local plugins are discovered in two locations:

  1. Project Plugins Folder: Plugins in the Plugins folder within the current project folder
  2. Common Plugins Folder: Plugins in the common plugins directory, shared across all projects

Designer automatically loads plugins from both locations, with project-specific plugins taking precedence over common plugins if there are naming conflicts.

Remote Plugins

Remote plugins are discovered using DNS Service Discovery (DNS-SD). They must be registered with the following service name format:

<instance>._d3plugin._tcp.<domain>

Where:

For Python-based remote plugins, the Python plugin library provides automatic DNS-SD registration and helper functions. See the Tools & Libraries page.

Metadata

Plugin metadata configures how plugins are presented and behave in Designer. Both local and remote plugins use metadata, though the implementation differs.

Local Plugin Configuration

Local plugins are configured using a d3plugin.json file in the plugin’s root directory. All fields are optional.

{
  "name": string,        // The user-visible name of the plugin
  "url": string,         // The address for this plugin's web resources
  "requiresSession": bool // Whether the plugin requires Designer to be running
}

The url field allows you to specify a custom endpoint for the plugin’s web interface. If not specified, Designer uses its default hosting address.

Remote Plugin Configuration

Remote plugins specify their type through a TXT record added to the DNS service registration.

JSON fieldTXT recordDescriptionOptional
nameN/AUser-visible name. The service instance name is used for remote pluginsYes
urluAddress for web resources. Defaults to host
for remote plugins
Yes
N/AtMust always be webNo
requiresSessionsWhether the plugin requires Designer to be running. true or falseYes

Window Configuration

Window size is configured through HTML meta tags:

<meta name="disguise-plugin-window-size" content="512,512">
<meta name="disguise-plugin-window-min-size" content="200,200">
<meta name="disguise-plugin-window-resizable" content="true">

These control the initial size, minimum size, and resizability of the plugin’s window in Designer.

Styling

Colour Scheme

Designer sets the browser’s colour scheme preference to dark mode when hosting plugins. Implement theme support using the prefers-color-scheme CSS media feature:

/* Default dark theme */
:root {
  --background-color: #1a1a1a;
  --text-color: #ffffff;
}

/* Override for light theme if needed */
@media (prefers-color-scheme: light) {
  :root {
    --background-color: #ffffff;
    --text-color: #000000;
  }
}

Alpha Backgrounds

Designer supports transparent backgrounds for plugin pages. When a plugin’s background is transparent, it inherits Designer’s default blurred background, similar to other widgets.

body {
  background-color: rgba(0, 0, 0, 0); /* Fully transparent */
  /* or */
  background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent */
}

This is useful for creating floating or overlay-style interfaces that blend with Designer’s environment.