You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.6 KiB
72 lines
2.6 KiB
#!/bin/env python3 |
|
|
|
import os |
|
import sys |
|
import xml.dom.minidom |
|
from xml.dom.minidom import parse |
|
|
|
######## |
|
# This application loops through installed applets and extracts the config XML file |
|
# Output is then presented in mediawiki format for copying and pasting to https://userbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting#Configuration_Keys |
|
|
|
# app should be kept flexible enough to port to a different format in future |
|
|
|
|
|
#set plasmoid installation path manually if applicable |
|
xdg_data_dir = "" |
|
|
|
if not xdg_data_dir: |
|
xdg_data_dirs = os.getenv("XDG_DATA_DIRS").split(":") |
|
xdg_data_dirs.append("/usr/share") |
|
xdg_data_dir = xdg_data_dirs[0] |
|
|
|
|
|
|
|
root = xdg_data_dir + "/plasma/plasmoids" |
|
|
|
plasmoids = os.listdir(root) |
|
plasmoids.sort() |
|
for plasmoid in plasmoids: |
|
configPath = "/contents/config/main.xml" |
|
path = root + "/" + plasmoid + configPath |
|
try: |
|
dom = xml.dom.minidom.parse(path).documentElement |
|
|
|
print ("===" + plasmoid + "===") |
|
for group in dom.getElementsByTagName("group"): |
|
groupName = group.getAttribute("name") |
|
print ("======" + groupName + "======") |
|
for entry in group.getElementsByTagName("entry"): |
|
name = entry.getAttribute("name") |
|
type = entry.getAttribute("type") |
|
default = "" |
|
description = "" |
|
|
|
if entry.hasAttribute("hidden") and entry.getAttribute("hidden") == "true": |
|
continue |
|
|
|
defaultTags = entry.getElementsByTagName("default") |
|
if (defaultTags.length > 0 and defaultTags[0].childNodes.length > 0): |
|
default = defaultTags[0].childNodes[0].data |
|
|
|
if (default == ""): |
|
if (type == "Bool"): |
|
default = "false" |
|
elif (type == "Int"): |
|
default = "0" |
|
elif (type == "StringList"): |
|
default = "empty list" |
|
elif (type == "String"): |
|
default = "empty string" |
|
else: |
|
default = "null" |
|
|
|
labelTags = entry.getElementsByTagName("label") |
|
if (labelTags.length > 0 and labelTags[0].childNodes.length > 0): |
|
description = labelTags[0].childNodes[0].data |
|
|
|
|
|
print ("* '''%s''' (''%s'', default ''%s'') %s" % (name , type, default, description)) |
|
except IOError: |
|
sys.stderr.write("No config in " + plasmoid +"\n") |
|
#abort on other errors so we can find them
|
|
|