diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 14:19:38 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 14:19:38 +1000 |
| commit | 9c4821b4b4c298eeaec6c108f435de4cb5fefc16 (patch) | |
| tree | acbba6cff7c1550e60db3c6a15ad3f54e8f36979 /services/Thumbnailer.qml | |
| parent | feat: launcher wallpaper selector (diff) | |
| download | caelestia-shell-9c4821b4b4c298eeaec6c108f435de4cb5fefc16.tar.gz caelestia-shell-9c4821b4b4c298eeaec6c108f435de4cb5fefc16.tar.bz2 caelestia-shell-9c4821b4b4c298eeaec6c108f435de4cb5fefc16.zip | |
feat: cache wallpapers
Reduces wallpaper load time massively
Diffstat (limited to 'services/Thumbnailer.qml')
| -rw-r--r-- | services/Thumbnailer.qml | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/services/Thumbnailer.qml b/services/Thumbnailer.qml new file mode 100644 index 0000000..1e22940 --- /dev/null +++ b/services/Thumbnailer.qml @@ -0,0 +1,45 @@ +pragma Singleton + +import Quickshell +import Quickshell.Io +import QtQuick +import Qt.labs.platform + +Singleton { + id: root + + readonly property string thumbDir: `${StandardPaths.standardLocations(StandardPaths.GenericCacheLocation)[0]}/caelestia/thumbnails`.slice(7) + + function go(sha: string, path: string, width: int, height: int): string { + if (!sha || !path || !width || !height) + return ""; + + const thumbPath = `${thumbDir}/${sha}@${width}x${height}-exact.png`; + + thumbProc.path = path; + thumbProc.thumbPath = thumbPath; + thumbProc.width = width; + thumbProc.height = height; + thumbProc.startDetached(); + + return thumbPath; + } + + Process { + id: thumbProc + + property string path + property string thumbPath + property int width + property int height + + command: ["fish", "-c", ` +if ! test -f ${thumbPath} + set -l size (identify -ping -format '%w\n%h' ${path}) + if test $size[1] -gt ${width} -o $size[2] -gt ${height} + magick ${path} -thumbnail ${width}x${height}^ -background none -gravity center -extent ${width}x${height} -unsharp 0x.5 ${thumbPath} + end +end +`] + } +} |