forked from Qortal/Brooklyn
73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
#!/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
|