98 lines
2.2 KiB
QML
98 lines
2.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
|
|
|
|
ClippingWrapperRectangle {
|
|
radius: 5
|
|
width: 100; height: 30
|
|
Button {
|
|
id: button
|
|
text: " " + Math.floor(Pipewire.defaultAudioSink?.audio?.volume * 100) + "%"
|
|
font.pointSize: 12
|
|
implicitHeight: parent.height
|
|
|
|
PwObjectTracker {
|
|
objects: [ Pipewire.defaultAudioSink ]
|
|
}
|
|
|
|
onClicked: {
|
|
menu.visible = true
|
|
grab.active = true
|
|
}
|
|
|
|
}
|
|
|
|
required property var window
|
|
required property real popupOffset
|
|
id: root
|
|
|
|
PopupWindow {
|
|
|
|
id: menu
|
|
|
|
anchor.window: window
|
|
anchor.rect.x: popupOffset
|
|
anchor.rect.y: 50
|
|
implicitWidth: 250
|
|
implicitHeight: 150
|
|
visible: false
|
|
|
|
color: "transparent"
|
|
|
|
ClippingWrapperRectangle {
|
|
radius: 5
|
|
|
|
implicitHeight: parent.height - 20
|
|
implicitWidth: parent.width
|
|
|
|
ScrollView {
|
|
ColumnLayout {
|
|
|
|
spacing: 0
|
|
|
|
Text {
|
|
text: 'Output Devices'
|
|
}
|
|
|
|
ColumnLayout {
|
|
|
|
}
|
|
|
|
Text {
|
|
text: 'Input Devices'
|
|
}
|
|
|
|
ColumnLayout {
|
|
/*Repeater {
|
|
id: in
|
|
|
|
model: {
|
|
set = []
|
|
Pipewire.nodes.values.forEach(n => { !n.isSink && !n.isStream ? set.push(n) : return })
|
|
return set
|
|
}
|
|
|
|
Text {
|
|
text: in.model[index].nickname
|
|
}
|
|
}*/
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
HyprlandFocusGrab {
|
|
id: grab
|
|
windows: [ menu ]
|
|
onCleared: menu.visible = false
|
|
}
|
|
}
|
|
}
|