diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index 0ec2c85..c61942a 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -47,6 +47,9 @@ Variants { Pw { barHeight: root.implicitHeight } + Tray { + barHeight: root.implicitHeight + } } } } diff --git a/modules/bar/Pw.qml b/modules/bar/Pw.qml index 74c0092..adf63e9 100644 --- a/modules/bar/Pw.qml +++ b/modules/bar/Pw.qml @@ -9,8 +9,8 @@ WrapperRectangle { color: Colors.base01 required property int barHeight property double vertMargin: barHeight / 4 - 4 - property PwNode defaultAudio: Pipewire.ready ? Pipewire.defaultAudioSink : null - property string status: defaultAudio.audio.muted? "mut " : "vol " + property PwNode defaultAudio: Pipewire.ready ? Pipewire.preferredDefaultAudioSink : null + property string status: defaultAudio?.audio.muted ? "mut " : "vol " topMargin: vertMargin bottomMargin: vertMargin leftMargin: 8 @@ -19,7 +19,7 @@ WrapperRectangle { objects: [Pipewire.ready ? Pipewire.defaultAudioSink : null] } child: StyledText { - text: root.status + Math.floor(root.defaultAudio.audio.volume * 100) + "%" - opacity: root.defaultAudio.audio.muted ? 0.6 : 1.0 + text: root.status + Math.floor(root.defaultAudio?.audio.volume * 100) + "%" + opacity: root.defaultAudio?.audio.muted ? 0.6 : 1.0 } } diff --git a/modules/bar/Tray.qml b/modules/bar/Tray.qml new file mode 100644 index 0000000..9b2337a --- /dev/null +++ b/modules/bar/Tray.qml @@ -0,0 +1,47 @@ +pragma ComponentBehavior: Bound +import Quickshell +import Quickshell.Services.SystemTray +import Quickshell.DBusMenu +import Quickshell.Widgets +import QtQuick +import QtQuick.Layouts +import qs +import qs.widgets + +WrapperRectangle { + id: root + color: Colors.base01 + required property int barHeight + property double vertMargin: barHeight / 4 - 4 + topMargin: vertMargin + bottomMargin: vertMargin + leftMargin: 8 + rightMargin: 8 + + child: RowLayout { + id: iconlayout + Repeater { + id: iconRepeater + model: SystemTray.items + delegate: WrapperMouseArea { + id: iconWrapper + required property var modelData + child: IconImage { + source: iconWrapper.modelData.icon + implicitSize: 16 + } + QsMenuAnchor { + id: menu + anchor.item: iconWrapper + menu: iconWrapper.modelData.menu + } + acceptedButtons: Qt.LeftButton | Qt.RightButton + onClicked: mouse => { + if (mouse.button == Qt.RightButton) { + menu.open(); + } + } + } + } + } +} diff --git a/shell.qml b/shell.qml index f7e18de..df0b688 100644 --- a/shell.qml +++ b/shell.qml @@ -1,3 +1,4 @@ +//@ pragma UseQApplication import Quickshell import qs.modules.bar