mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-24 12:22:09 +00:00
72 lines
2 KiB
QML
72 lines
2 KiB
QML
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)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|