pragma ComponentBehavior: Bound import Quickshell import Quickshell.Services.SystemTray import QtQuick import qs.hyprchrome.theme import qs.hyprchrome.widgets.panels // System tray in the hyprchrome panel chrome, in both densities: the same // items, drawn large enough to hit when expanded and shrunk onto the header // line when collapsed. // // Unlike the other panels this one sizes itself horizontally — the item count // is whatever the session happens to be running — so a layout can just give it // `Layout.fillHeight` and let its implicit width stand. BarPanel { id: panel panelId: "TRY" title: "SYSTEM TRAY" meta: panel.itemCount + (panel.itemCount === 1 ? " ITEM" : " ITEMS") readonly property int itemCount: SystemTray.items.values.length implicitWidth: Math.max(panel.headerMinWidth, panel.briefLeft + brief.implicitWidth + panel.padding, panel.padding * 2 + icons.implicitWidth) // Collapsed: the same icons, small, on the header line. summary: Row { id: brief spacing: 5 Repeater { model: SystemTray.items TrayIcon { iconSize: 13 } } Text { visible: panel.itemCount === 0 text: "NO ITEMS" color: Theme.muted font.family: Theme.microFont font.pixelSize: 9 font.letterSpacing: 1.2 height: 21 verticalAlignment: Text.AlignVCenter } } // Expanded: full-size cells. Row { id: icons spacing: 8 Repeater { model: SystemTray.items TrayIcon { iconSize: 18 } } Text { visible: panel.itemCount === 0 text: "NO ITEMS" color: Theme.muted font.family: Theme.microFont font.pixelSize: 9 font.letterSpacing: 1.2 height: 26 verticalAlignment: Text.AlignVCenter } } }