69 lines
1.8 KiB
QML
69 lines
1.8 KiB
QML
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
|
|
}
|
|
}
|