From what I learned in reading the theme generated in Global Theme Explorer, I tried to use this:
var plasma = getApiVersion(1);
var layout = {
"desktops": [
{
"applets": [
],
"config": {
"/": {
"ItemGeometries-2560x1307": "",
"ItemGeometriesHorizontal": "",
"formfactor": "0",
"immutability": "1",
"lastScreen": "0",
"wallpaperplugin": "org.kde.image"
},
"/ConfigDialog": {
"DialogHeight": "540",
"DialogWidth": "720"
},
"/General": {
"ToolBoxButtonState": "topcenter",
"ToolBoxButtonX": "879"
},
"/Wallpaper/org.kde.image/General": {
"Image": "/home/yamiyukisenpai/Pictures/WP/RA_Classica_Nikia_high_0004.jpg"
}
},
"wallpaperPlugin": "org.kde.image"
}
],
"panels": [
{
"alignment": "left",
"applets": [
{
"config": {
"/": {
"PreloadWeight": "100",
"popupHeight": "514",
"popupWidth": "651"
},
"/Configuration%2FGeneral": {
"showAppsByName": "true"
},
"/General": {
"favoritesPortedToKAstats": "true"
},
"/Shortcuts": {
"global": "Alt+F1"
}
},
"plugin": "org.kde.plasma.kickoff"
},
{
"config": {
},
"plugin": "org.kde.plasma.pager"
},
{
"config": {
"/General": {
"launchers": "preferred://browser,applications:systemsettings.desktop,preferred://filemanager,applications:org.kde.gwenview.desktop"
}
},
"plugin": "org.kde.plasma.icontasks"
},
{
"config": {
},
"plugin": "org.kde.plasma.marginsseparator"
},
{
"config": {
"/": {
"PreloadWeight": "55"
}
},
"plugin": "org.kde.plasma.systemtray"
},
{
"config": {
},
"plugin": "org.kde.plasma.digitalclock"
},
{
"config": {
},
"plugin": "org.kde.plasma.minimizeall"
}
],
"config": {
"/": {
"formfactor": "3",
"immutability": "1",
"lastScreen": "0",
"wallpaperplugin": "org.kde.image"
}
},
"height": 2.4444444444444446,
"hiding": "normal",
"location": "left",
"maximumLength": 72.61111111111111,
"minimumLength": 72.61111111111111,
"offset": 0
}
],
"serializationFormatVersion": "1"
}
;
plasma.loadSerializedLayout(layout);
And translate it on this to create a default panel:
var panel = new Panel
var panelScreen = panel.screen
var freeEdges = {"left": true, "top": true, "bottom": true, "right": true}
for (i = 0; i < panelIds.length; ++i) {
var tmpPanel = panelById(panelIds[i])
if (tmpPanel.screen == panelScreen) {
// Ignore the new panel
if (tmpPanel.id != panel.id) {
freeEdges[tmpPanel.location] = false;
}
}
}
if (freeEdges["left"] == true) {
panel.location = "left";
} else if (freeEdges["top"] == true) {
panel.location = "top";
} else if (freeEdges["bottom"] == true) {
panel.location = "bottom";
} else if (freeEdges["right"] == true) {
panel.location = "right";
} else {
// There is no free edge, so leave the default value
panel.location = "left";
}
// For an Icons-Only Task Manager on the bottom, *3 is too much, *2 is too little
// Round down to next highest even number since the Panel size widget only displays
// even numbers
panel.height = 2 * Math.floor(gridUnit * 2.5 / 2)
// Restrict horizontal panel to a maximum size of a 21:9 monitor
const maximumAspectRatio = 21/9;
if (panel.formFactor === "horizontal") {
const geo = screenGeometry(panelScreen);
const maximumWidth = Math.ceil(geo.height * maximumAspectRatio);
if (geo.width > maximumWidth) {
panel.alignment = "center";
panel.minimumLength = maximumWidth;
panel.maximumLength = maximumWidth;
}
}
var kickoff = panel.addWidget("org.kde.plasma.kickoff")
kickoff.currentConfigGroup = ["Shortcuts"]
kickoff.writeConfig("global", "Alt+F1")
kickoff.currentConfigGroup = ["Configuration/General"]
kickoff.writeConfig("showAppsByName", "true")
//panel.addWidget("org.kde.plasma.showActivityManager")
panel.addWidget("org.kde.plasma.pager")
// panel = {
// "panels": [
// "applets": {
// "config": {
// "/General": {
// "launchers": "preferred://browser,applications:systemsettings.desktop,preferred://filemanager,applications:org.kde.gwenview.desktop"
// }
// },
// "plugin": "org.kde.plasma.icontasks"
// },
// ],
// "serializationFormatVersion": "1"
// };
var taskmanager = panel.addWidget("org.kde.plasma.icontasks")
taskmanager.currentConfigGroup = ["General"]
taskmanager.writeConfig("launchers", 'application:firefox.desktop,preferred://browser,applications:systemsettings.desktop,preferred://filemanager,applications:org.kde.gwenview.desktop')
taskmanager.reloadConfig();
panel.addWidget("org.kde.plasma.marginsseparator")
/* Next up is determining whether to add the Input Method Panel
* widget to the panel or not. This is done based on whether
* the system locale's language id is a member of the following
* white list of languages which are known to pull in one of
* our supported IME backends when chosen during installation
* of common distributions. */
var langIds = ["as", // Assamese
"bn", // Bengali
"bo", // Tibetan
"brx", // Bodo
"doi", // Dogri
"gu", // Gujarati
"hi", // Hindi
"ja", // Japanese
"kn", // Kannada
"ko", // Korean
"kok", // Konkani
"ks", // Kashmiri
"lep", // Lepcha
"mai", // Maithili
"ml", // Malayalam
"mni", // Manipuri
"mr", // Marathi
"ne", // Nepali
"or", // Odia
"pa", // Punjabi
"sa", // Sanskrit
"sat", // Santali
"sd", // Sindhi
"si", // Sinhala
"ta", // Tamil
"te", // Telugu
"th", // Thai
"ur", // Urdu
"vi", // Vietnamese
"zh_CN", // Simplified Chinese
"zh_TW"] // Traditional Chinese
if (langIds.indexOf(languageId) != -1) {
panel.addWidget("org.kde.plasma.kimpanel");
}
panel.addWidget("org.kde.plasma.systemtray")
panel.addWidget("org.kde.plasma.digitalclock")
panel.addWidget("org.kde.plasma.minimizeall")
For some reason, the one from the default panel won’t setup any pinned icons, while the one from global them does setup.
I gave up on Kickoff for now since it’s being a pain, and just need to focus on one that I see is making any changes.