Visit the project page — screenshots, features, and download links.
A modern, fast, and lightweight audio device switcher written in Rust with a Slint GUI. Designed to handle system audio inputs and outputs with a focus on Bluetooth device management.
- Instant Switching: No "Apply" button needed. Changes are immediate.
- Bluetooth Integration:
- Real-time Bluetooth power control.
- Automatic connection attempt when selecting a paired but disconnected device.
- Unified Mode: Toggle to use the same device for both input and output with one click.
- Persistence: Automatically saves and restores your last used configuration (Bluetooth state, Unified mode, and selected devices).
- Multilingual: Automatically detects system language (English and Portuguese supported).
- Lightweight: Minimal CPU/Memory footprint.
- Audio Backend: PulseAudio or PipeWire (with
pactlinstalled). - Bluetooth:
bluetoothctl. - System Libs:
libfontconfig1-dev,libx11-dev.
- Standard Windows Audio service support.
- Bluetooth management via Windows native API (handled by the OS).
Download the latest version from the Releases page.
Ensure you have Rust installed.
git clone https://github.com/evandrojr/audio-selector.git
cd audio-selector
cargo run --release- Backend: Rust 1.80+ (Edition 2021/2024 compatible).
- GUI: Slint framework.
- State Management: JSON-based configuration storage.
To monitor file changes and automatically rebuild/run during development, use the provided watcher script:
./run_watcher.shThis runs the utility located at src/bin/watcher.rs.
To build for all platforms using GitHub Actions, simply push to the main branch. The CI will generate binaries for Linux and Windows.
Created with ❤️ by Gemini CLI and OpenCode.