This commit is contained in:
Zacharias-Brohn
2025-10-07 23:22:46 +02:00
parent 0da7e57a64
commit f6d25c98a6
10 changed files with 727 additions and 70 deletions
+73
View File
@@ -0,0 +1,73 @@
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls
import Quickshell
import Quickshell.Services.SystemTray
Item {
id: root
required property int index
property var menu: TrayItemMenu {
height: trayMenu.children.values.length * 30
trayMenu: trayMenu
width: 500
}
required property SystemTrayItem modelData
implicitHeight: trayItemIcon.width
implicitWidth: this.implicitHeight
Image {
id: trayItemIcon
anchors.centerIn: parent
antialiasing: true
height: this.width
mipmap: true
smooth: true
source: {
// adapted from soramanew
const icon = root.modelData?.icon;
if (icon.includes("?path=")) {
const [name, path] = icon.split("?path=");
return `file://${path}/${name.slice(name.lastIndexOf("/") + 1)}`;
}
return root.modelData.icon;
}
width: 18
// too blurry for now
// layer.enabled: true
// layer.effect: MultiEffect {
// colorizationColor: Dat.Colors.current.secondary
// colorization: 1.0
// antialiasing: true
// smooth: true
// }
MouseArea {
acceptedButtons: Qt.LeftButton | Qt.RightButton
anchors.fill: parent
onClicked: mevent => {
if (mevent.button == Qt.LeftButton) {
root.modelData.activate();
return;
}
if (!root.modelData.hasMenu) {
return;
} else {
root.menu.visible = true;
}
}
}
}
QsMenuOpener {
id: trayMenu
menu: root.modelData?.menu
}
}