Use loaders for all optional components e.g. workspace windows and occupied background Fix bar preset loader usage Fix occupied group Change text on active ws colour Tray no extension for paths (use qt auto resolution)
63 lines
1.5 KiB
QML
63 lines
1.5 KiB
QML
import "root:/config"
|
|
import Quickshell
|
|
import Quickshell.Widgets
|
|
import Quickshell.Services.SystemTray
|
|
import QtQuick
|
|
import Qt5Compat.GraphicalEffects
|
|
|
|
MouseArea {
|
|
id: root
|
|
|
|
required property SystemTrayItem modelData
|
|
required property color colour
|
|
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
width: Appearance.font.size.smaller * 2
|
|
height: Appearance.font.size.smaller * 2
|
|
|
|
onClicked: event => {
|
|
if (event.button === Qt.LeftButton)
|
|
modelData.activate();
|
|
else if (modelData.hasMenu)
|
|
menu.open();
|
|
}
|
|
|
|
// TODO custom menu
|
|
QsMenuAnchor {
|
|
id: menu
|
|
|
|
menu: root.modelData.menu
|
|
anchor.window: this.QsWindow.window
|
|
}
|
|
|
|
IconImage {
|
|
id: icon
|
|
|
|
visible: !BarConfig.tray.recolourIcons
|
|
source: {
|
|
let icon = root.modelData.icon;
|
|
if (icon.includes("?path=")) {
|
|
const [name, path] = icon.split("?path=");
|
|
icon = `file://${path}/${name.slice(name.lastIndexOf("/") + 1)}`;
|
|
}
|
|
return icon;
|
|
}
|
|
asynchronous: true
|
|
anchors.fill: parent
|
|
}
|
|
|
|
ColorOverlay {
|
|
visible: BarConfig.tray.recolourIcons
|
|
anchors.fill: icon
|
|
source: icon
|
|
color: root.colour
|
|
|
|
Behavior on color {
|
|
ColorAnimation {
|
|
duration: Appearance.anim.durations.normal
|
|
easing.type: Easing.BezierSpline
|
|
easing.bezierCurve: Appearance.anim.curves.standard
|
|
}
|
|
}
|
|
}
|
|
}
|