summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-03 23:56:37 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-03 23:56:37 +1000
commit00d3c1a472888817d7649391d4a8485c5fc6f6f5 (patch)
tree45b351c62f61ede55acfc209dde686f1c161a942 /services
parentfeat: use multieffect instead of qt5compat (diff)
downloadcaelestia-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.qml53
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 {}
+ }
+}