Files
scripts/hdmi-audio-selector.sh
2026-06-11 13:47:48 -04:00

41 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
CARD="alsa_card.pci-0000_04_00.1"
# Rofi menu with extra options + fixed bindings to avoid "failed to set binding"
CHOICE=$(echo -e "HDMI 0 (CRT)\nHDMI 5 (HDTV)" | \
rofi -dmenu \
-p "HDMI Audio Output" \
-mesg "Toggle between your two HDMI monitors" \
-i \
-no-custom \
-theme-str 'window {width: 420px;}' \
-theme-str 'listview {lines: 4;}' \
-kb-row-up "Up,Control+p" \
-kb-row-down "Down,Control+n" \
-kb-accept-entry "Return,KP_Enter" \
-kb-cancel "Escape,Control+g,Control+bracketleft" \
-kb-mode-next "" \ # disable problematic defaults
-kb-mode-previous "" )
case "$CHOICE" in
"HDMI 0 (CRT)")
pactl set-card-profile "$CARD" output:hdmi-stereo
notify-send "Audio Switch" "Switched to HDMI 0" -i audio-card
;;
"HDMI 5 (HDTV)")
pactl set-card-profile "$CARD" output:hdmi-stereo-extra4
notify-send "Audio Switch" "Switched to HDMI 5" -i audio-card
;;
*)
exit 0
;;
esac
# Small delay + move all running audio streams to the new sink
sleep 0.5
NEW_SINK=$(pactl list short sinks | grep -E 'hdmi-stereo' | awk '{print $2}' | head -1)
pactl set-default-sink $NEW_SINK
#pactl list short sink-inputs | awk '{print $1}' | xargs -r -I {} pactl move-sink-input {} "$NEW_SINK" 2>/dev/null