J'ai une configuration à double écran sur mon ordinateur portable (en utilisant 12.04 LTS) en utilisant un écran connecté HDMI. Tout fonctionne bien, mais chaque fois que je connecte / déconnecte le câble, je dois aller dans les préférences audio et changer manuellement le périphérique de sortie audio.
Existe-t-il un moyen de changer le périphérique de sortie audio lors de la connexion / déconnexion du câble, donc lorsque je connecte mon écran, la sortie audio est réglée sur HDMI et lorsque je le déconnecte, le son revient aux haut-parleurs d'un ordinateur portable?
Réponses:
Pour le bénéfice des personnes qui tombent sur cette question - la solution de Salem a presque fonctionné pour moi en 13.04, j'ai fini par rassembler des morceaux de partout sur le web, je pense que le facteur décisif pour moi était le manque de la variable d'environnement PULSE_SERVER
Voici ma solution complète, qui est essentiellement la répétition de la solution de Salem avec les quelques pièces manquantes. Je l'ai également refait en tant que script shell (malgré mon amour pour Python) car j'avais d'abord peur que mon script Python rencontre des problèmes de chemin d'importation:
(identique à la réponse de Salem) Créez un fichier en
/etc/udev/rules.d/hdmi_sound.rules
tant que root avec le contenu:Créez un fichier en
/usr/local/bin/hdmi_sound_toggle
tant que root avec le contenu:Rendez-le ensuite exécutable avec
chmod 0755 /usr/local/bin/hdmi_sound_toggle
J'ai essayé de rendre ce script aussi générique que possible, mais vous devrez peut-être encore modifier certaines lignes, telles que le chemin du fichier HDMI_STATUS ou les profils utilisés. Vous pouvez voir une liste de profils en exécutant
pactl list cards
et en regardant sous Profils.Notez que le script a échoué pour moi lorsque j'ai supprimé le mot clé "export" lors de la définition de PULSE_SERVER, je pense que pactl recherche la variable env
N'oubliez pas de recharger vos règles udev:
sudo udevadm control --reload-rules
Mettre à jour ce script est mis à jour pour 14.04. Avant cela, vous utiliseriez USER_NAME au lieu de USER_ID partout
la source
| uniq
à la commande USER_NAME. Notez également que les paramètres des sons dans Ubuntu peuvent être trompeurs. Je ne voyais pas les changements dans le panneau des paramètres sonores, mais une fois que je jouais quelque chose, le son allait et venait sans à-coup, j'ai également remarqué qu'après quelques fois de branchement et de débranchement du HDMI, le script a cessé de s'exécuter (peut-être certains sorte de bug dans udev).| sort -u
au nom d'utilisateur parce qu'il disait l'option supplémentaire elemer elemer --- Mon nom d'utilisateur. Identique à la solution de FuegoFro en fin de journée.| grep -v pts
, car en fait, j'ai également eu un utilisateur "root" - du fait que je modifiais le script via kate, qui avait un terminal root ouvert.J'ai finalement réussi à faire ce travail en utilisant
udev
. Donc, si quelqu'un veut le même comportement, voici les étapes:Nous devons d'abord créer un fichier
/etc/udev/rules.d/hdmi_sound.rules
avec le contenu suivant:cela fera
udev
exécuter le script àhdmi_sound_toggle
chaque changement de connexion HDMI. Ce script doit avoir l'autorisation d'exécution et le contenu est le suivant:Cela peut probablement être fait facilement en bash, mais comme mon langage principal est le python, je l'ai utilisé. Tout fonctionne sauf la notification: elle n'apparaît pas, je ne sais vraiment pas pourquoi. Si quelqu'un sait comment le réparer, dites quelque chose.
Remarque: les noms de script / règle udev peuvent être modifiés, mais vous devez utiliser le chemin complet.
la source
Sur la base de Salem « s réponse et daniel réponse de l »
J'ai pris la réponse de Salem et celle de Daniel et j'ai fait les changements nécessaires, leur solution n'a pas fonctionné pour moi hors de la boîte:
(similaire à la réponse de Salem).
Créez un fichier en
/etc/udev/rules.d/hdmi_sound.rules
tant que root avec le contenu:La note
ACTION=="change",
manque!Créez un fichier en
/usr/local/bin/hdmi_sound_toggle
tant que root avec le contenu:Remarque USER_NAME =
who | grep "(:0)" | cut -f 1 -d ' '| sort -u
J'ai ajouté,| sort -u
sinon il est revenu avec -elemer elemer elemer
mon nom d'utilisateur 3 fois.Rendez-le ensuite exécutable avec
chmod 0755 /usr/local/bin/hdmi_sound_toggle
N'oubliez pas de recharger vos règles udev:
sudo udevadm control --reload-rules
Important ce script est mis à jour pour 14.04. Avant cela, vous utiliseriez USER_NAME au lieu de USER_ID partout
Crédits: Salem et daniel .
la source
Ubuntu 16.04 - 17.04 Répondre
Cela fonctionne pour Ubuntu 16.04 - 17.04 qui a introduit un bug avec Pulse Audio 8. Créez le fichier
hotplugtv
(ouhotplug-hdmi
si vous préférez) et copiez dans les lignes suivantes:IMPORTANT: remplacez le nom d'utilisateur «rick» par votre nom d'utilisateur.
Afin d'appeler ce script à partir
udev
des événements hot-plug, créez le fichier/etc/udev/rules.d/99-hotplugtv.rules
contenant:Accédez
/home/rick/bin/
au chemin où vous avez placé lehotplugtv
script.la source