diff --git a/Services/MatugenService.qml b/Services/MatugenService.qml index 4f3ff7ce..3dad505a 100644 --- a/Services/MatugenService.qml +++ b/Services/MatugenService.qml @@ -46,7 +46,7 @@ Singleton { // Generate colors using current wallpaper and settings function generateFromWallpaper() { Logger.log("Matugen", "Generating from wallpaper on screen:", Screen.name) - + var wp = WallpaperService.getWallpaper(Screen.name).replace(/'/g, "'\\''") if (wp === "") { Logger.error("Matugen", "No wallpaper was found") @@ -71,7 +71,7 @@ Singleton { // -------------------------------- function buildMatugenScript(content, pathEsc, wallpaper, mode) { var script = "cat > '" + pathEsc + "' << 'EOF'\n" + content + "EOF\n" - + // Main matugen command script += "matugen image '" + wallpaper + "' --config '" + pathEsc + "' --mode " + mode + " --type " + Settings.data.colorSchemes.matugenSchemeType @@ -92,7 +92,7 @@ Singleton { script += "if [ -f '" + userConfigPath + "' ]; then\n" script += " matugen image '" + input + "' --config '" + userConfigPath + "' --mode " + mode + " --type " + Settings.data.colorSchemes.matugenSchemeType + "\n" script += "fi" - + return script } @@ -104,16 +104,17 @@ Singleton { // -------------------------------- function selectVibrantColor(schemeData, mode) { var colors = [] - colors.push(schemeData[mode]["mPrimary"]) - colors.push(schemeData[mode]["mSecondary"]) - colors.push(schemeData[mode]["mTertiary"]) + colors.push(schemeData[mode]["mPrimary"]); + colors.push(schemeData[mode]["mSecondary"]); + colors.push(schemeData[mode]["mTertiary"]); + var bestScore = 0 var bestScoreIndex = -1 - for (var i = 0; i < colors.length; i++) { + for (var i=0; i bestScore) { bestScore = score bestScoreIndex = i @@ -132,7 +133,7 @@ Singleton { if (content === "") { return } - + var mode = Settings.data.colorSchemes.darkMode ? "dark" : "light" var pathEsc = dynamicConfigPath.replace(/'/g, "'\\''") const color = selectVibrantColor(schemeData, mode) @@ -151,10 +152,10 @@ Singleton { function buildPredefinedSchemeScript(content, pathEsc, color, mode) { var script = "cat > '" + pathEsc + "' << 'EOF'\n" + content + "EOF\n\n" script += "matugen color hex '" + color + "' --config '" + pathEsc + "' --mode " + mode + "\n" - + // Add user template execution if enabled script += addUserTemplateExecutionForColor(color, mode) - + return script } @@ -169,72 +170,80 @@ Singleton { script += "if [ -f '" + userConfigPath + "' ]; then\n" script += " matugen color hex '" + color + "' --config '" + userConfigPath + "' --mode " + mode + "\n" script += "fi" - + return script } // -------------------------------- function handleTerminalThemes() { var terminals = { - "foot": "~/.config/foot/themes/noctalia", - "ghostty": "~/.config/ghostty/themes/noctalia", - "kitty": "~/.config/kitty/themes/noctalia.conf" + foot: "~/.config/foot/themes/noctalia", + ghostty: "~/.config/ghostty/themes/noctalia", + kitty: "~/.config/kitty/themes/noctalia.conf", } - var copyCmd = Object.entries(terminals).filter([ => Settings.data.templates[terminal]).map([ => { - var colorsPathParent = colorsPath.replace(/[^\/]*$/, "") - var terminalColorsTemplate = getTerminalColorsTemplate(terminal) - return [`mkdir -p ${colorsPathParent}`, `cp -f ${terminalColorsTemplate} ${colorsPath}`, `${colorsApplyScript} ${terminal}`] - }).reduce((arr1, arr2) => arr1.concat(arr2), []).join("; ") + var copyCmd = Object.entries(terminals) + .filter(([terminal, colorsPath]) => Settings.data.templates[terminal]) + .map(([terminal, colorsPath]) => { + var colorsPathParent = colorsPath.replace(/[^\/]*$/, "") + var terminalColorsTemplate = getTerminalColorsTemplate(terminal) + return [ + `mkdir -p ${colorsPathParent}`, + `cp -f ${terminalColorsTemplate} ${colorsPath}`, + `${colorsApplyScript} ${terminal}`, + ] + }) + .reduce((arr1, arr2) => arr1.concat(arr2), []) + .join("; ") - if (copyCmd !== "") { - copyProcess.command = ["bash", "-lc", copyCmd] - copyProcess.running = true - } + if (copyCmd !== "") { + copyProcess.command = ["bash", "-lc", copyCmd] + copyProcess.running = true + } } - // -------------------------------- - function getTerminalColorsTemplate(terminal) { - var colorScheme = Settings.data.colorSchemes.predefinedScheme - const darkLight = Settings.data.colorSchemes.darkMode ? 'dark' : 'light' + // -------------------------------- + function getTerminalColorsTemplate(terminal) { + var colorScheme = Settings.data.colorSchemes.predefinedScheme + const darkLight = Settings.data.colorSchemes.darkMode ? 'dark' : 'light' - // Convert display names back to folder names - var schemeMap = { - "Noctalia (default)": "Noctalia-default", - "Noctalia (legacy)": "Noctalia-legacy", - "Tokyo Night": "Tokyo-Night" - } + // Convert display names back to folder names + var schemeMap = { + "Noctalia (default)": "Noctalia-default", + "Noctalia (legacy)": "Noctalia-legacy", + "Tokyo Night": "Tokyo-Night" + } + + colorScheme = schemeMap[colorScheme] || colorScheme + var extension = terminal === 'kitty' ? ".conf" : "" - colorScheme = schemeMap[colorScheme] || colorScheme - var extension = terminal === 'kitty' ? ".conf" : "" - - return `${Quickshell.shellDir}/Assets/ColorScheme/${colorScheme}/terminal/${terminal}/${colorScheme}-${darkLight}${extension}` - } - - // -------------------------------- - Process { - id: generateProcess - workingDirectory: Quickshell.shellDir - running: false - stderr: StdioCollector { - onStreamFinished: { - if (this.text !== "") { - Logger.warn("MatugenService", "GenerateProcess stderr:", this.text) - } - } - } - } - - // -------------------------------- - Process { - id: copyProcess - running: false - stderr: StdioCollector { - onStreamFinished: { - if (this.text !== "") { - Logger.warn("MatugenService", "CopyProcess stderr:", this.text) - } - } - } - } + return `${Quickshell.shellDir}/Assets/ColorScheme/${colorScheme}/terminal/${terminal}/${colorScheme}-${darkLight}${extension}` } + + // -------------------------------- + Process { + id: generateProcess + workingDirectory: Quickshell.shellDir + running: false + stderr: StdioCollector { + onStreamFinished: { + if (this.text !== "") { + Logger.warn("MatugenService", "GenerateProcess stderr:", this.text) + } + } + } + } + + // -------------------------------- + Process { + id: copyProcess + running: false + stderr: StdioCollector { + onStreamFinished: { + if (this.text !== "") { + Logger.warn("MatugenService", "CopyProcess stderr:", this.text) + } + } + } + } +}