1 votes

Passer automatiquement aux haut-parleurs lorsque les écouteurs sont débranchés

Actuellement, les haut-parleurs sont connectés à une carte son et les écouteurs sont connectés à un autre. Dans les paramètres audio du menu de sortie, je peux voir les deux et je peux choisir celui à partir duquel le son sort.

Y a-t-il un moyen pour que lorsque je débranche les écouteurs, le son se diffuse automatiquement à partir des haut-parleurs ? Et vice versa lorsque je reconnecte les écouteurs. Un peu comme le fait un ordinateur portable. Lorsque vous déconnectez les écouteurs, le son se diffuse automatiquement à partir des haut-parleurs.

Tout d'abord, comment puis-je vérifier si Ubuntu peut "voir" quand je débranche mes écouteurs ? (juste pour savoir si l'approche est possible)

0voto

$ ls -l ToggleAudioOutput
-rwxrwxr-x 1 willem willem 1845 mai  7 01:32 ToggleAudioOutput

$ cat ToggleAudioOutput 
#!/bin/bash 
###############################################################################
# -- ToggleAudioOutput -- Script to change audio output sink.
#
# Le script est basé sur la sortie de cette ligne de commande.
# Bien sûr, la sortie varie selon le système.
#
# $ pacmd list-sinks | grep -e 'index:' -e 'alsa.name' |\
#     awk 'NR%2{printf "%s",$0;next;}1'
#   index: 0        alsa.name = "HDMI 0"
# * index: 1        alsa.name = "USB Audio"
#   index: 2        alsa.name = "ALC662 rev3 Analog"
#
# La séquence de sortie peut différer sauf pour l'astérisque (périphérique actif)
# et après la (dé)connexion des périphériques audio usb.
###############################################################################

function GetSinks()
{
  Property="device.description"

  pacmd list-sinks                    | grep -e"index:" -e"${Property}" |\
    awk 'NR%2{printf "%s",$0;next;}1' | grep -v HDMI                    |\
    sed "s/^\ \ //"                   | sed "s/ index: //"              |\
    sed "s/[ \x9]*$Property = / /"    | tr -d '\"'
}

Sinks=$(GetSinks)
NrSinks=$(echo "$Sinks" | wc -l)
ActSink=$(echo "$Sinks" | grep '*' | cut -c2)

i=1
while read Line
do
  set -- $Line
  SinkNr[$i]=$1;shift
  SinkName[$i]="$@"
  ((SinkNr[$i]==ActSink)) && ((Index=i))
  ((i++))
done < <(echo "$Sinks" | tr -d '*')

((Index++))
if ((Index > NrSinks))
then
  Index=1
fi

###############################################################################
# Faites le travail...

pacmd set-default-sink ${SinkNr[$Index]}
notify-send "Appareil de sortie audio réglé sur:   >${SinkName[$Index]}<" -t 5000

# Des programmes diffusent-ils de l'audio? Forcez-les à utiliser le périphérique de sortie audio actuel.
for InputIndex in $(pacmd list-sink-inputs | grep 'index:' | awk '{print $2}')
do
   pacmd move-sink-input $InputIndex ${SinkNr[$Index]}
done
###############################################################################
#EOF

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X