PROJECT CASE STUDY

03 / 03

AirBlued.

Manage Bluetooth devices from a terminal, without shelling out to bluetoothctl.

BUILT WITH

  • Rust
  • ratatui
  • bluer
  • D-Bus

SYSTEM OVERVIEW

INPUTratatui interface
STATEApplication event loop
CLIENTbluer · D-Bus
SERVICEbluetoothd
Simplified from the project’s documented architecture and behavior.

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

No shell-out

Bluetooth operations use bluer over system D-Bus

Event-driven

Background tasks report through the app event channel

Milestones 1–3

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.