import "root:/modules/common/" import "root:/modules/common/functions/color_utils.js" as ColorUtils import QtQuick import QtQuick.Layouts import Quickshell import Quickshell.Services.SystemTray import Quickshell.Widgets import Qt5Compat.GraphicalEffects MouseArea { id: root required property var bar required property SystemTrayItem item property bool targetMenuOpen: false property int trayItemWidth: Appearance.font.pixelSize.larger acceptedButtons: Qt.LeftButton | Qt.RightButton Layout.fillHeight: true implicitWidth: trayItemWidth 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 + bar.width anchor.rect.y: root.y anchor.rect.height: root.height anchor.edges: Edges.Bottom } 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: 1 // 1.0 means fully grayscale } ColorOverlay { anchors.fill: desaturatedIcon source: desaturatedIcon color: ColorUtils.transparentize(Appearance.colors.colOnLayer0, 0.6) } } } }