[Toothpick] Add nearby unpaired-device search with blueutil
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 7.8k
- Forks
- 6.9k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 442
Description
Extension
https://www.raycast.com/VladCuciureanu/toothpick
OS Version
macOS 27
Description
Toothpick only lists paired devices. Add a blueutil-backed Search Nearby Devices command using blueutil --inquiry 4 --format json.
Expected behavior:
- Run inquiry asynchronously with a bounded timeout.
- Show only unpaired results, deduplicated by normalized MAC address.
- Show and copy device name and MAC address.
- Provide clear empty, retry, Bluetooth-off, timeout, permission, and missing-blueutil states.
- Leave the existing paired-device view unchanged.
blueutil inquiry discovers nearby discoverable Bluetooth Classic devices. It does not scan Bluetooth Low Energy devices.
Who will benefit from this feature?
People who want to find a new Bluetooth device without leaving Raycast.
Anything else?
- Current Toothpick blueutil service: https://github.com/raycast/extensions/blob/main/extensions/toothpick/src/core/devices/devices.service.blueutil.ts
- blueutil inquiry documentation: https://github.com/toy/blueutil#usage
- Issue #2923 concerns toggling a preselected paired device, not discovering unpaired devices: https://github.com/raycast/extensions/issues/2923
- No Toothpick issue or PR requesting nearby inquiry or unpaired-device search was found across open and closed items as of August 5, 2026.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading extensions/toothpick/src/core/devices/devices.service.blueutil.ts and the blueutil inquiry documentation. Trace how the existing paired-device view invokes the service, then define the new command around asynchronous inquiry and bounded timeout behavior. Done means unpaired results are normalized and deduplicated, names and MAC addresses can be shown and copied, all listed failure states are clear, and the paired view is unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, typescript
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100