Files
linux-dotfiles/quickshell/services/BluetoothService.qml
2026-04-07 22:10:33 +02:00

56 lines
1.6 KiB
QML

import QtQuick
import Quickshell.Io
Item {
id: root
signal devicesFound(var devices)
property var connectedDevices: []
function deviceListChanged(newList) {
if (newList.length !== root.connectedDevices.length) {
return true;
}
for (let i = 0; i < newList.length; i++) {
if (newList[i].mac !== root.connectedDevices[i].mac ||
newList[i].name !== root.connectedDevices[i].name) {
return true;
}
}
return false;
}
Process {
id: bluetoothConnectedDevicesProcess
command: ["bluetoothctl", "devices", "Connected"]
stdout: StdioCollector {
onStreamFinished: {
if (!this.text) {
root.connectedDevices = [];
root.devicesFound([]);
return;
}
var devices = this.text.trim().split("\n").map(line => {
var parts = line.split(" ");
return {
mac: parts[1],
name: parts.slice(2).join(" ")
};
});
if (root.deviceListChanged(devices)) {
root.connectedDevices = devices;
root.devicesFound(devices);
}
}
}
}
Timer {
interval: 2000
running: true
repeat: true
onTriggered: bluetoothConnectedDevicesProcess.running = true
}
Component.onCompleted: bluetoothConnectedDevicesProcess.running = true
}