PROJECT CASE STUDY
03 / 03
AirBlued.
Manage Bluetooth devices from a terminal, without shelling out to bluetoothctl.
BUILT WITH
SYSTEM OVERVIEW
THE CHALLENGE
Manage Bluetooth without handing control to a shell command.
AirBlued is a terminal interface for Linux Bluetooth that talks to the running bluetoothd service over system D-Bus. The application keeps device work and terminal rendering on separate paths so discovery and actions can report back without blocking the interface loop.
01 / ARCHITECTURE
One application state, with background work reported as events.
The event loop owns application state. Bluetooth work runs in background tasks and sends results through an event channel, so tasks do not mutate UI state directly. Input events and a ticker feed the same loop.
Device actions are short-lived tasks with timeouts. They report completion through the channel, after which the app refreshes the relevant device state.
02 / DEVICE WORK
Discovery and actions stay visible in the terminal.
The interface can enumerate known devices, stream live scan results sorted by signal strength, and connect, disconnect, trust, untrust, rename, or remove a device. Removing a device uses a confirmation dialog.
Stopping a scan drops its BlueZ discovery session, so the radio scan ends with the screen rather than continuing in the background.
03 / CURRENT SCOPE
The implemented milestones define the boundary.
The documented implementation covers the scaffold, read-only device browsing, live scanning, and device actions. Pairing-agent prompts, adapter settings, filtering, and GATT browsing remain future work.
The project requires Linux with BlueZ running, Rust 1.88 or newer, and permission to use the system D-Bus.
OUTCOMES
What the build demonstrates
Bluetooth operations use bluer over system D-Bus
Background tasks report through the app event channel
Scaffold, live reads, scan, and device actions implemented
VALIDATION & SCOPE
What’s verified, and what remains.
- The README documents testing on Linux with BlueZ and a Bluetooth adapter.
- Pairing-agent prompts and adapter settings are not implemented yet.
- The project requires system D-Bus access; policy prompts may apply for privileged operations.