How to Control Audio in Linux with `pactl` (with Examples)
The pactl
command is an essential utility for users who want to control and manage a PulseAudio sound server on a Linux system. PulseAudio is a powerful sound server allowing advanced audio functionalities such as routing, volume control, and audio stream management, making it an integral part of many modern Linux distributions. With pactl
, users can interact with the sound server in a detailed and customized manner through command-line instructions.
Use Case 1: Display Sound Server Information
Code:
pactl info
Motivation:
When a user needs to gain a comprehensive overview of the current sound server configuration and status, pactl info
is the go-to command. It’s particularly helpful for troubleshooting audio issues or when configuring audio settings, as it presents information about the PulseAudio server version, default sink and source, server name, and more.
Explanation:
info
: This argument directspactl
to gather and display general information about the PulseAudio sound server. This includes server version, local hostname, default device names, and more. It’s essentially a snapshot of the audio server’s current status.
Example Output:
Server String: /run/user/1000/pulse/native
Library Protocol Version: 33
Server Protocol Version: 33
Is Local: yes
Client Index: 20
...
Use Case 2: List All Sinks
Code:
pactl list sinks short
Motivation:
Listing all sinks is crucial when you need to identify available audio output devices. A sink in PulseAudio terminology refers to an output destination for audio streams, such as speakers or headphones. This command delivers concise details about these sinks, enabling users to choose which sink to interact with or configure.
Explanation:
list
: This argument tellspactl
to display information about certain PulseAudio entities.sinks
: This specifies the type of entities to be listed. In this case, it requests output devices.short
: This modifier requests a condensed version of the information, focusing on only the most critical details such as sink indices and descriptions.
Example Output:
0 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz IDLE
1 alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 module-alsa-card.c s16le 2ch 44100Hz RUNNING
Use Case 3: Change Default Sink
Code:
pactl set-default-sink 1
Motivation:
Changing the default sink is essential when users wish to redirect audio output to a different device. Perhaps an application keeps defaulting to the incorrect device, or new hardware has been installed and needs to be prioritized. This command provides a simple solution to redefine the default audio output.
Explanation:
set-default-sink
: This command sets the default sink, which determines where audio output generally occurs unless specified otherwise by an application.1
: This indicates the index of the sink you want to set as the default. This index can be determined using thepactl list sinks short
command.
Example Output:
No direct output is shown for this command, but you can verify the change using pactl info
to see the new default sink has been set.
Use Case 4: Move a Sink-Input to a Different Sink
Code:
pactl move-sink-input 627 1
Motivation:
This command is invaluable when there is a need to reroute an active audio stream to a different output device. Users might want to transfer a playing video or music stream from speakers to headphones seamlessly, without restarting the application or pausing playback.
Explanation:
move-sink-input
: This instruction tellspactl
to move a specific sink-input, which is an individual audio stream managed by the server.627
: This is the index of the sink-input (audio stream) you wish to move. This index is obtained from examining active audio streams.1
: This is the index of the target sink you want to move the stream to.
Example Output:
No direct output is produced, but the move can be verified by using commands to list streams and observing their associated sinks.
Use Case 5: Set Sink Volume
Code:
pactl set-sink-volume 1 0.75
Motivation:
Setting the volume at a certain level for a particular output device is a fundamental task in managing audio settings. Users often change volume levels to suit different environments, reduce distractions, or increase the audibility of audio content. This command allows such adjustment without using a graphical interface.
Explanation:
set-sink-volume
: This requirespactl
to set the volume for a specified sink.1
: Index of the sink for which the volume is being set.0.75
: Denotes the volume level, where ‘1.0’ equates to 100% volume. Here, ‘0.75’ sets the volume to 75%.
Example Output:
There’s no direct output, but the result can typically be seen in the system sound settings or verified through listening.
Use Case 6: Toggle Mute on the Default Sink
Code:
pactl set-sink-mute @DEFAULT_SINK@ toggle
Motivation:
The ability to mute and unmute the default audio device quickly is a highly convenient feature for managing sound in dynamic environments. Whether pausing the sound during a phone call or quieting a noisy environment instantly, this command offers a swift mute toggle without navigating through graphical menus.
Explanation:
set-sink-mute
: Command for muting/unmuting a specific sink.@DEFAULT_SINK@
: A special parameter that dynamically refers to the current default sink, simplifying commands when the user doesn’t want to specify a numerical index.toggle
: This argument directs the command to switch the mute state of the targeted sink, alternating between muted and unmuted status.
Example Output:
There is no output generated directly by muting or unmuting. Verification comes through the audio output state or visible changes in the system audio interface.
Conclusion:
The pactl
command serves as a versatile and powerful tool for managing and controlling audio on systems running the PulseAudio sound server. From listing information about available audio devices, setting volumes, and changing default outputs, to managing individual audio streams, pactl
commands empower users with precise control over their audio environments, enhancing both customization and troubleshooting abilities.