noctalia-shell/Helpers/BluetoothManager.qml
2025-07-11 14:14:28 +02:00

70 lines
No EOL
2.6 KiB
QML

import QtQuick
import Quickshell.Io
QtObject {
// List all known devices
function listDevices(callback) {
var proc = Qt.createQmlObject('
import Quickshell.Io;\n\
Process {\n\
command: ["bluetoothctl", "devices"],\n\
running: true;\n\
stdout: StdioCollector {\n\
onStreamFinished: {\n\
var lines = this.text.split("\n");\n\
var devs = [];\n\
for (var i = 0; i < lines.length; ++i) {\n\
var line = lines[i].trim();\n\
if (line.startsWith("Device ")) {\n\
var parts = line.split(" ");\n\
var mac = parts[1];\n\
var name = parts.slice(2).join(" ");\n\
devs.push({ mac: mac, name: name });\n\
}\n\
}\n\
callback(devs);\n\
parent.destroy();\n\
}\n\
}\n\
}', this);
}
// Check if a device is connected
function checkConnected(mac, callback) {
var proc = Qt.createQmlObject('
import Quickshell.Io;\n\
Process {\n\
command: ["bluetoothctl", "info", "' + mac + '"],\n\
running: true;\n\
stdout: StdioCollector {\n\
onStreamFinished: {\n\
var connected = this.text.indexOf("Connected: yes") !== -1;\n\
callback(connected);\n\
parent.destroy();\n\
}\n\
}\n\
}', this);
}
// Connect to a device
function connect(mac, callback) {
var proc = Qt.createQmlObject('
import Quickshell.Io;\n\
Process {\n\
command: ["bluetoothctl", "connect", "' + mac + '"],\n\
running: true;\n\
stdout: StdioCollector { onStreamFinished: { callback(true); parent.destroy(); } }\n\
}', this);
}
// Disconnect from a device
function disconnect(mac, callback) {
var proc = Qt.createQmlObject('
import Quickshell.Io;\n\
Process {\n\
command: ["bluetoothctl", "disconnect", "' + mac + '"],\n\
running: true;\n\
stdout: StdioCollector { onStreamFinished: { callback(true); parent.destroy(); } }\n\
}', this);
}
}