diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-03 23:56:37 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-03 23:56:37 +1000 |
| commit | 00d3c1a472888817d7649391d4a8485c5fc6f6f5 (patch) | |
| tree | 45b351c62f61ede55acfc209dde686f1c161a942 /services | |
| parent | feat: use multieffect instead of qt5compat (diff) | |
| download | caelestia-shell-00d3c1a472888817d7649391d4a8485c5fc6f6f5.tar.gz caelestia-shell-00d3c1a472888817d7649391d4a8485c5fc6f6f5.tar.bz2 caelestia-shell-00d3c1a472888817d7649391d4a8485c5fc6f6f5.zip | |
feat: launcher wallpaper selector
Diffstat (limited to 'services')
| -rw-r--r-- | services/Wallpapers.qml | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/services/Wallpapers.qml b/services/Wallpapers.qml new file mode 100644 index 0000000..833e808 --- /dev/null +++ b/services/Wallpapers.qml @@ -0,0 +1,53 @@ +pragma Singleton + +import "root:/utils/scripts/fuzzysort.js" as Fuzzy +import Quickshell +import Quickshell.Io +import QtQuick +import Qt.labs.platform + +Singleton { + id: root + + readonly property string path: `${StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0]}/Wallpapers` + + property list<Wallpaper> list + + readonly property list<var> preppedPaths: list.map(w => ({ + path: Fuzzy.prepare(w.path), + wall: w + })) + + function fuzzyQuery(search: string): var { + return Fuzzy.go(search, preppedPaths, { + all: true, + keys: ["name", "path"], + scoreFn: r => r[0].score * 0.9 + r[1].score * 0.1 + }).map(r => r.obj.wall); + } + + Process { + running: true + command: ["fd", ".", root.path.slice(7), "-t", "f", "-e", "jpg", "-e", "jpeg", "-e", "png", "-e", "svg"] + stdout: SplitParser { + splitMarker: "" + onRead: data => { + const list = data.trim().split("\n"); + root.list = list.map(p => wallpaperComp.createObject(root, { + path: p + })); + } + } + } + + component Wallpaper: QtObject { + required property string path + readonly property string name: path.slice(path.lastIndexOf("/") + 1, path.lastIndexOf(".")) + } + + Component { + id: wallpaperComp + + Wallpaper {} + } +} |