Skip to content
DeskSSH

Plugin type · .json

Adapters — teach DeskSSH a new OS

An adapter maps the DeskSSH capability catalog to the commands of a specific operating-system family. It is how the desktop reaches beyond the OSes it already knows.

An adapter is a single JSON manifest — no host-side code. Because it is pure data, every capability is a declarative command template plus a rule for parsing the output into records. Nothing arbitrary ever runs on the remote.

The osSupport field lists the os-release IDs the adapter matches (for example fedora, rhel, centos). At connection time DeskSSH picks the adapter whose osSupport matches the host, and runs your templates for each capability the user triggers.

Drop the file into ~/.deskssh/plugins/adapters/, or import it from Settings → Import. That is the whole distribution story: one reviewable file.

adapters/fedora.json json
{
  "schema": 1,
  "kind": "adapter",
  "id": "fedora",
  "name": "Fedora / RHEL",
  "version": "0.1.0",
  "author": { "name": "you", "github": "you" },
  "license": "AGPL-3.0-or-later",
  "contract": "^0.1.0",
  "osSupport": ["fedora", "rhel", "centos"],
  "capabilities": {
    "listServices": {
      "template": "systemctl list-units --type=service --all --plain --no-pager",
      "normalize": {
        "kind": "records",
        "columnDelimiter": "\\s+",
        "columns": ["unit", "load", "active", "sub", "description"]
      }
    }
  }
}
osSupport
os-release IDs / families this adapter matches, e.g. ["fedora","rhel"].
contract
The Contract (capability catalog) range the adapter implements, e.g. ^0.1.0.
capabilities
A map of capability → { template, normalize }. Declarative only — never a function.
normalize
A records spec: columnDelimiter + columns that turn command output into rows.

This is how DeskSSH grows past Debian

The core ships a Debian-family adapter today, but the model is open: write an adapter for your distro and DeskSSH speaks it — no changes to the core needed.