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