KDE System Administration/PlasmaDesktopScripting/Examples
An older set of examples for Plasma4 can be found here that demonstrate the use of various aspects of Plasma shell scripting.
Simple Examples
Advanced Examples
Iterate all widgets and print their config values
var allDesktops = desktops();
for (var desktopIndex = 0; desktopIndex < allDesktops.length; desktopIndex++) {
var d = allDesktops[desktopIndex];
print(d);
var widgets = d.widgets();
for (var widgetIndex = 0; widgetIndex < widgets.length; widgetIndex++) {
var w = widgets[widgetIndex];
print("\t" + w.type + ": ");
var configGroups = w.configGroups.concat([]); // concat is used to clone the array
for (var groupIndex = 0; groupIndex < configGroups.length; groupIndex++) {
var g = configGroups[groupIndex];
print("\t\t" + g + ": ");
w.currentConfigGroup = [g];
for (var keyIndex = 0; keyIndex < w.configKeys.length; keyIndex++) {
var configKey = w.configKeys[keyIndex];
print("\t\t\t" + configKey + ": " + w.readConfig(configKey));
}
}
}
}
var allPanels = panels();
for (var panelIndex = 0; panelIndex < allPanels.length; panelIndex++) {
var p = allPanels[panelIndex];
print(p);
var widgets = p.widgets();
for (var widgetIndex = 0; widgetIndex < widgets.length; widgetIndex++) {
var w = widgets[widgetIndex];
print("\t" + w.type + ": ");
var configGroups = w.configGroups.concat([]); // concat is used to clone the array
for (var groupIndex = 0; groupIndex < configGroups.length; groupIndex++) {
var g = configGroups[groupIndex];
print("\t\t" + g + ": ");
w.currentConfigGroup = [g];
for (var keyIndex = 0; keyIndex < w.configKeys.length; keyIndex++) {
var configKey = w.configKeys[keyIndex];
print("\t\t\t" + configKey + ": " + w.readConfig(configKey));
}
}
}
}
Adding a widget to the System Tray
var widgetName = "org.kde.plasma.printmanager";
for (i = 0; i < panelIds.length; ++i) { //search through the panels
panel = panelById(pids[i]);
if (!panel) continue;
for (tmpIndex = 0; tmpIndex < panel.widgetIds.length; tmpIndex ++) {
appletWidget = panel.widgetById(panel.widgetIds[tmpIndex]);
if (appletWidget.type == "org.kde.plasma.systemtray") {
systemtrayId = appletWidget.readConfig("SystrayContainmentId");
if (systemtrayId) {
print("systemtray id: " + systemtrayId)
var systray = desktopById(systemtrayId);
systray.currentConfigGroup = ["General"];
var extraItems = systray.readConfig("extraItems").split(",");
if (extraItems.indexOf(widgetName) === -1) {
extraItems.push(widgetName)
systray.writeConfig("extraItems", extraItems);
systray.reloadConfig();
}
}
}
}
}