import { bind, readFile, Variable, writeFile } from "astal"; import { Gtk } from "astal/gtk4"; import AstalBluetooth from "gi://AstalBluetooth"; import BTDevice from "./Device"; const ALIGN = Gtk.Align; const bt = AstalBluetooth.get_default(); const BluetoothModule = () => { return ( ); }; const openBTPicker = () => { picker.popup(); try { bt.adapter.start_discovery(); } catch (_) {} }; const BluetoothPickerList = () => { let btEnableState = readFile("./btconf") === "true" ? true : false; bt.adapter.set_powered(btEnableState); const updateState = () => { btEnableState = !btEnableState; writeFile("./btconf", "" + btEnableState); }; return ( bt.adapter.stop_discovery()} cssClasses={["popover-box"]} > } endWidget={ updateState()} > } > {bind(bt, "devices").as(devices => { return devices .filter(device => { if (device.get_connected() || device.get_paired()) { return device; } }) .map(device => { return ; }); })} {bind(bt, "devices").as(devices => { return devices .filter(data => { if (!data.get_connected() && !data.get_paired()) { return data; } }) .map(device => { return ; }); })} ); }; const BluetoothPicker = () => { const popover = new Gtk.Popover(); popover.set_child(BluetoothPickerList()); popover.connect("closed", () => bt.adapter.stop_discovery()); return popover; }; const picker = BluetoothPicker(); export default { BluetoothModule, };