pragma ComponentBehavior: Bound import QtQuick import QtQuick.Layouts import Quickshell.Widgets import Qt5Compat.GraphicalEffects import Qt.labs.folderlistmodel import ".." ColumnLayout { id: container spacing: 5 // anchors { // fill: parent // margins: 10 // } ClippingRectangle { radius: 20 Layout.preferredWidth: 464 Layout.preferredHeight: 261 Layout.alignment: Qt.AlignCenter Layout.margins: 20 Image { id: wallpaperImage source: ShellSettings.settings.wallpaperUrl fillMode: Image.PreserveAspectFit anchors { fill: parent } } } Rectangle { color: ShellSettings.colors["surface_container"] radius: 20 Layout.fillWidth: true Layout.fillHeight: true ColumnLayout { anchors.fill: parent Rectangle { color: ShellSettings.colors["surface_container_high"] Layout.fillWidth: true Layout.preferredHeight: 1 } GridView { id: wallpaperGrid cellWidth: 200 cellHeight: 200 clip: true Layout.fillWidth: true Layout.fillHeight: true Layout.margins: 10 model: FolderListModel { id: folderModel folder: Qt.resolvedUrl("root:resources/wallpapers") nameFilters: ["*.jpg", "*.png"] } delegate: Rectangle { id: cell required property var modelData width: 200 height: 200 color: "transparent" Item { anchors.fill: parent Rectangle { id: border visible: mouseArea.containsMouse color: "transparent" radius: 20 border { color: ShellSettings.colors["primary"] width: 2 } anchors { fill: parent margins: 1 } } Image { id: image source: cell.modelData.fileUrl fillMode: Image.PreserveAspectCrop asynchronous: true sourceSize { height: image.height width: image.width } anchors { fill: parent margins: 5 } layer.enabled: true layer.effect: OpacityMask { maskSource: Rectangle { width: cell.width height: cell.height radius: 20 } } } } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true onClicked: { ShellSettings.settings.wallpaperUrl = cell.modelData.fileUrl; } } } } } } }