Predefined ColorSchemes

- added support for predefined color schemes
- moved all the code regarding colors generation from wallpaper to the
ColorSchemes service
This commit is contained in:
quadbyte 2025-08-15 15:37:00 -04:00
parent a8e7f6e01d
commit f5b4cb452b
9 changed files with 126 additions and 94 deletions

View file

@ -15,6 +15,8 @@ Singleton {
property var schemes: []
property bool scanning: false
property string schemesDirectory: Quickshell.shellDir + "/Assets/ColorSchemes"
property string colorsJsonFilePath: Settings.configDir + "colors.json"
function loadColorSchemes() {
console.log("[ColorSchemes] Load ColorSchemes")
@ -22,7 +24,20 @@ Singleton {
schemes = []
// Unsetting, then setting the folder will re-trigger the parsing!
folderModel.folder = ""
folderModel.folder = "file://" + Quickshell.shellDir + "/Assets/ColorSchemes"
folderModel.folder = "file://" + schemesDirectory
}
function applyScheme(filePath) {
Quickshell.execDetached(["cp", filePath, colorsJsonFilePath])
}
function changedWallpaper() {
if (Settings.data.colorSchemes.useWallpaperColors) {
console.log("[ColorSchemes] Starting color generation process")
generateColorsProcess.running = true
// Invalidate potential predefined scheme
Settings.data.colorSchemes.predefinedScheme = ""
}
}
FolderListModel {
@ -34,12 +49,30 @@ Singleton {
if (status === FolderListModel.Ready) {
var files = []
for (var i = 0; i < count; i++) {
var filepath = folderModel.folder + "/" + get(i, "fileName")
var filepath = schemesDirectory + "/" + get(i, "fileName")
files.push(filepath)
}
schemes = files
scanning = false
console.log(schemes)
}
}
}
Process {
id: generateColorsProcess
command: ["matugen", "image", Wallpapers.currentWallpaper, "--config", Quickshell.shellDir + "/Assets/Matugen/matugen.toml"]
workingDirectory: Quickshell.shellDir
running: false
stdout: StdioCollector {
onStreamFinished: {
console.log("[ColorSchemes] Generated colors from wallpaper")
}
}
stderr: StdioCollector {
onStreamFinished: {
if (this.text !== "") {
console.error(this.text)
}
}
}
}