feat(bluetooth): add native adapter-scoped management#18
Conversation
Use Quickshell's default adapter and its device model for power, discovery, connection state, connect, disconnect, and forget actions. Keep bluetoothctl only as an interactive BlueZ pairing agent so PIN/passkey prompts, failures, and timeouts remain visible in the panel. Remove device truncation, keep long lists scrollable, and document the Quickshell and bluez-utils requirements. Co-Authored-By: Codex <noreply@openai.com>
|
Thanks for splitting this out. Adapter-scoped devices, removal of the 12-device truncation, visible errors/timeouts, and keeping Two merge gates remain: 1. Quickshell rollout compatibilityThe panel statically imports Preferred fix:
The alternative is a hard Quickshell 0.3 preflight in both installation and Self-Update before deployment, but that has a larger rollout blast radius. 2. Real pairing validationThe SplitParser test proves chunk delivery, but not that the selected BlueZ agent capability and stdin flow work with actual devices. Please provide or explicitly leave for maintainer runtime validation:
The native state/actions look structurally sound; these two points are what remain before merge. |
… Quickshell <0.3 BluetoothPanel is instantiated eagerly by shell.qml, so importing Quickshell.Bluetooth directly made the whole shell fail to load on installs whose Quickshell predates the native Bluetooth API (e.g. a Self-Update that upgraded the config but not Quickshell). The panel is now a thin wrapper with no Bluetooth import that lazily loads the native implementation (BluetoothPanelNative.qml); if that import is unavailable it falls back automatically to the bluetoothctl implementation (BluetoothPanelLegacy.qml), so the panel keeps working and the shell always loads regardless of Quickshell version. README updated to describe the automatic fallback. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
e1459a6 to
1423fdc
Compare
Summary
Validation