import QtQuick import QtQuick.Effects import Quickshell import Quickshell.Widgets import "." as M import "../services" as S M.BarModule { id: root spacing: S.Theme.moduleSpacing tooltip: S.NiriIpc.focusedAppId ? S.NiriIpc.focusedAppId + "\n" + S.NiriIpc.focusedTitle : S.NiriIpc.focusedTitle cursorShape: Qt.ArrowCursor readonly property string _iconSource: { if (!S.NiriIpc.focusedAppId) return ""; const entry = DesktopEntries.heuristicLookup(S.NiriIpc.focusedAppId); return entry ? Quickshell.iconPath(entry.icon) : ""; } readonly property real _iconOffset: _icon.visible ? _icon.width + root.spacing : 0 // Natural content width - Bar.qml uses this to cap the group width readonly property real naturalWidth: _iconOffset + _label.implicitWidth IconImage { id: _icon visible: root._iconSource !== "" source: root._iconSource implicitSize: S.Theme.fontSize + 2 anchors.verticalCenter: parent.verticalCenter layer.enabled: true layer.effect: MultiEffect { colorization: 1.0 colorizationColor: root.accentColor } } M.BarLabel { id: _label label: S.NiriIpc.focusedTitle color: root.accentColor elide: Text.ElideRight anchors.verticalCenter: parent.verticalCenter width: Math.min(implicitWidth, Math.max(0, root.width - root._iconOffset)) } }