nova-shell/modules/Notifications.qml
2026-04-10 10:49:48 +02:00

58 lines
1.6 KiB
QML

import QtQuick
import Quickshell.Io
import "." as M
Row {
id: root
spacing: 4
property int count: 0
property bool dnd: false
Process {
id: sub
running: true
command: ["swaync-client", "--subscribe-waybar"]
stdout: SplitParser {
splitMarker: "\n"
onRead: (line) => {
try {
const d = JSON.parse(line);
root.count = d.count ?? 0;
root.dnd = (d.class ?? "").includes("dnd");
} catch (e) {}
}
}
}
Text {
text: {
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
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: (m) => {
const cmd = m.button === Qt.RightButton
? ["swaync-client", "--toggle-dnd", "--skip-wait"]
: ["swaync-client", "--toggle-panel", "--skip-wait"];
clicker.command = cmd;
clicker.running = true;
}
}
Process { id: clicker }
}