Skip to content

Plugin System

RDE supports extending functionality through plugins using Unix Socket HTTP communication with hot-swappable loading.

Plugin Architecture

RDE Main Process
  ↕ Unix Socket HTTP
Plugin Process (standalone binary)

Plugins run as independent processes communicating with the RDE main process via Unix Socket. This design ensures:

  • Plugin crashes don't affect the main program
  • Multi-language plugin development (Go, Python, Node.js, etc.)
  • Hot-swappable, no RDE restart needed

Plugin Capabilities

Plugins can:

  • Register new desktop apps (windows, icons, menu items)
  • Add API routes
  • Listen to system events
  • Access the file system

Developing Plugins

A minimal plugin example (Go):

package main

import (
    "net"
    "net/http"
)

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/api/hello", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte(`{"message": "Hello from plugin!"}`))
    })

    listener, _ := net.Listen("unix", "/run/rde/plugins/hello.sock")
    http.Serve(listener, mux)
}

Plugin Manifest

Each plugin needs a manifest.json descriptor file:

{
  "id": "hello-plugin",
  "name": "Hello Plugin",
  "version": "1.0.0",
  "description": "A sample plugin",
  "entry": "./hello-plugin",
  "socket": "/run/rde/plugins/hello.sock"
}

Installing Plugins

Place the plugin directory in RDE's plugin directory, and RDE will automatically detect and load it.

See the GitHub repository for detailed plugin development guide.

Released under the GPL-3.0 License. | Docs · GitHub
QQ Group: QQ Group QR Code