Maschinelle Übersetzung aus dem Türkischen (Cloudflare Workers AI), vom Autor nicht geprüft. Türkisches Original lesen

← Beiträge

Das Quickshell-Plugin-Ökosystem: Community-Plugins und modulare Struktur

Bewertung —

Unabhängiges Schreiben von Plugins für Omarchy und Quickshell, Verzeichnishierarchie, QML-Modulladen und Praktiken zur sicheren Ausführung.

· 2 Min. Lesezeit
Inhalt

Zusammenfassung: Es wird erklärt, wie ein Quickshell-Plugin installiert wird: Jedes Plugin besteht in seinem eigenen Verzeichnis aus einer metadata.json und einer Haupt-QML-Datei; Quickshell findet diese zur Laufzeit mit Instantiator und Loader und fügt sie dem Panel hinzu. Ein fehlerhaftes Plugin stoppt nicht den gesamten Desktop, sondern nur sich selbst. Der letzte Abschnitt zeigt als Beispiel die Sicherheits-Plugins, die ich für Omarchy geschrieben habe.

Was eine Desktop-Shell wirklich leistungsfähig macht, sind nicht nur die Funktionen, die die Kernentwickler bereitstellen, sondern eine flexible Plugin-Architektur, zu der die Community leicht beitragen kann. Omarchy Shell und Quickshell machen dank ihrer modularen Komponentenstruktur die Plugin-Entwicklung zum Kinderspiel.

Im Omarchy Plugin-Katalog (plugins.omarchy.org) werden Tausende Community-Plugins geteilt, und Nutzer können sie mit einem einzigen Befehl in ihren Desktop integrieren.

1. Die Anatomie eines Quickshell-Plugins

Jedes Plugin besteht in seinem eigenen unabhängigen Verzeichnis aus einer Manifestdatei (metadata.json) und einer Haupt-QML-Datei:

~/.config/quickshell/plugins/badusb-shield/
├── metadata.json
├── Plugin.qml
└── assets/
    └── icon.svg

Beispiel für ein metadata.json-Manifest

{
  "name": "BadUSB Shield",
  "id": "org.omarchy.badusb-shield",
  "version": "1.2.0",
  "author": "Ozan Özdil",
  "description": "USB veri yollarını anlık izleyen donanım güvenlik eklentisi",
  "entryPoint": "Plugin.qml",
  "category": "security"
}

2. Das dynamische Laden des Plugins

Quickshell entdeckt installierte Plugins zur Laufzeit mithilfe der Komponenten Instantiator oder Loader und platziert sie im Panel:

import QtQuick 2.15
import Quickshell 1.0

Row {
    spacing: 6
    
    Repeater {
        model: PluginManager.installedPlugins
        
        Loader {
            source: modelData.entryPointUrl
        }
    }
}

Selbst wenn im Plugin-Code ein Fehler auftritt, stürzt dank des Isolationsmechanismus von Quickshell nicht der gesamte Desktop ab; nur das betroffene Plugin wird im sicheren Modus gestoppt.

3. Unsere Community-Plugins

Die Cybersicherheits- und Systemwerkzeuge, die wir zum Omarchy-Ökosystem beigetragen haben (BadUSB Shield, CVE Radar, DNS Leak Guard, Ghost MAC usw.), sind die konkretesten Beispiele für die modulare Plugin-Architektur von Quickshell.

Meine Einschätzung

  • Ein Plugin beginnt mit zwei Dateien: eine Manifestdatei und eine QML-Komponente reichen aus.
  • Die Isolation schützt den Desktop: Ein Fehler in einem Plugin stoppt nur dieses Plugin.
  • Der Katalog erleichtert die Verteilung: Plugins lassen sich mit einem einzigen Befehl aus dem Omarchy-Katalog installieren.

Quellen