Files
Aurora/config/aurora/modules/Volume.qml
2026-04-09 11:16:48 -05:00

125 lines
3.2 KiB
QML

import Quickshell // for PanelWindow
import QtQuick // for Text
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell.Io
import Quickshell.Widgets
import Quickshell.Hyprland
import Quickshell.Services.Pipewire
ScrollView {
anchors.fill: parent
ColumnLayout {
anchors.fill: parent
spacing: 0
ClippingWrapperRectangle {
color: Settings.colors.color11
radius: 5
Layout.margins: 5
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
implicitWidth: parent.width - 2 * Layout.margins
RowLayout {
width: parent.width
Text {
color: Settings.colors.color0
Layout.margins: 5
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: 'Output'
}
Slider {
from: 0
to: 2
orientation: Qt.Horizontal
implicitWidth: 500
value: Pipewire.defaultAudioSink.audio.volume
onValueChanged: Pipewire.defaultAudioSink.audio.volume = value
}
}
}
ColumnLayout {
Repeater {
id: outputs
model: {
Pipewire.nodes.values.filter(n => n.isSink && n.audio && n.nickname != "")
}
Button {
text: outputs.model[index].nickname
onClicked: {
Pipewire.preferredDefaultAudioSink = outputs.model[index]
}
PwObjectTracker {
objects: [ outputs.model[index] ]
}
}
}
}
ClippingWrapperRectangle {
color: Settings.colors.color11
radius: 5
Layout.margins: 5
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
implicitWidth: parent.width - 2 * Layout.margins
RowLayout {
width: parent.width
Text {
color: Settings.colors.color0
Layout.margins: 5
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: 'Input'
}
Slider {
from: 0
to: 2
visible: false
orientation: Qt.Horizontal
implicitWidth: 500
value: Pipewire.defaultAudioSource.audio.volume
onValueChanged: Pipewire.defaultAudioSource.audio.volume = value
}
}
}
ColumnLayout {
Repeater {
id: inputs
model: {
Pipewire.nodes.values.filter(n => !n.isSink && n.audio && n.nickname != "")
}
Button {
text: inputs.model[index].nickname
onClicked: {
Pipewire.preferredDefaultAudioSource = inputs.model[index]
}
}
}
}
}
}