From 79795005aeb6204dc68a416314e7c98a0b959e49 Mon Sep 17 00:00:00 2001 From: lucy Date: Mon, 9 Mar 2026 19:04:29 +0100 Subject: [PATCH] add systemtray to bar --- modules/Bar/Bar.qml | 1 + modules/Bar/Tray.qml | 22 ++++++++++++++++++++++ modules/Bar/TrayItem.qml | 30 ++++++++++++++++++++++++++++++ shell.qml | 1 + 4 files changed, 54 insertions(+) create mode 100644 modules/Bar/Tray.qml create mode 100644 modules/Bar/TrayItem.qml 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