diff --git a/modules/configuration/Configuration.qml b/modules/configuration/Configuration.qml index 5122033..749b195 100644 --- a/modules/configuration/Configuration.qml +++ b/modules/configuration/Configuration.qml @@ -112,6 +112,12 @@ StyledPanelWindow { title: "Styling" view: StylingView {} } + + ConfigurationView { + icon: Styling.lucide.icons.swatchBook + title: "Wallpapers" + view: Wallpaper {} + } } component ConfigurationView: QtObject { diff --git a/modules/configuration/Wallpaper.qml b/modules/configuration/Wallpaper.qml new file mode 100644 index 0000000..d75a04a --- /dev/null +++ b/modules/configuration/Wallpaper.qml @@ -0,0 +1,13 @@ +import qs.services +import QtQuick +import QtQuick.Layouts + +ColumnLayout { + Repeater { + model: WallpaperService.files + delegate: Text { + required property string dataModel + text: dataModel + } + } +} diff --git a/services/WallpaperService.qml b/services/WallpaperService.qml new file mode 100644 index 0000000..2c0026f --- /dev/null +++ b/services/WallpaperService.qml @@ -0,0 +1,24 @@ +pragma Singleton + +import Quickshell +import Quickshell.Io + +Singleton { + id: root + + property string directory: "~/Wallpapers/" + property list files: [] + property list fileTypes: ["jpg", "jpeg", "png"] + + Process { + running: true + command: ["bash", "-c", `find "$dir" -maxdepth 1 -type f & inotifywait -m -r ${root.directory} -e modify,move,create,delete | while read dir action; do find "$dir" -maxdepth 1 -type f; done`] + stderr: StdioCollector { + onStreamFinished: console.log(`line read: ${this.text}`) + } + stdout: SplitParser { + splitMarker: "\n" + onRead: data => root.files = data?.split("\n") ?? [] + } + } +}