1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-25 14:02:53 -05:00

feat: Plugin System (#276)

* feat: Plugin System

* fix: merge conflicts
This commit is contained in:
Bruno Cesar Rocha
2025-10-01 16:28:10 +01:00
committed by GitHub
parent ab0759f441
commit 53983933dc
13 changed files with 1662 additions and 49 deletions

View File

@@ -164,6 +164,8 @@ Singleton {
property bool _loading: false
property var pluginSettings: ({})
function getEffectiveTimeFormat() {
if (use24HourClock) {
return Locale.ShortFormat
@@ -350,6 +352,7 @@ Singleton {
widgetBackgroundColor = settings.widgetBackgroundColor !== undefined ? settings.widgetBackgroundColor : "sch"
surfaceBase = settings.surfaceBase !== undefined ? settings.surfaceBase : "s"
screenPreferences = settings.screenPreferences !== undefined ? settings.screenPreferences : ({})
pluginSettings = settings.pluginSettings !== undefined ? settings.pluginSettings : ({})
applyStoredTheme()
detectAvailableIconThemes()
detectQtTools()
@@ -468,7 +471,8 @@ Singleton {
"notificationTimeoutNormal": notificationTimeoutNormal,
"notificationTimeoutCritical": notificationTimeoutCritical,
"notificationPopupPosition": notificationPopupPosition,
"screenPreferences": screenPreferences
"screenPreferences": screenPreferences,
"pluginSettings": pluginSettings
}, null, 2))
}
@@ -1229,6 +1233,33 @@ Singleton {
return Quickshell.screens.filter(screen => prefs.includes(screen.name))
}
// Plugin settings functions
function getPluginSetting(pluginId, key, defaultValue) {
if (!pluginSettings[pluginId]) {
return defaultValue
}
return pluginSettings[pluginId][key] !== undefined ? pluginSettings[pluginId][key] : defaultValue
}
function setPluginSetting(pluginId, key, value) {
if (!pluginSettings[pluginId]) {
pluginSettings[pluginId] = {}
}
pluginSettings[pluginId][key] = value
saveSettings()
}
function removePluginSettings(pluginId) {
if (pluginSettings[pluginId]) {
delete pluginSettings[pluginId]
saveSettings()
}
}
function getPluginSettingsForPlugin(pluginId) {
return pluginSettings[pluginId] || {}
}
function _shq(s) {
return "'" + String(s).replace(/'/g, "'\\''") + "'"
}