diff options
Diffstat (limited to 'modules/bar/popouts/Audio.qml')
| -rw-r--r-- | modules/bar/popouts/Audio.qml | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/bar/popouts/Audio.qml b/modules/bar/popouts/Audio.qml new file mode 100644 index 0000000..28667ec --- /dev/null +++ b/modules/bar/popouts/Audio.qml @@ -0,0 +1,57 @@ +import qs.widgets +import qs.services +import qs.config +import QtQuick.Layouts +import Quickshell + +ColumnLayout { + id: root + + required property var wrapper + + spacing: Appearance.spacing.normal + + VerticalSlider { + id: volumeSlider + + icon: { + if (Audio.muted) + return "no_sound"; + if (value >= 0.5) + return "volume_up"; + if (value > 0) + return "volume_down"; + return "volume_mute"; + } + + value: Audio.volume + onMoved: Audio.setVolume(value) + + implicitWidth: Config.osd.sizes.sliderWidth + implicitHeight: Config.osd.sizes.sliderHeight + } + + StyledRect { + id: pavuButton + + implicitWidth: implicitHeight + implicitHeight: icon.implicitHeight + Appearance.padding.small * 2 + + radius: Appearance.rounding.normal + color: Colours.palette.m3surfaceContainer + + StateLayer { + function onClicked(): void { + root.wrapper.hasCurrent = false; + Quickshell.execDetached(["pavucontrol"]); + } + } + + MaterialIcon { + id: icon + + anchors.centerIn: parent + text: "settings" + } + } +} |