Files
I-DeskPet/Modules/ConfigLoader.qml
T
Zacharias-Brohn 5318d3897b fixes
2025-12-03 15:33:29 +01:00

83 lines
1.4 KiB
QML

pragma Singleton
import QtCore
import QtQuick
import Quickshell.Io
import Quickshell
Singleton {
id: root
property alias gifFolder: adapter.gifFolder
property alias ready: root.loaded
property bool loaded: false
property string configDir: Quickshell.env("HOME") + "/.config/QtDesktopPet"
property string configPath: configDir + "/config.json"
signal folderChanged()
Process {
id: dirCheck
running: true
command: ["test", "-d", root.configDir]
onExited: function( exitCode ) {
if (exitCode !== 0) {
dirCreate.running = true
} else {
fileCheck.running = true
}
}
}
Process {
id: dirCreate
running: false
command: ["mkdir", "-p", root.configDir]
onExited: function(): void {
console.log("Created config directory:", root.configDir)
fileCreate.running = true
}
}
Process {
id: fileCheck
running: false
command: ["test", "-f", root.configPath]
onExited: function( exitCode ): void {
if (exitCode !== 0) {
fileCreate.running = true
}
}
}
Process {
id: fileCreate
property string homeDir: Quickshell.env("HOME")
running: false
command: ["sh", "-c", `echo '{\"gifFolder\": \"${homeDir}/.config/quickshell/QtDesktopPet/Gifs\"}' > ` + root.configPath]
}
FileView {
id: watcher
path: root.configPath
watchChanges: true
onFileChanged: reload()
onLoaded: root.loaded = true
JsonAdapter {
id: adapter
property string gifFolder: ""
}
}
}