125 lines
3.2 KiB
QML
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]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|