summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/background/Wallpaper.qml2
-rw-r--r--modules/dashboard/Wrapper.qml2
-rw-r--r--services/Wallpapers.qml5
-rw-r--r--utils/Images.qml12
-rw-r--r--widgets/filedialog/FolderContents.qml2
5 files changed, 17 insertions, 6 deletions
diff --git a/modules/background/Wallpaper.qml b/modules/background/Wallpaper.qml
index 57f5dc0..2ec4927 100644
--- a/modules/background/Wallpaper.qml
+++ b/modules/background/Wallpaper.qml
@@ -66,7 +66,7 @@ Item {
title: qsTr("Select a wallpaper")
filterLabel: qsTr("Image files")
- filters: Wallpapers.extensions
+ filters: Images.validImageExtensions
onAccepted: path => Wallpapers.setWallpaper(path)
}
diff --git a/modules/dashboard/Wrapper.qml b/modules/dashboard/Wrapper.qml
index d3630a6..0336d59 100644
--- a/modules/dashboard/Wrapper.qml
+++ b/modules/dashboard/Wrapper.qml
@@ -17,7 +17,7 @@ Item {
readonly property FileDialog facePicker: FileDialog {
title: qsTr("Select a profile picture")
filterLabel: qsTr("Image files")
- filters: Wallpapers.extensions
+ filters: Images.validImageExtensions
onAccepted: path => {
Paths.copy(path, `${Paths.home}/.face`);
Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "low", "-h", `STRING:image-path:${path}`, "Profile picture changed", `Profile picture changed to ${Paths.shortenHome(path)}`]);
diff --git a/services/Wallpapers.qml b/services/Wallpapers.qml
index d72423b..2044c87 100644
--- a/services/Wallpapers.qml
+++ b/services/Wallpapers.qml
@@ -10,7 +10,6 @@ Searcher {
id: root
readonly property string currentNamePath: Paths.strip(`${Paths.state}/wallpaper/path.txt`)
- readonly property list<string> extensions: ["jpg", "jpeg", "png", "webp", "tif", "tiff"]
property bool showPreview: false
readonly property string current: showPreview ? previewPath : actualCurrent
@@ -89,7 +88,7 @@ Searcher {
running: true
command: ["find", Paths.expandTilde(Config.paths.wallpaperDir), "-type", "d", "-path", '*/.*', "-prune", "-o", "-not", "-name", '.*', "-type", "f", "-print"]
stdout: StdioCollector {
- onStreamFinished: wallpapers.model = text.trim().split("\n").filter(w => root.extensions.includes(w.slice(w.lastIndexOf(".") + 1))).sort()
+ onStreamFinished: wallpapers.model = text.trim().split("\n").filter(w => Images.isValidImageByName(w)).sort()
}
}
@@ -100,7 +99,7 @@ Searcher {
command: ["inotifywait", "-r", "-e", "close_write,moved_to,create", "-m", Paths.expandTilde(Config.paths.wallpaperDir)]
stdout: SplitParser {
onRead: data => {
- if (root.extensions.includes(data.slice(data.lastIndexOf(".") + 1)))
+ if (Images.isValidImageByName(data))
getWallsProc.running = true;
}
}
diff --git a/utils/Images.qml b/utils/Images.qml
new file mode 100644
index 0000000..a006d32
--- /dev/null
+++ b/utils/Images.qml
@@ -0,0 +1,12 @@
+pragma Singleton
+
+import Quickshell
+
+Singleton {
+ readonly property list<string> validImageTypes: ["jpeg", "png", "webp", "tiff", "svg"]
+ readonly property list<string> validImageExtensions: ["jpg", "jpeg", "png", "webp", "tif", "tiff", "svg"]
+
+ function isValidImageByName(name: string): bool {
+ return validImageTypes.some(t => name.endsWith(`.${t}`));
+ }
+}
diff --git a/widgets/filedialog/FolderContents.qml b/widgets/filedialog/FolderContents.qml
index 5c3994e..1881288 100644
--- a/widgets/filedialog/FolderContents.qml
+++ b/widgets/filedialog/FolderContents.qml
@@ -171,7 +171,7 @@ Item {
stdout: StdioCollector {
onStreamFinished: {
const mime = text.split(";")[0].replace("/", "-");
- icon.source = mime.startsWith("image-") ? item.fileUrl : Quickshell.iconPath(mime, "image-missing");
+ icon.source = Images.validImageTypes.some(t => mime === `image-${t}`) ? item.fileUrl : Quickshell.iconPath(mime, "image-missing");
}
}
}