From bc4ad31d489a58b827de06eeb2701a412fd7ada5 Mon Sep 17 00:00:00 2001 From: bbedward Date: Sun, 22 Feb 2026 22:10:07 -0500 Subject: [PATCH] bluetooth: expose trust/untrust on devices --- core/internal/server/bluez/manager.go | 4 ++++ .../ControlCenter/Details/BluetoothDetail.qml | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/core/internal/server/bluez/manager.go b/core/internal/server/bluez/manager.go index 3d78d135..4408d254 100644 --- a/core/internal/server/bluez/manager.go +++ b/core/internal/server/bluez/manager.go @@ -311,6 +311,10 @@ func (m *Manager) handleDevicePropertiesChanged(path dbus.ObjectPath, changed ma select { case m.eventQueue <- func() { time.Sleep(300 * time.Millisecond) + log.Infof("[Bluetooth] Auto-trusting newly paired device: %s", devicePath) + if err := m.TrustDevice(devicePath, true); err != nil { + log.Warnf("[Bluetooth] Auto-trust failed: %v", err) + } log.Infof("[Bluetooth] Auto-connecting newly paired device: %s", devicePath) if err := m.ConnectDevice(devicePath); err != nil { log.Warnf("[Bluetooth] Auto-connect failed: %v", err) diff --git a/quickshell/Modules/ControlCenter/Details/BluetoothDetail.qml b/quickshell/Modules/ControlCenter/Details/BluetoothDetail.qml index d0ea91a6..9d4d6f28 100644 --- a/quickshell/Modules/ControlCenter/Details/BluetoothDetail.qml +++ b/quickshell/Modules/ControlCenter/Details/BluetoothDetail.qml @@ -669,6 +669,30 @@ Rectangle { } } + MenuItem { + text: bluetoothContextMenu.currentDevice?.trusted ? I18n.tr("Untrust") : I18n.tr("Trust") + height: 32 + + contentItem: StyledText { + text: parent.text + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceText + leftPadding: Theme.spacingS + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle { + color: parent.hovered ? Qt.rgba(Theme.primary.r, Theme.primary.g, Theme.primary.b, 0.08) : "transparent" + radius: Theme.cornerRadius / 2 + } + + onTriggered: { + if (!bluetoothContextMenu.hasDevice) + return; + bluetoothContextMenu.currentDevice.trusted = !bluetoothContextMenu.currentDevice.trusted; + } + } + MenuItem { text: I18n.tr("Forget Device") height: 32