Tengo una configuración de pantalla dual en mi computadora portátil (usando 12.04 LTS) usando una pantalla conectada a HDMI. Todo funciona bien, pero cada vez que conecto / desconecto el cable tengo que ir a Preferencias de sonido y cambiar el dispositivo de salida de sonido manualmente.
¿Hay alguna forma de cambiar el dispositivo de salida de sonido en la conexión / desconexión del cable, de modo que cuando conecto mi pantalla la salida de sonido está configurada en HDMI y cuando la desconecto, el sonido vuelve a los altavoces de la computadora portátil?
Respuestas:
Para beneficio de las personas que se topan con esta pregunta: la solución de Salem casi funcionó para mí en 13.04, terminé recolectando partes de toda la web, creo que el factor decisivo para mí fue la falta de la variable de entorno PULSE_SERVER
Aquí está mi solución completa, que básicamente es repetir la solución de Salem con las pocas piezas que faltan. También lo rehice como un script de shell (a pesar de mi amor por Python) porque al principio tenía miedo de que mi script de Python se encuentre con problemas de ruta de importación:
(igual que la respuesta de Salem) Cree un archivo
/etc/udev/rules.d/hdmi_sound.rules
como raíz con el contenido:Cree un archivo
/usr/local/bin/hdmi_sound_toggle
como root con el contenido:Luego hazlo ejecutable con
chmod 0755 /usr/local/bin/hdmi_sound_toggle
Intenté hacer que este script sea lo más genérico posible, pero es posible que deba cambiar algunas líneas, como la ruta del archivo HDMI_STATUS o los perfiles utilizados. Puede ver una lista de perfiles ejecutando
pactl list cards
y buscando en Perfiles.Tenga en cuenta que el script falló cuando eliminé la palabra clave "exportar" cuando configuré PULSE_SERVER, creo que pactl está buscando la variable env
No olvides recargar tus reglas de udev:
sudo udevadm control --reload-rules
Actualizar este script se actualiza para 14.04. Antes de eso, usaría USER_NAME en lugar de USER_ID en todas partes
fuente
| uniq
al comando USER_NAME. También tenga en cuenta que la configuración de sonidos en Ubuntu puede ser engañosa. No estaba viendo los cambios en el panel de configuración de sonido, pero una vez que estaba reproduciendo algo, el audio cambiaba de un lado a otro sin problemas, también noté que después de algunas veces de enchufar y desconectar el HDMI, el script dejó de ejecutarse (tal vez algunos tipo de error en udev).| sort -u
al nombre de usuario porque estaba diciendo opción adicional Elemer Elemer --- Mi nombre de usuario. Igual que la solución de FuegoFro al final del día.| grep -v pts
hacerlo, porque en realidad también tenía un usuario "root", debido al hecho de que estaba editando el script a través de kate, que tenía un terminal raíz abierto.Finalmente logré hacer que esto funcione usando
udev
. Entonces, si alguien quiere el mismo comportamiento, estos son los pasos:Primero necesitamos crear un archivo
/etc/udev/rules.d/hdmi_sound.rules
con el siguiente contenido:esto hará que
udev
ejecute el scripthdmi_sound_toggle
cada vez que haya un cambio en la conexión HDMI. Ese script debe tener permiso de ejecución y el contenido es el siguiente:Probablemente esto se puede hacer fácilmente en bash, pero como mi idioma principal es python, lo usé. Todo funciona excepto la notificación: no aparece, realmente no sé por qué. Si alguien sabe cómo solucionarlo, por favor diga algo.
Nota: los nombres de la regla de script / udev se pueden cambiar, pero debe usar la ruta completa.
fuente
Sobre la base de Salem 's respuesta y Daniel respuesta' s
Tomé la respuesta de Salem y la respuesta de Daniel e hice algunos cambios necesarios, su solución no me funcionó de inmediato:
(similar a la respuesta de Salem).
Cree un archivo
/etc/udev/rules.d/hdmi_sound.rules
como root con el contenido:ACTION=="change",
¡Falta una nota !Cree un archivo
/usr/local/bin/hdmi_sound_toggle
como root con el contenido:Nota USER_NAME =
who | grep "(:0)" | cut -f 1 -d ' '| sort -u
he añadido| sort -u
porque de lo contrario se volvió conelemer elemer elemer
nombre de usuario --Mi 3 veces.Luego hazlo ejecutable con
chmod 0755 /usr/local/bin/hdmi_sound_toggle
No olvides recargar tus reglas de udev:
sudo udevadm control --reload-rules
Importante este script se actualiza para 14.04. Antes de eso, usaría USER_NAME en lugar de USER_ID en todas partes
Créditos: Salem y Daniel .
fuente
Ubuntu 16.04 - 17.04 Respuesta
Esto funciona para Ubuntu 16.04 - 17.04 que introdujo un error con Pulse Audio 8. Cree el archivo
hotplugtv
(ohotplug-hdmi
si lo prefiere) y copie en las siguientes líneas:IMPORTANTE: Cambie el nombre de usuario "rick" por su nombre de usuario.
Para llamar a este script desde
udev
eventos de conexión en caliente, cree el archivo que/etc/udev/rules.d/99-hotplugtv.rules
contiene:Cambie
/home/rick/bin/
a la ruta donde colocó elhotplugtv
script.fuente