Plasmoids mit QML erstellen

Was sind Plasmoids?

Plasmoids sind Widgets die direkt auf der KDE-Oberfläche platziert werden können. Beispiele für Plasmoids sind ein Notizblock, Kalender und eine Anzeige der Festplattenbelegung.
Plasmoid zur Anzeige der Festplattenbelegung

Neben QML können Plasmoids auch in C++, JavaScript, Ruby oder Python erstellt werden.

Voraussetzungen

Um Plasmoids mit QML erstellen werden mindestens KDE 4.6 und das Qt-SDK in der Version 4.7.1 vorausgesetzt.

Ordnerstruktur

Unterhalb des Anwendungsverzeichnisses befindet sich eine Datei metadata.desktop, die allgemeine Informationen über das Plasmoid bereitstellt und ein Ordner content, der den eigentlichen Code der Oberfläche (Ordner ui) und dahzugehörige Daten (Ordner data) enthält. Der Code wird üblicherweise über eine Datei main.qml ausgeführt.
Nochmals die Struktur:

  • helloworld
    • metadata.desktop
    • content
      • ui
        • main.qml
      • data
        • Daten

Metadaten

Ähnlich wie bei einem Debian-Paket, können auch bei Plasmoids Metadaten angegeben werden. Diese befinden sich in der Datei metadata.desktop.
Folgende Variablen stehen zur Verfügung:

Variable Bedeutung
Encoding Encoding des Textes
Name Name des Plasmoids
Name[Sprache] Name des Plasmoids in der angegebenen Sprache
Type
ServiceTypes
Icon Icon, das KDE für das Plasmoid anzeigt
Comment Kommentar
X-Plasma-API Sprache in der das Plasmoid geschrieben ist, für QML ist das declarativeappletscript
X-Plasma-MainScript Haupt-Skript des Plasmoids, üblicherweise ui/main.qml
X-Plasma-DefaultSize Standard-Größe des Plasmoids
X-KDE-PluginInfo-Author Name des Autors
X-KDE-PluginInfo-Email Mail-Addresse des Autors
X-KDE-PluginInfo-Website Website des Plasmoids/Autors
X-KDE-PluginInfo-Category Kategorie unter der das Plasmoid angezeigt wird
X-KDE-PluginInfo-Name Installationspfad: ~/.kde/share/apps/plasma/<X-KDE-PluginInfo-Name>/
X-KDE-PluginInfo-Version Versionsnummer
X-KDE-PluginInfo-Depends Abhängigkeiten
X-KDE-PluginInfo-License Lizenz
X-KDE-PluginInfo-EnabledByDefault Falls true, wird das Plasmoid von KDE in der Auswahl angezeigt


Für unser Beispiel verwenden wir folgende Datei:

[Desktop Entry]
Encoding=UTF-8
Name=Hello World!
Name[de]=Hallo Welt!
Type=Service
ServiceTypes=Plasma/Applet,Plasma/PopupApplet
Icon=contents/data/proggen-logo.png
Comment=A simple QML-plasmoid.
 
X-Plasma-API=declarativeappletscript
X-Plasma-MainScript=ui/main.qml
X-Plasma-DefaultSize=200,100
 
X-KDE-PluginInfo-Author=Daniel Marth
X-KDE-PluginInfo-Email=nufan@proggen.org
X-KDE-PluginInfo-Website=http://proggen.org/
X-KDE-PluginInfo-Category=Examples
X-KDE-PluginInfo-Name=org.proggen.helloworld
X-KDE-PluginInfo-Version=0.1
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true


Das komplette Beispiel kann hier heruntergeladen werden: helloworld.zip

Installieren

Installiert kann das Plasmoid über den Befehl:

plasmapkg -i helloworld

Wobei helloworld der Name jenes Ordners ist, der unser Plasmoid enthält. Die Deinstallation erfolgt ähnlich:

plasmapkg -r helloworld

In diesem Fall steht der letzte Parameter jedoch für den Namen des Plasmoids, falls dieser vom Namen des Ordners abweicht. Eine Liste aller installierten Plasmoids kann ebenfalls abgefragt werden:

plasmapkg -l

Um sich das ständige neu Installieren während der Entwicklungsphase zu ersparen, kann auch plasmoidviewer verwendet werden:

plasmoidviewer helloworld

Mit dieser Methode können auch Fehlermeldungen ausgelesen werden.

Anzeigen

Über das Kontextmenü des KDE-Desktops kann nun der Add Widgets…-Dialog aufgerufen werden, in diesem nun unser Plasmoid mit unserem Logo angezeigt wird. Eventuell müssen zuerst Widgets über das selbige Kontextmenü entsperrt werden.

Nun kann das Plasmoid per Drag-And-Drop auf dem Desktop platziert werden.

KDevelop

Beispiel: Notizblock