tray: needs-attention glow and pulse

This commit is contained in:
Damocles 2026-04-12 17:23:35 +02:00
parent e96ccf7f63
commit d8d602d30f

View file

@ -1,4 +1,5 @@
import QtQuick import QtQuick
import QtQuick.Effects
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell
import Quickshell.Services.SystemTray import Quickshell.Services.SystemTray
@ -19,13 +20,34 @@ RowLayout {
id: iconItem id: iconItem
required property SystemTrayItem modelData required property SystemTrayItem modelData
readonly property bool _needsAttention: modelData.status === SystemTrayItemStatus.NeedsAttention
property real _pulseOpacity: 1
implicitWidth: 18 implicitWidth: 18
implicitHeight: 18 implicitHeight: 18
SequentialAnimation {
running: iconItem._needsAttention
loops: Animation.Infinite
NumberAnimation { target: iconItem; property: "_pulseOpacity"; to: 0.3; duration: 400; easing.type: Easing.InOutQuad }
NumberAnimation { target: iconItem; property: "_pulseOpacity"; to: 1; duration: 400; easing.type: Easing.InOutQuad }
onRunningChanged: if (!running) iconItem._pulseOpacity = 1
}
M.ThemedIcon { M.ThemedIcon {
anchors.fill: parent anchors.fill: parent
source: iconItem.modelData.icon source: iconItem.modelData.icon
tint: M.Theme.base0D tint: iconItem._needsAttention ? M.Theme.base08 : M.Theme.base0D
opacity: iconItem._pulseOpacity
layer.enabled: iconItem._needsAttention
layer.effect: MultiEffect {
shadowEnabled: true
shadowColor: M.Theme.base08
shadowBlur: 0.8
shadowVerticalOffset: 0
shadowHorizontalOffset: 0
}
} }
HoverHandler { HoverHandler {