import QtQuick import Quickshell.Io import "." as M Row { id: root spacing: 4 property int count: 0 property bool dnd: false property bool inhibited: false Process { id: sub running: true command: ["swaync-client", "--subscribe-waybar"] stdout: SplitParser { splitMarker: "\n" onRead: line => { try { const d = JSON.parse(line); const cls = d.class ?? ""; root.count = d.count ?? 0; root.dnd = cls.includes("dnd"); root.inhibited = cls.includes("inhibited"); } catch (e) {} } } } Text { text: { if (root.inhibited) return root.count > 0 ? "󰂛" : "󰪑"; if (root.dnd) return root.count > 0 ? "󰂠" : "󰪓"; return root.count > 0 ? "󱅫" : "󰂜"; } color: M.Theme.base05 font.pixelSize: M.Theme.fontSize + 2 font.family: M.Theme.fontFamily anchors.verticalCenter: parent.verticalCenter } Text { text: root.count > 0 ? String(root.count) : "" color: M.Theme.base05 font.pixelSize: M.Theme.fontSize font.family: M.Theme.fontFamily anchors.verticalCenter: parent.verticalCenter } TapHandler { acceptedButtons: Qt.LeftButton onTapped: { clicker.command = ["swaync-client", "--toggle-panel", "--skip-wait"]; clicker.running = true; } } TapHandler { acceptedButtons: Qt.RightButton onTapped: { clicker.command = ["swaync-client", "--toggle-dnd", "--skip-wait"]; clicker.running = true; } } Process { id: clicker } }