A sleek, native Linux desktop application to manage Bluetooth devices, built entirely in Rust using the iced framework. It acts as a graphical wrapper around the command-line utility bluetoothctl (BlueZ).
- Native GUI: Built with Rust's
iced(v0.14) framework. - Asynchronous: Uses
tokioto execute terminal commands in the background. - Automatic Parsing: Parses standard
bluetoothctloutput to create interactive, structured lists rather than forcing you to read raw terminal text. - Quick Actions: Instantly Power On/Off your adapter, list devices, and perform targeted actions.
- Device Management: View discovered devices (MAC Address + Name) with dedicated buttons to:
- Connect
- Pair
- Trust
- Remove
Because this is a wrapper around bluetoothctl, it is designed specifically for Linux environments running the BlueZ daemon.
You must have the following installed on your system:
bluetoothctl(Usually included in thebluezpackage)- Rust (Edition 2024)
- Cargo
-
Clone the repository:
git clone [https://github.com/yourusername/bluetoothctl_gui.git](https://github.com/yourusername/bluetoothctl_gui.git) cd bluetoothctl_gui -
Build and Run (Debug mode):
cargo run
-
Build for Release:
cargo build --release
The compiled binary will be located in
target/release/bluetoothctl.
This project has been heavily optimized to only compile the features it needs.
iced(0.14.0): Core GUI framework. (Usingtokio,wgpu, andwayland/x11features).tokio(1.x): Async runtime. (Using theprocessfeature).
Contributions are welcome! If you want to add a feature or fix a bug, feel free to open a Pull Request.
Future Roadmap Ideas:
- Live polling for device connection status (Screen scraping
info <mac>). - A dedicated "Scan" button (
scan on/scan off) with real-time updates. - Eventually migrating from
bluetoothctlcommand wrappers to thebluercrate for native D-Bus integration with BlueZ.
This project is open-source and available under the MIT License.