Files
z-bar-qt/Modules/TrayItem.qml
2026-02-14 12:22:10 +01:00

60 lines
1.7 KiB
QML

import QtQuick.Layouts
import QtQuick.Effects
import QtQuick
import Quickshell
import Quickshell.Services.SystemTray
import Quickshell.Io
import Quickshell.Widgets
import qs.Modules
import qs.Components
import qs.Config
Item {
id: root
required property SystemTrayItem item
required property PanelWindow bar
required property int ind
required property Wrapper popouts
required property RowLayout loader
property bool hasLoaded: false
StateLayer {
anchors.fill: parent
anchors.margins: 3
radius: 6
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if ( mouse.button === Qt.LeftButton ) {
root.item.activate();
} else if ( mouse.button === Qt.RightButton ) {
root.popouts.currentName = `traymenu${ root.ind }`;
root.popouts.currentCenter = Qt.binding( () => root.mapToItem( root.loader, root.implicitWidth / 2, 0 ).x );
root.popouts.hasCurrent = true;
if ( visibilities.sidebar || visibilities.dashboard ) {
visibilities.sidebar = false;
visibilities.dashboard = false;
}
}
}
}
Image {
id: icon
property bool batteryHDPI: root.bar.screen.x < 0 && root.item.icon.includes("battery")
property bool nmHDPI: root.bar.screen.x < 0 && root.item.icon.includes("nm-")
anchors.centerIn: parent
width: batteryHDPI ? 26 : ( nmHDPI ? 25 : 22 )
height: batteryHDPI ? 26 : ( nmHDPI ? 25 : 22 )
source: root.item.icon
mipmap: true
smooth: ( batteryHDPI || nmHDPI ) ? false : true
asynchronous: true
sourceSize.width: ( batteryHDPI || nmHDPI ) ? 16 : 22
sourceSize.height: ( batteryHDPI || nmHDPI ) ? 16 : 22
fillMode: Image.PreserveAspectFit
}
}