Files
tshell/modules/osd/VolumeCard.qml

43 lines
1019 B
QML

pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
import qs.config
import qs.services
import qs.ui
BarButton {
id: root
readonly property real level: Math.max(0, Math.min(Audio.muted ? 0 : Audio.volume, 1))
readonly property url iconUrl: `${Quickshell.shellPath("assets")}/icons/speaker.svg`
hoverHighlight: false
pointerCursor: false
iconOnly: true
iconSource: root.iconUrl
icon.width: Theme.volume.iconSize
icon.height: Theme.volume.iconSize
implicitWidth: Theme.volume.width
implicitHeight: Theme.volume.height
Rectangle {
id: fill
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
implicitWidth: parent.width * root.level
radius: Theme.radius
color: Audio.muted ? Theme.colors.error : Theme.colors.accent
opacity: 0.35
Behavior on width {
NumberAnimation {
duration: Theme.duration
}
}
}
}