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.
Inhalt
Zusammenfassung: Es wird erklärt, wie ein Quickshell-Plugin installiert wird: Jedes Plugin besteht in seinem eigenen Verzeichnis aus einer
metadata.jsonund einer Haupt-QML-Datei; Quickshell findet diese zur Laufzeit mitInstantiatorundLoaderund 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.