Eu descobri uma solução graças a discussão e paswitch . Em resumo, o acpid pode ser usado para ligar os eventos de ligar / desligar os auscultadores.
Eu criei os seguintes arquivos:
/ etc / acpi / events / headphone-jack:
event=jack/headphone
action=/etc/acpi/headphone-jack.sh %e
/etc/acpi/headphone-jack.sh (lembre-se de torná-lo executável):
#!/bin/bash
set -e -u
if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
case "$3" in
plug)
sink=alsa_output.pci-0000_00_1b.0.analog-stereo
;;
*)
sink=alsa_output.pci-0000_01_00.1.hdmi-stereo
;;
esac
for userdir in /run/user/*; do
uid="$(basename $userdir)"
user="$(id -un $uid)"
if [ -f "$userdir/pulse/pid" ]; then
PULSE_RUNTIME_PATH="$userdir/pulse" su "$user" -c "paswitch $sink"
fi
done
fi
Os dissipadores naturalmente precisam ser atualizados, dependendo do seu sistema.
Não tenho certeza de quão robusto o script é para um sistema multiusuário real, mas funciona para mim.