HOWTO: Cambiar a HDMI de audio de forma automática en Linux

Lo primero es lo primero, esto no es un tutorial para obtener su audio de trabajo por encima de su HDMI si no lo está ya. Esto supone que usted ya tiene audio a través de HDMI de trabajo a través de PulseAudio, pero en la actualidad tiene que asignar manualmente la nueva salida después de conectar el cable HDMI.

TL / DR
Si está utilizando una distro basada en Debian y no se preocupan por los detalles de cómo funciona esto, a continuación, sólo tiene que instalar el . deb he preparado aquí. Después de que termina la instalación que debe ser bueno para ir -. Adjuntar el cable HDMI y el sistema debe cambiar automáticamente de jugar en los altavoces / auriculares para audio de tuberías sobre el HDMI
los detalles o cómo hacemos las cosas funcionen en Debian no

¿Cómo funciona esto se una combinación de PulseAudio, Bash, y un poco de udev. />
Lo primero es lo primero, necesitamos un script bash que con el interruptor entre las salidas de PulseAudio para nosotros. Guarde el siguiente fragmento de código a / usr / bin / hdmi_sound_toggle :

   
 
# / bin / bash
# Cambia entre las tarjetas de sonido cuando se ejecuta. Todas las corrientes se mueven a la nueva tarjeta de sonido por defecto

# $ totalsc:. Número de tarjetas de sonido disponibles
totalsc = style="color: ( "list-sumideros" | Tarjeta grep : | wc-l ) # total de tarjetas de sonido: $ totalsc
si [ $ totalsc -le 1 ] ; entonces # Comprobar si en realidad hay varias tarjetas disponibles
salida
fi
# $ scindex: El índice Pulseaudio de la tarjeta de sonido por defecto actual
scindex = style="color: $ ( pacmd list-fregaderos | awk '$ 1 == "*" && $ 2 == "índice:" {print $ 3}' )
# $ cartas: Una lista de las tarjetas de índices PulseAudio
Tarjetas = ( pacmd list-fregaderos style="color: | sed ' s | * | | ' | awk' $ 1 == " Índice: "{print $ 2} ' )
PICKNEXTCARD = 1 # ¿Es cierto cuando la tarjeta anterior es por defecto
cuenta = # conteo de número de iteraciones
de en $ tarjetas ; no
si [ $ PICKNEXTCARD == 1 ] ; entonces
# $ nextsc: El índice pulseaudio de la próxima tarjeta de sonido (que se cambió a)
nextsc = $ CARD
PICKNEXTCARD = 0
# $ nextind: El índice numérico (1 a totalsc) de la siguiente carta
nextind = $ count
fi
si [ $ CARD == $ scindex ] ; entonces # Elegir la siguiente carta como predeterminado
PICKNEXTCARD = 1
fi
cuenta = $ ( ( 1 ) )
hecho
" set-default-fregadero $ nextsc " # interruptor de la tarjeta de sonido por defecto al siguiente

# $ insumos: una lista de los que se está reproduciendo entradas
entradas = style="color: $ ( pacmd lista disipador-entradas | awk '$ 1 == "índice:" {print $ 2}' )
para en $ insumos ; hacer # Mover todas las entradas de corriente a la nueva tarjeta de sonido por defecto
pacmd movimiento fregadero-input $ ENTRADA $ nextsc
hecho
salida

Hacer de nuestro script ejecutable con el comando:
sudo chmod + x / usr / bin / hdmi_sound_toggle

Antes de continuar, confirme el guión funciona como está previsto. Mientras que su cable HDMI es de gestión activa el comando hdmi_sound_toggle y usted debería comenzar a oír el sonido de tubo de la salida HDMI />.

siguiente, porque PulseAudio es correr como un demonio a nivel de usuario, casi siempre, necesitamos algo que moverá sesiones pulso de todos los usuarios sobre a la nueva salida cuando se conecta el HDMI / extraíble. Para ello creamos el guión / usr / bin / hdmi_sound_toggle_all con el contenido:
   
 
# / bin / bash

para en / home / * /
hacer
dir = $ { dir% * / }
sudo-u $ { dir # # * /} / usr / bin / hdmi_sound_toggle
hecho

Establecer como script ejecutable así :

sudo chmod + x / usr / bin / hdmi_sound_toggle_all

Confirmar este script funciona así, tiene que ser ejecutado como root, así que ejecutar sudo hdmi_sound_toggle_all mientras el HDMI es adjunto – que debe cambiar su salida

. Por último, tenemos que crear una regla udev que activa nuestros scripts cuando el cable HDMI está conectado / extraíble. Para ello vamos a crear el archivo / lib / udev / rules.d / hdmi_sound.rules con el contenido:

/ div>