diff --git a/modules/Bar/Bar.qml b/modules/Bar/Bar.qml index 87d5e4b..0ee1c92 100644 --- a/modules/Bar/Bar.qml +++ b/modules/Bar/Bar.qml @@ -55,6 +55,7 @@ Variants { } Clock {} StatusIcons {} + Tray {} } } } diff --git a/modules/Bar/Tray.qml b/modules/Bar/Tray.qml new file mode 100644 index 0000000..8ce6e9f --- /dev/null +++ b/modules/Bar/Tray.qml @@ -0,0 +1,22 @@ +import Quickshell.Services.SystemTray +import QtQuick +import qs +import qs.settings +import QtQuick.Layouts + +Rectangle { + id: root + implicitWidth: trayRow.implicitWidth + 12 + implicitHeight: Settings.config.barHeight / 2 + 6 + radius: Settings.config.rounding + color: ThemeLoader.colors.base01 + RowLayout { + id: trayRow + anchors.centerIn: parent + Repeater { + id: trayRep + model: SystemTray.items + delegate: TrayItem{} + } + } +} diff --git a/modules/Bar/TrayItem.qml b/modules/Bar/TrayItem.qml new file mode 100644 index 0000000..3921fa4 --- /dev/null +++ b/modules/Bar/TrayItem.qml @@ -0,0 +1,30 @@ +import QtQuick +import Quickshell +import Quickshell.Services.SystemTray +import Quickshell.Widgets +import qs + +MouseArea { + id: root + required property SystemTrayItem modelData + implicitWidth: trayIcon.implicitWidth + implicitHeight: trayIcon.implicitHeight + acceptedButtons: Qt.LeftButton | Qt.RightButton + IconImage { + id: trayIcon + implicitSize: 16 + source: parent.modelData.icon + } + QsMenuAnchor { + id: menu + menu: root.modelData.hasMenu ? root.modelData.menu : null + anchor.item: root + } + onClicked: event => { + if (event.button === Qt.LeftButton) { + modelData.activate(); + } else if (modelData.hasMenu) { + menu.open(); + } + } +} diff --git a/shell.qml b/shell.qml index 639684a..f2650ed 100644 --- a/shell.qml +++ b/shell.qml @@ -1,3 +1,4 @@ +//@ pragma UseQApplication import Quickshell import QtQuick import qs.modules.Bar