A command-line utility for managing PipeWire audio devices with a simple menu interface.
- 🔊 Set default output/input devices
- 🎚️ Control volume (set exact level or adjust up/down)
- 🔇 Toggle mute status
- 📋 List all available audio devices
- ✅ Simple, scriptable CLI interface
- Go 1.24+
- PipeWire with
wpctl
andpw-cli
installed
git clone https://github.com/publi0/audioctl.git
cd audioctl
go build -o audioctl
sudo mv audioctl /usr/local/bin/
# Show interactive menu
audioctl
# List all devices with current status
audioctl --list
# Set output device (interactive selection)
audioctl --output
# Set specific output device by ID
audioctl --output 42
# Set volume to 75%
audioctl --volume 75
# Toggle mute
audioctl --mute
Usage:
audioctl [flags]
Flags:
-h, --help Show help
-l, --list List all audio devices
-m, --mute Toggle mute
-o, --output string Set output device (leave empty for interactive selection)
-i, --input string Set input device (leave empty for interactive selection)
-v, --volume int Set volume (0-150) or use -1 for interactive control
# See available devices
audioctl --list
# Set new output device
audioctl --output
# Set volume to 80%
audioctl --volume 80
# Quick mute toggle
audioctl --mute
When listing devices (--list
), the output shows:
- Current volume and mute status
- Output devices with default marked (●)
- Input devices with default marked (●)
Example:
Volume: 80% (MUTED)
Audio Outputs:
● 42 Built-in Audio Analog Stereo
56 HDMI Output
Audio Inputs:
● 23 Built-in Microphone
45 Webcam Microphone
Command not found:
Ensure /usr/local/bin
is in your PATH or use ./audioctl
from build directory
Missing wpctl/pw-cli:
Install WirePlumber (wireplumber
package) and PipeWire tools
No devices listed:
Check PipeWire is running with systemctl --user status pipewire