diff --git a/modules/dashboard/Media.qml b/modules/dashboard/Media.qml index ccb5f0c4..367d9e98 100644 --- a/modules/dashboard/Media.qml +++ b/modules/dashboard/Media.qml @@ -184,8 +184,10 @@ Item { source: Players.getArtUrl(Players.active) asynchronous: true fillMode: Image.PreserveAspectCrop - sourceSize.width: width - sourceSize.height: height + sourceSize: { + const dpr = (QsWindow.window as QsWindow)?.devicePixelRatio ?? 1; + return Qt.size(width * dpr, height * dpr); + } MouseArea { anchors.fill: parent diff --git a/modules/dashboard/dash/Media.qml b/modules/dashboard/dash/Media.qml index b8e78abd..a14e5e38 100644 --- a/modules/dashboard/dash/Media.qml +++ b/modules/dashboard/dash/Media.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Shapes +import Quickshell import Caelestia.Config import Caelestia.Services import qs.components @@ -109,8 +110,10 @@ Item { source: Players.getArtUrl(Players.active) asynchronous: true fillMode: Image.PreserveAspectCrop - sourceSize.width: width - sourceSize.height: height + sourceSize: { + const dpr = (QsWindow.window as QsWindow)?.devicePixelRatio ?? 1; + return Qt.size(width * dpr, height * dpr); + } } } diff --git a/modules/lock/Media.qml b/modules/lock/Media.qml index 05c9daaf..c55333c7 100644 --- a/modules/lock/Media.qml +++ b/modules/lock/Media.qml @@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound import QtQuick import QtQuick.Layouts +import Quickshell import Caelestia.Config import qs.components import qs.components.effects @@ -22,8 +23,10 @@ Item { asynchronous: true fillMode: Image.PreserveAspectCrop - sourceSize.width: width - sourceSize.height: height + sourceSize: { + const dpr = (QsWindow.window as QsWindow)?.devicePixelRatio ?? 1; + return Qt.size(width * dpr, height * dpr); + } layer.enabled: true layer.effect: OpacityMask { diff --git a/modules/lock/NotifDock.qml b/modules/lock/NotifDock.qml index bf827579..2254dfe0 100644 --- a/modules/lock/NotifDock.qml +++ b/modules/lock/NotifDock.qml @@ -52,7 +52,7 @@ ColumnLayout { asynchronous: true source: Paths.absolutePath(Config.paths.lockNoNotifsPic) fillMode: Image.PreserveAspectFit - sourceSize.width: clipRect.width * 0.8 + sourceSize.width: clipRect.width * 0.8 * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1) layer.enabled: true layer.effect: Colouriser { diff --git a/modules/lock/NotifGroup.qml b/modules/lock/NotifGroup.qml index 0a5b6d73..971b921a 100644 --- a/modules/lock/NotifGroup.qml +++ b/modules/lock/NotifGroup.qml @@ -73,8 +73,10 @@ StyledRect { Image { source: Qt.resolvedUrl(root.image) fillMode: Image.PreserveAspectCrop - sourceSize.width: TokenConfig.sizes.notifs.image - sourceSize.height: TokenConfig.sizes.notifs.image + sourceSize: { + const size = TokenConfig.sizes.notifs.image * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1); + return Qt.size(size, size); + } cache: false asynchronous: true width: TokenConfig.sizes.notifs.image diff --git a/modules/notifications/Notification.qml b/modules/notifications/Notification.qml index 70f58af0..fe6fd056 100644 --- a/modules/notifications/Notification.qml +++ b/modules/notifications/Notification.qml @@ -126,8 +126,10 @@ StyledRect { anchors.fill: parent source: Qt.resolvedUrl(root.modelData.image) fillMode: Image.PreserveAspectCrop - sourceSize.width: TokenConfig.sizes.notifs.image - sourceSize.height: TokenConfig.sizes.notifs.image + sourceSize: { + const size = TokenConfig.sizes.notifs.image * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1); + return Qt.size(size, size); + } cache: false asynchronous: true } diff --git a/modules/session/Content.qml b/modules/session/Content.qml index bf16b148..e1ba2809 100644 --- a/modules/session/Content.qml +++ b/modules/session/Content.qml @@ -48,7 +48,7 @@ Column { AnimatedImage { width: Tokens.sizes.session.button height: Tokens.sizes.session.button - sourceSize.width: width + sourceSize.width: width * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1) playing: visible asynchronous: true diff --git a/modules/sidebar/NotifDock.qml b/modules/sidebar/NotifDock.qml index bf978ec0..4509ce26 100644 --- a/modules/sidebar/NotifDock.qml +++ b/modules/sidebar/NotifDock.qml @@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound import QtQuick import QtQuick.Layouts +import Quickshell import Quickshell.Widgets import Caelestia.Config import qs.components @@ -98,7 +99,7 @@ Item { asynchronous: true source: Paths.absolutePath(Config.paths.noNotifsPic) fillMode: Image.PreserveAspectFit - sourceSize.width: clipRect.width * 0.8 + sourceSize.width: clipRect.width * 0.8 * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1) layer.enabled: true layer.effect: Colouriser { diff --git a/modules/sidebar/NotifGroup.qml b/modules/sidebar/NotifGroup.qml index 57ee06b4..2920af74 100644 --- a/modules/sidebar/NotifGroup.qml +++ b/modules/sidebar/NotifGroup.qml @@ -87,8 +87,10 @@ StyledRect { Image { source: Qt.resolvedUrl(root.image) fillMode: Image.PreserveAspectCrop - sourceSize.width: TokenConfig.sizes.notifs.image - sourceSize.height: TokenConfig.sizes.notifs.image + sourceSize: { + const size = TokenConfig.sizes.notifs.image * ((QsWindow.window as QsWindow)?.devicePixelRatio ?? 1); + return Qt.size(size, size); + } cache: false asynchronous: true width: TokenConfig.sizes.notifs.image