mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
quickshell and hyprland additions
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
import Qt.labs.folderlistmodel
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import QtCore
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import qs.modules.functions
|
||||
import qs.services
|
||||
import qs.config
|
||||
import qs.modules.components
|
||||
|
||||
Item {
|
||||
id: wallpapersPage
|
||||
property string displayName: screen?.name ?? ""
|
||||
|
||||
FolderListModel {
|
||||
id: wallpaperModel
|
||||
|
||||
folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) + "/Wallpapers"
|
||||
nameFilters: ["*.png", "*.jpg", "*.jpeg", "*.webp", "mp4", "mkv", "webm", "avi", "mov", "flv", "wmv", "m4v"]
|
||||
showDirs: false
|
||||
showDotAndDotDot: false
|
||||
}
|
||||
|
||||
// EMPTY STATE
|
||||
StyledText {
|
||||
visible: wallpaperModel.count === 0
|
||||
text: "Put some wallpapers in\n~/Pictures/Wallpapers"
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: Appearance.m3colors.m3onSurfaceVariant
|
||||
font.pixelSize: Appearance.font.size.large
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
// WALLPAPER LIST
|
||||
ListView {
|
||||
anchors.topMargin: 90
|
||||
visible: wallpaperModel.count > 0
|
||||
anchors.fill: parent
|
||||
model: wallpaperModel
|
||||
spacing: Appearance.margin.normal
|
||||
clip: true
|
||||
|
||||
delegate: Item {
|
||||
width: ListView.view.width
|
||||
height: 240
|
||||
|
||||
StyledRect {
|
||||
id: imgContainer
|
||||
property bool activeWallpaper:
|
||||
Config.runtime.monitors?.[wallpapersPage.displayName]?.wallpaper === fileUrl
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 20
|
||||
anchors.rightMargin: 20
|
||||
radius: Appearance.rounding.normal
|
||||
color: activeWallpaper
|
||||
? Appearance.m3colors.m3secondaryContainer
|
||||
: Appearance.m3colors.m3surfaceContainerLow
|
||||
layer.enabled: true
|
||||
|
||||
Image {
|
||||
id: wallImg
|
||||
|
||||
anchors.fill: parent
|
||||
source: fileUrl
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
asynchronous: true
|
||||
cache: true
|
||||
clip: true
|
||||
}
|
||||
|
||||
StyledText {
|
||||
anchors.centerIn: parent
|
||||
text: "Unsupported / Corrupted Image"
|
||||
visible: wallImg.status === Image.Error
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
Config.updateKey(
|
||||
"monitors." + wallpapersPage.displayName + ".wallpaper",
|
||||
fileUrl
|
||||
);
|
||||
if (Config.runtime.appearance.colors.autogenerated) {
|
||||
Quickshell.execDetached([
|
||||
"nucleus", "ipc", "call", "global", "regenColors"
|
||||
]);
|
||||
}
|
||||
}
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
layer.effect: OpacityMask {
|
||||
|
||||
maskSource: Rectangle {
|
||||
width: imgContainer.width
|
||||
height: imgContainer.height
|
||||
radius: imgContainer.radius
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user