hdmi_sound_toggle.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/bash
  2. ## Original base found at:
  3. ## https://wiki.archlinux.org/index.php/PulseAudio/Examples#Automatically_switch_audio_to_HDMI
  4. ## udev rule expects this in /usr/local/sbin
  5. export PATH=/usr/bin
  6. #USER_NAME=$(who | awk -v vt=tty$(fgconsole 2>/dev/null) '$0 ~ vt {print $1}')
  7. #USER_ID=$(id -u "${USER_NAME}")
  8. #USER_ID=$(id -u "${USER}")
  9. CARD_PATH="/sys/class/drm/card0/"
  10. AUDIO_OUTPUT="analog-stereo" ## Default if nothing in case is matched
  11. #PULSE_SERVER="unix:/run/user/"${USER_ID}"/pulse/native"
  12. PULSE_SERVER="unix:/run/user/"${UID}"/pulse/native"
  13. for OUTPUT in $(cd "${CARD_PATH}" && echo card*); do
  14. OUT_STATUS=$(<"${CARD_PATH}"/"${OUTPUT}"/status)
  15. if [[ ${OUT_STATUS} == connected ]]
  16. then
  17. echo ${OUTPUT} connected
  18. case "${OUTPUT}" in
  19. "card0-DP-3")
  20. AUDIO_OUTPUT="hdmi-stereo-extra1" ## thinkpad x270 dock to HDMI
  21. ;;
  22. "card0-DP-4")
  23. AUDIO_OUTPUT="hdmi-stereo-extra1" ## thinkpad x270 dock to HDMI, arch
  24. ;;
  25. "card0-HDMI-A-1")
  26. AUDIO_OUTPUT="hdmi-stereo" ## the 'normal' port?
  27. ;;
  28. "card0-HDMI-A-2")
  29. AUDIO_OUTPUT="hdmi-stereo-extra1" ## thinkpad x270 HDMI port
  30. ;;
  31. esac
  32. fi
  33. done
  34. echo selecting output ${AUDIO_OUTPUT}
  35. #sudo -u "${USER_NAME}" pactl --server "${PULSE_SERVER}" set-card-profile 0 output:${AUDIO_OUTPUT}+input:analog-stereo
  36. pactl --server "${PULSE_SERVER}" set-card-profile 0 output:${AUDIO_OUTPUT}+input:analog-stereo