diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index d3678692..a07cc9e8 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -478,6 +478,10 @@ "enable-matugen": { "label": "Matugen aktivieren", "description": "Automatisch Farben basierend auf Ihrem aktiven Hintergrundbild generieren." + }, + "matugen-scheme-type": { + "label": "Matugen-Schema-Typ", + "description": "Wähle einen Farbstil für Matugen aus." } }, "predefined": { diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 18bb5ce1..4a903bc2 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -478,6 +478,10 @@ "enable-matugen": { "label": "Enable Matugen", "description": "Automatically generate colors based on your active wallpaper." + }, + "matugen-scheme-type": { + "label": "Matugen scheme type", + "description": "Choose the color scheme generation algorithm for Matugen." } }, "predefined": { diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 574484ba..0c23929f 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -476,6 +476,10 @@ "enable-matugen": { "label": "Activar Matugen", "description": "Genera colores automáticamente basados en tu fondo de pantalla activo." + }, + "matugen-scheme-type": { + "label": "Tipo de esquema Matugen", + "description": "Elige el algoritmo de generación de esquema de colores para Matugen." } }, "predefined": { diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 5c302a1d..5a77f950 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -476,6 +476,10 @@ "enable-matugen": { "label": "Activer Matugen", "description": "Générez automatiquement des couleurs en fonction de votre fond d'écran actif." + }, + "matugen-scheme-type": { + "label": "Type de schéma Matugen", + "description": "Choisissez l'algorithme de génération de schéma de couleurs pour Matugen." } }, "predefined": { diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 93e83768..cc913f62 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -442,6 +442,10 @@ "enable-matugen": { "label": "Ativar Matugen", "description": "Gera cores automaticamente com base no seu papel de parede ativo." + }, + "matugen-scheme-type": { + "label": "Tipo de esquema Matugen", + "description": "Escolha o algoritmo de geração de esquema de cores para Matugen." } }, "predefined": { diff --git a/Assets/Translations/zh.json b/Assets/Translations/zh.json index 7ab9b8e7..f4d3dd0a 100644 --- a/Assets/Translations/zh.json +++ b/Assets/Translations/zh.json @@ -476,6 +476,10 @@ "enable-matugen": { "label": "启用 Matugen", "description": "根据您的活动壁纸自动生成颜色。" + }, + "matugen-scheme-type": { + "label": "Matugen 配色方案类型", + "description": "为 Matugen 选择配色方案生成算法。" } }, "predefined": { diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 77623d7b..9ccf3c9f 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -156,7 +156,7 @@ Singleton { "id": "Battery" }, { "id": "Volume" - }, { + }, { "id": "Brightness" }, { "id": "Clock" @@ -291,6 +291,7 @@ Singleton { property bool useWallpaperColors: false property string predefinedScheme: "Noctalia (default)" property bool darkMode: true + property string matugenSchemeType: "scheme-fruit-salad" } // matugen templates toggles diff --git a/Modules/Settings/Tabs/ColorSchemeTab.qml b/Modules/Settings/Tabs/ColorSchemeTab.qml index 443d01be..1407235e 100644 --- a/Modules/Settings/Tabs/ColorSchemeTab.qml +++ b/Modules/Settings/Tabs/ColorSchemeTab.qml @@ -140,6 +140,49 @@ ColumnLayout { } } + // Matugen Scheme Type Selection + NComboBox { + label: I18n.tr("settings.color-scheme.color-source.matugen-scheme-type.label") + description: I18n.tr("settings.color-scheme.color-source.matugen-scheme-type.description") + enabled: Settings.data.colorSchemes.useWallpaperColors + opacity: Settings.data.colorSchemes.useWallpaperColors ? 1.0 : 0.6 + + model: [{ + "key": "scheme-content", + "name": "Content" + }, { + "key": "scheme-expressive", + "name": "Expressive" + }, { + "key": "scheme-fidelity", + "name": "Fidelity" + }, { + "key": "scheme-fruit-salad", + "name": "Fruit Salad" + }, { + "key": "scheme-monochrome", + "name": "Monochrome" + }, { + "key": "scheme-neutral", + "name": "Neutral" + }, { + "key": "scheme-rainbow", + "name": "Rainbow" + }, { + "key": "scheme-tonal-spot", + "name": "Tonal Spot" + }] + + currentKey: Settings.data.colorSchemes.matugenSchemeType + + onSelected: key => { + Settings.data.colorSchemes.matugenSchemeType = key + if (Settings.data.colorSchemes.useWallpaperColors) { + MatugenService.generateFromWallpaper() + } + } + } + NDivider { Layout.fillWidth: true Layout.topMargin: Style.marginXL * scaling diff --git a/Services/MatugenService.qml b/Services/MatugenService.qml index c2ebcd53..e3410d57 100644 --- a/Services/MatugenService.qml +++ b/Services/MatugenService.qml @@ -66,14 +66,14 @@ Singleton { var extraUser = (Settings.configDir + "matugen.d").replace(/'/g, "'\\''") // Build the main script - var script = "cat > '" + pathEsc + "' << 'EOF'\n" + content + "EOF\n" + "for d in '" + extraRepo + "' '" + extraUser + "'; do\n" + " if [ -d \"$d\" ]; then\n" + " for f in \"$d\"/*.toml; do\n" + " [ -f \"$f\" ] && { echo; echo \"# extra: $f\"; cat \"$f\"; } >> '" + pathEsc + "'\n" + " done\n" + " fi\n" + "done\n" + "matugen image '" - + wp + "' --config '" + pathEsc + "' --mode " + mode + var script = "cat > '" + pathEsc + "' << 'EOF'\n" + content + "EOF\n" + "for d in '" + extraRepo + "' '" + extraUser + "'; do\n" + " if [ -d \"$d\" ]; then\n" + " for f in \"$d\"/*.toml; do\n" + " [ -f \"$f\" ] && { echo; echo \"# extra: $f\"; cat \"$f\"; } >> '" + pathEsc + "'\n" + " done\n" + " fi\n" + + "done\n" + "matugen image '" + wp + "' --config '" + pathEsc + "' --mode " + mode + " --type " + Settings.data.colorSchemes.matugenSchemeType // Add user config execution if enabled if (Settings.data.matugen.enableUserTemplates) { var userConfigDir = (Quickshell.env("HOME") + "/.config/matugen/").replace(/'/g, "'\\''") script += "\n# Execute user config if it exists\nif [ -f '" + userConfigDir + "config.toml' ]; then\n" - script += " matugen image '" + wp + "' --config '" + userConfigDir + "config.toml' --mode " + mode + "\n" + script += " matugen image '" + wp + "' --config '" + userConfigDir + "config.toml' --mode " + mode + " --type " + Settings.data.colorSchemes.matugenSchemeType + "\n" script += "fi" }