Command-Line Alternatives to pavucontrol for Audio Routing
A practical guide to terminal tools for inspecting and changing PulseAudio and PipeWire routes when pavucontrol is unavailable, with commands and limitations.
What is the answer to my immediate question?
pavucontrol is a graphical mixer for PulseAudio and PipeWire's PulseAudio-compatible interface. Its terminal alternatives fall into two groups: inspection tools that list sources, sinks, streams and cards, and control tools that set default devices, move streams or adjust volumes. The common command-line utilities are pactl, pacmd, wpctl and pw-cli. Which one fits depends on whether the system runs PulseAudio or PipeWire and on whether you need interactive routing or scriptable changes.
pactl and pacmd for PulseAudio-style control
pactl provides a compact interface for querying and changing PulseAudio state. Run pactl info to confirm the server, pactl list short sinks to show output devices, pactl list short sources for input devices, and pactl list short sink-inputs or pactl list short source-outputs for active streams. The volume of a sink or stream can be changed with pactl set-sink-volume or pactl set-sink-input-volume using a numeric index from the listing. A stream can be routed with pactl move-sink-input, and the fallback device can be set with pactl set-default-sink or pactl set-default-source.
pacmd exposes the same server through an interactive shell and often gives more verbose device properties, such as ports and profiles. Commands include list-sinks, list-sources, set-default-sink, and move-sink-input. Because pacmd is intended as a debugging and administration shell, its output and command names are less stable for scripts than pactl.
wpctl and pw-cli on PipeWire systems
Many current distributions use PipeWire with a PulseAudio compatibility layer. In that setup, pactl and pacmd may still work for PulseAudio-facing objects, while PipeWire-native tools see the underlying graph more completely. wpctl status lists sinks, sources, streams and devices. wpctl set-default accepts a sink or source identifier, and wpctl set-volume changes volume for a device or node. These identifiers are numeric and are shown in wpctl status.
pw-cli is a lower-level PipeWire command tool. It can enumerate objects, inspect parameters and change properties, but its interface is more verbose and depends on PipeWire object internals. It is better suited to troubleshooting or advanced node configuration than to the everyday routing tasks pavucontrol handles.
Which alternative best meets my requirements?
For a typical desktop or server task such as discovering device names or setting a default sink, pactl is the most predictable starting point because its syntax is documented and stable, and it also works through PipeWire's PulseAudio compatibility layer in many distributions. For a one-time interactive inspection with detailed port and profile information, pacmd may be more convenient because it avoids repeated command invocations. On a PipeWire system where you need to control nodes that are not reliably exposed through the PulseAudio view, wpctl is the more direct tool.
The comparison has an important qualification: reported support and behavior depend on the distribution, PipeWire version and whether the PipeWire PulseAudio compatibility module is active. A command that succeeds on a PulseAudio-only system may return no results on a PipeWire system when the requested object is PipeWire-native, and the same command may work normally on another PipeWire system with an active compatibility layer. When selecting a tool, first confirm the running server with pactl info or wpctl status rather than assuming that all interfaces are available.
Command examples
# PulseAudio-style inspection and routing
pactl info
pactl list short sinks
pactl list short sink-inputs
pactl move-sink-input 4 alsa_output.pci-0000_00_1f.3.analog-stereo
pactl set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
# PipeWire-native inspection and routing
wpctl status
wpctl set-default 42
wpctl set-volume 42 0.75
Limitations to watch for
pactl and wpctl identify objects by numeric identifiers that can change between sessions or after a device is replugged. The stable-looking names printed by pactl, such as an ALSA device path, are safer targets for stored configuration than a stream index. The available commands also vary by version: older pactl releases may not include every routing option described here. When a command is present but the requested route is not visible, the gap is usually between the application, the compatibility layer and the audio server, rather than proof that the physical device is unsupported.
This guide covers behavior reported for common Linux audio stacks. Distributions may patch or rename tools, and PipeWire releases change node properties, so the exact output should be checked against the installed version.