import qs.modules.common import qs.modules.common.functions import QtQuick import QtQuick.Layouts import Quickshell import Quickshell.Services.SystemTray import Quickshell.Widgets import Qt5Compat.GraphicalEffects MouseArea { id: root property var bar: root.QsWindow.window required property SystemTrayItem item property bool targetMenuOpen: false acceptedButtons: Qt.LeftButton | Qt.RightButton implicitWidth: 20 implicitHeight: 20 onClicked: (event) => { switch (event.button) { case Qt.LeftButton: item.activate(); break; case Qt.RightButton: if (item.hasMenu) menu.open(); break; } event.accepted = true; } QsMenuAnchor { id: menu menu: root.item.menu anchor.window: bar anchor.rect.x: root.x + (Config.options.bar.vertical ? 0 : bar?.width) anchor.rect.y: root.y + (Config.options.bar.vertical ? bar?.height : 0) anchor.rect.height: root.height anchor.rect.width: root.width anchor.edges: Config.options.bar.bottom ? (Edges.Top | Edges.Left) : (Edges.Bottom | Edges.Right) } IconImage { id: trayIcon visible: !Config.options.bar.tray.monochromeIcons source: root.item.icon anchors.centerIn: parent width: parent.width height: parent.height } Loader { active: Config.options.bar.tray.monochromeIcons anchors.fill: trayIcon sourceComponent: Item { Desaturate { id: desaturatedIcon visible: false // There's already color overlay anchors.fill: parent source: trayIcon desaturation: 0.8 // 1.0 means fully grayscale } ColorOverlay { anchors.fill: desaturatedIcon source: desaturatedIcon color: ColorUtils.transparentize(Appearance.colors.colOnLayer0, 0.9) } } } }