trayicon rendering

This commit is contained in:
Zacharias-Brohn
2025-10-16 16:15:49 +02:00
parent aa7479b466
commit ad43c3c694
2 changed files with 55 additions and 17 deletions
+16
View File
@@ -0,0 +1,16 @@
pragma Singleton
import Quickshell
import Quickshell.Services.Notifications
Singleton {
id: root
function getTrayIcon(id: string, icon: string): string {
if (icon.includes("?path=")) {
const [name, path] = icon.split("?path=");
icon = Qt.resolvedUrl(`${path}/${name.slice(name.lastIndexOf("/") + 1)}`);
}
return icon;
}
}
+30 -8
View File
@@ -3,21 +3,19 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Effects
import Caelestia
import Quickshell
import Quickshell.Widgets
import Quickshell.Services.SystemTray
IconImage {
MouseArea {
id: root
required property SystemTrayItem item
source: root.item.icon
implicitWidth: 18
implicitHeight: 18
mipmap: false
asynchronous: true
MouseArea {
anchors.fill: parent
implicitWidth: 22
implicitHeight: 22
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: event => {
switch (event.button) {
@@ -29,6 +27,30 @@ IconImage {
break;
}
}
IconImage {
id: icon
anchors.fill: parent
layer.enabled: true
layer.onEnabledChanged: {
if (layer.enabled && status === Image.Ready)
analyser.requestUpdate();
}
onStatusChanged: {
if (layer.enabled && status === Image.Ready)
analyser.requestUpdate();
}
source: GetIcons.getTrayIcon(root.item.id, root.item.icon)
mipmap: false
asynchronous: true
ImageAnalyser {
id: analyser
sourceItem: icon
}
}
QsMenuAnchor {
id: menuAnchor