Skip to content

evandrojr/audio-selector

Repository files navigation

Audio Selector

Website License Platform

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.

Features

  • 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.

Requirements

Linux

  • Audio Backend: PulseAudio or PipeWire (with pactl installed).
  • Bluetooth: bluetoothctl.
  • System Libs: libfontconfig1-dev, libx11-dev.

Windows

  • Standard Windows Audio service support.
  • Bluetooth management via Windows native API (handled by the OS).

Installation

From Binaries

Download the latest version from the Releases page.

From Source

Ensure you have Rust installed.

git clone https://github.com/evandrojr/audio-selector.git
cd audio-selector
cargo run --release

Technical Details

  • Backend: Rust 1.80+ (Edition 2021/2024 compatible).
  • GUI: Slint framework.
  • State Management: JSON-based configuration storage.

Development

Running the Watcher

To monitor file changes and automatically rebuild/run during development, use the provided watcher script:

./run_watcher.sh

This runs the utility located at src/bin/watcher.rs.

Manual Build

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.

About

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.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors