All Articles

Set Default Sound Output Device With pactl and systemd

My laptop's audio output port is screwed up and only the left channel works. So I have my laptop connected by HDMI to a 22" monitor and a 3-feet aux cable hooked up to the audio output of the monitor. Linux Mint always toggles to the default sound output device so I use this systemd user service to toggle the HDMI output device.

Make sure you have pactl available on your system.

  • Run pactl list
  • Note the valid output: entries under the Profiles section and the Active Profile. At boot time, we need to set the active profile to one of the valid output:* options (output:hdmi-stereo in my case)
  • Create a systemd user service file at ~/.config/systemd/user/set-sound-profile.service with the following contents:
[Unit]
Description=Set default sound output device  
Requires=sound.target dbus.service  
After=sound.target dbus.service

[Service]
Type=simple  
ExecStart=/usr/bin/pactl set-card-profile 0 output:hdmi-stereo

[Install]
WantedBy=default.target  
  • Remember to change 0 (per your system sound cards) and output:hdmi-stereo (per valid profiles on your system) in the above file
  • Enable and start the systemd user service:
    • systemctl --user daemon-reload
    • systemctl --user enable set-sound-profile.service
    • systemctl --user start set-sound-profile.service