mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-07 15:59:26 -05:00
42 lines
1.3 KiB
QML
42 lines
1.3 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import qs.modules.common
|
|
import qs.modules.common.functions
|
|
|
|
// From https://github.com/caelestia-dots/shell with modifications.
|
|
// License: GPLv3
|
|
|
|
Image {
|
|
id: root
|
|
required property var fileModelData
|
|
asynchronous: true
|
|
fillMode: Image.PreserveAspectFit
|
|
|
|
source: {
|
|
if (!fileModelData.fileIsDir)
|
|
return Quickshell.iconPath("application-x-zerosize");
|
|
|
|
if ([Directories.documents, Directories.downloads, Directories.music, Directories.pictures, Directories.videos].some(dir => FileUtils.trimFileProtocol(dir) === fileModelData.filePath))
|
|
return Quickshell.iconPath(`folder-${fileModelData.fileName.toLowerCase()}`);
|
|
|
|
return Quickshell.iconPath("inode-directory");
|
|
}
|
|
|
|
onStatusChanged: {
|
|
if (status === Image.Error)
|
|
source = Quickshell.iconPath("error");
|
|
}
|
|
|
|
Process {
|
|
running: !fileModelData.fileIsDir
|
|
command: ["file", "--mime", "-b", fileModelData.filePath]
|
|
stdout: StdioCollector {
|
|
onStreamFinished: {
|
|
const mime = text.split(";")[0].replace("/", "-");
|
|
root.source = Images.validImageTypes.some(t => mime === `image-${t}`) ? fileModelData.fileUrl : Quickshell.iconPath(mime, "image-missing");
|
|
}
|
|
}
|
|
}
|
|
}
|